summaryrefslogtreecommitdiff
path: root/features
diff options
context:
space:
mode:
authorLuis Lavena <luislavena@gmail.com>2008-11-19 02:15:10 -0200
committerLuis Lavena <luislavena@gmail.com>2008-11-19 02:15:10 -0200
commit3223d338b233b40acb3d9bef8efbb613ec459441 (patch)
tree120abeb381230f7441b51e842424203159670095 /features
parent0d068b19ce7970808df834b13ccb40f6b912d317 (diff)
downloadrake-compiler-3223d338b233b40acb3d9bef8efbb613ec459441.tar.gz
Added package feature and scenarios.
This verifies the process of bundling extensions into gems.
Diffstat (limited to 'features')
-rw-r--r--features/package.feature28
-rw-r--r--features/step_definitions/gem.rb13
2 files changed, 41 insertions, 0 deletions
diff --git a/features/package.feature b/features/package.feature
new file mode 100644
index 0000000..2cc613d
--- /dev/null
+++ b/features/package.feature
@@ -0,0 +1,28 @@
+Feature: Distribute native extension with gems
+
+ In order to avoid compiler toolchain requirement during installation
+ As a Gem developer.
+ I want rake tasks generate platform specific gems for me
+
+ Scenario: generate pure ruby gem
+ Given a safe project directory
+ And a gem named 'my_project'
+ And a extension named 'extension_one'
+ And I've already successfully executed rake task 'compile'
+ And 'pkg' folder is deleted
+ When rake task 'gem' is invoked
+ Then rake task 'gem' succeeded
+ And 'pkg' folder is created
+ And ruby gem for 'my_project' version '0.1.0' do exist in 'pkg'
+
+ Scenario: generate native gem
+ Given a safe project directory
+ And a gem named 'my_project'
+ And a extension named 'extension_one'
+ And I've already successfully executed rake task 'compile'
+ And 'pkg' folder is deleted
+ When rake task 'native gem' is invoked
+ Then rake task 'native gem' succeeded
+ And 'pkg' folder is created
+ And ruby gem for 'my_project' version '0.1.0' do exist in 'pkg'
+ And binary gem for 'my_project' version '0.1.0' do exist in 'pkg'
diff --git a/features/step_definitions/gem.rb b/features/step_definitions/gem.rb
new file mode 100644
index 0000000..a8e2181
--- /dev/null
+++ b/features/step_definitions/gem.rb
@@ -0,0 +1,13 @@
+Given /^a gem named '(.*)'$/ do |gem_name|
+ generate_gem_task gem_name
+end
+
+Then /^(ruby|binary) gem for '(.*)' version '(.*)' do exist in '(.*)'$/ do |type, gem_name, version, folder|
+ if type == 'ruby' then
+ gem_file = "#{folder}/#{gem_name}-#{version}.gem"
+ else
+ platform = Gem::Platform.local.to_s
+ gem_file = "#{folder}/#{gem_name}-#{version}-#{platform}.gem"
+ end
+ File.exist?(gem_file).should be_true
+end