bumps 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +5 -0
- data/Manifest.txt +36 -0
- data/README.rdoc +59 -0
- data/Rakefile +29 -0
- data/TODO +20 -0
- data/examples/feature_server +61 -0
- data/features/pull_remote_features.feature +17 -0
- data/features/push_feature_results.feature +11 -0
- data/features/steps/command_output.rb +3 -0
- data/features/steps/cucumber_run.rb +3 -0
- data/features/steps/env.rb +88 -0
- data/features/steps/feature_report.rb +6 -0
- data/features/steps/feature_server.rb +14 -0
- data/features/steps/helpers/scenario_process.rb +67 -0
- data/lib/bumps.rb +25 -0
- data/lib/bumps/configuration.rb +48 -0
- data/lib/bumps/feature.rb +54 -0
- data/lib/bumps/hook_tasks.rb +25 -0
- data/lib/bumps/pre_feature_load_hook.rb +27 -0
- data/lib/bumps/remote_feature.rb +23 -0
- data/lib/bumps/results_push_formatter.rb +37 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/spec/bumps/configuration_spec.rb +78 -0
- data/spec/bumps/feature_spec.rb +119 -0
- data/spec/bumps/hook_tasks_spec.rb +98 -0
- data/spec/bumps/pre_feature_load_hook_spec.rb +44 -0
- data/spec/bumps/remote_feature_spec.rb +70 -0
- data/spec/bumps/results_push_formatter_spec.rb +126 -0
- data/spec/bumps_spec.rb +20 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -0
- data/tasks/rspec.rake +21 -0
- data/test_features/remote_content/destroy_dr_thaddeus_venture.feature +12 -0
- data/test_features/requires/env.rb +3 -0
- metadata +141 -0
@@ -0,0 +1,98 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
class Target
|
4
|
+
|
5
|
+
def out_stream= out
|
6
|
+
@out_stream = out
|
7
|
+
end
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Bumps::HookTasks::SetFeatureDirectoryTask do
|
12
|
+
|
13
|
+
before do
|
14
|
+
@target = Target.new
|
15
|
+
end
|
16
|
+
|
17
|
+
subject {Bumps::HookTasks::SetFeatureDirectoryTask}
|
18
|
+
|
19
|
+
it 'should set directory in the bumps configuration' do
|
20
|
+
cukes_config = mock 'cukes_config'
|
21
|
+
@target.stub!(:configuration).and_return cukes_config
|
22
|
+
cukes_config.stub!(:feature_dirs).and_return ['feature_directory']
|
23
|
+
|
24
|
+
Bumps::Configuration.should_receive(:feature_directory=).with 'feature_directory'
|
25
|
+
|
26
|
+
@target.instance_eval &subject
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should fail if there is more than one feature directory specified' do
|
30
|
+
cukes_config = mock 'cukes_config'
|
31
|
+
@target.stub!(:configuration).and_return cukes_config
|
32
|
+
cukes_config.stub!(:feature_dirs).and_return ['one', 'two']
|
33
|
+
|
34
|
+
lambda{ @target.instance_eval &subject }.should raise_error('More than one feature directory/file was specified. Please only specify a single feature directory when using bumps')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe Bumps::HookTasks::PullFeaturesTask do
|
39
|
+
|
40
|
+
before do
|
41
|
+
@target = Target.new
|
42
|
+
end
|
43
|
+
|
44
|
+
subject {Bumps::HookTasks::PullFeaturesTask}
|
45
|
+
|
46
|
+
it 'should pull features' do
|
47
|
+
Bumps::Feature.should_receive :pull
|
48
|
+
|
49
|
+
@target.instance_eval &subject
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe Bumps::HookTasks::RegisterPushFormatterTask do
|
54
|
+
|
55
|
+
before do
|
56
|
+
@output_stream = mock 'output stream'
|
57
|
+
@target = Target.new
|
58
|
+
|
59
|
+
# law of demeter seems like an even better idea after mocking a chain of three objects
|
60
|
+
@formats = mock 'formats'
|
61
|
+
options = mock 'options'
|
62
|
+
options.stub!(:[]).with(:formats).and_return @formats
|
63
|
+
@target.stub!(:configuration).and_return mock('cukes_config', :options => options)
|
64
|
+
end
|
65
|
+
|
66
|
+
subject {Bumps::HookTasks::RegisterPushFormatterTask}
|
67
|
+
|
68
|
+
it 'should add the class name of the push formatter to the cucumber configuration' do
|
69
|
+
@formats.should_receive(:[]=).with('Bumps::ResultsPushFormatter', anything)
|
70
|
+
|
71
|
+
@target.instance_eval &subject
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should use the configured output stream for output' do
|
75
|
+
Bumps::Configuration.stub!(:output_stream).and_return @output_stream
|
76
|
+
|
77
|
+
@formats.should_receive(:[]=).with(anything, @output_stream)
|
78
|
+
|
79
|
+
@target.instance_eval &subject
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe Bumps::HookTasks::SetOutputStreamTask do
|
84
|
+
|
85
|
+
before do
|
86
|
+
@out_stream = mock 'out stream'
|
87
|
+
@target = Target.new
|
88
|
+
@target.out_stream = @out_stream
|
89
|
+
end
|
90
|
+
|
91
|
+
subject {Bumps::HookTasks::SetOutputStreamTask}
|
92
|
+
|
93
|
+
it 'should use target class output stream' do
|
94
|
+
Bumps::Configuration.should_receive(:output_stream=).with @out_stream
|
95
|
+
|
96
|
+
@target.instance_eval &subject
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
describe Bumps::PreFeatureLoadHook, 'when registered on a class' do
|
4
|
+
|
5
|
+
before do
|
6
|
+
class Clazz
|
7
|
+
def load_plain_text_features;end
|
8
|
+
def configuration;end
|
9
|
+
end
|
10
|
+
|
11
|
+
Bumps::PreFeatureLoadHook.register_on Clazz
|
12
|
+
|
13
|
+
@instance = Clazz.new
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should run all tasks within the context of that class' do
|
17
|
+
FirstTask = lambda {first_method}
|
18
|
+
SecondTask = lambda {second_method}
|
19
|
+
Bumps::PreFeatureLoadHook.stub!(:tasks).and_return [FirstTask, SecondTask]
|
20
|
+
|
21
|
+
@instance.should_receive :first_method
|
22
|
+
@instance.should_receive :second_method
|
23
|
+
|
24
|
+
@instance.load_plain_text_features
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should call the original method after running tasks' do
|
28
|
+
Bumps::PreFeatureLoadHook.stub!(:tasks).and_return []
|
29
|
+
|
30
|
+
@instance.should_receive :original_load_plain_text_features
|
31
|
+
|
32
|
+
@instance.load_plain_text_features
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should complete tasks in correct order' do
|
36
|
+
# how can this be better expressed with an example?
|
37
|
+
Bumps::PreFeatureLoadHook.tasks.should == [
|
38
|
+
Bumps::HookTasks::SetFeatureDirectoryTask,
|
39
|
+
Bumps::HookTasks::SetOutputStreamTask,
|
40
|
+
Bumps::HookTasks::PullFeaturesTask,
|
41
|
+
Bumps::HookTasks::RegisterPushFormatterTask
|
42
|
+
]
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
describe Bumps::RemoteFeature do
|
4
|
+
|
5
|
+
subject {Bumps::RemoteFeature}
|
6
|
+
|
7
|
+
describe 'when fetching' do
|
8
|
+
it 'should retrieve features from the given location' do
|
9
|
+
subject.should_receive(:open).with('location')
|
10
|
+
subject.stub! :parse
|
11
|
+
|
12
|
+
subject.fetch 'location'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should parse the given document to obtain features' do
|
16
|
+
subject.stub!(:open).and_return 'document'
|
17
|
+
|
18
|
+
subject.should_receive(:parse).with 'document'
|
19
|
+
|
20
|
+
subject.fetch ''
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'when parsing' do
|
25
|
+
it 'should extract all features from XML' do
|
26
|
+
features = 2.times.collect do |index|
|
27
|
+
feature = Bumps::Feature.new
|
28
|
+
feature.name = "feature #{index}"
|
29
|
+
feature.content = "I am the content for feature #{index}"
|
30
|
+
feature
|
31
|
+
end
|
32
|
+
|
33
|
+
xml = <<-XML
|
34
|
+
<?xml version="1.0"?>
|
35
|
+
<features>
|
36
|
+
<feature name="feature 0">I am the content for feature 0</feature>
|
37
|
+
<feature name="feature 1">I am the content for feature 1</feature>
|
38
|
+
</features>
|
39
|
+
XML
|
40
|
+
|
41
|
+
subject.parse(xml).should eql(features)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should trim leading and trailing whitespace from content' do
|
45
|
+
xml = <<-XML
|
46
|
+
<?xml version="1.0"?>
|
47
|
+
<features>
|
48
|
+
<feature name="feature 0">
|
49
|
+
|
50
|
+
|
51
|
+
I am the content for feature 0
|
52
|
+
|
53
|
+
</feature>
|
54
|
+
</features>
|
55
|
+
XML
|
56
|
+
|
57
|
+
subject.parse(xml).first.content.should == 'I am the content for feature 0'
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should return an empty feature list when none were found' do
|
61
|
+
xml = <<-XML
|
62
|
+
<?xml version="1.0"?>
|
63
|
+
<features>
|
64
|
+
</features>
|
65
|
+
XML
|
66
|
+
subject.parse(xml).should eql([])
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
describe Bumps::ResultsPushFormatter do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@step_mother = mock 'step_mother'
|
7
|
+
@io = mock('io').as_null_object
|
8
|
+
@options = mock 'options'
|
9
|
+
|
10
|
+
@features = mock('features').as_null_object
|
11
|
+
end
|
12
|
+
|
13
|
+
subject do
|
14
|
+
Bumps::ResultsPushFormatter.new(
|
15
|
+
@step_mother,
|
16
|
+
@io,
|
17
|
+
@options
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should capture results before pushing them' do
|
22
|
+
results = mock 'results'
|
23
|
+
|
24
|
+
subject.should_receive(:results_of_running).with(@features).and_return results
|
25
|
+
subject.should_receive(:push).with results
|
26
|
+
|
27
|
+
subject.visit_features @features
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'when capturing results' do
|
31
|
+
|
32
|
+
before do
|
33
|
+
@formatter_class = mock 'formatter class'
|
34
|
+
Bumps::Configuration.stub!(:results_formatter).and_return @formatter_class
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should obtain the results formatter from the configuration' do
|
38
|
+
@formatter_class.stub!(:new).and_return mock('formatter').as_null_object
|
39
|
+
|
40
|
+
Bumps::Configuration.should_receive(:results_formatter).and_return @formatter_class
|
41
|
+
|
42
|
+
subject.results_of_running @features
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should construct the wrapped formatter using the step mother' do
|
46
|
+
@formatter_class.should_receive(:new).with(
|
47
|
+
@step_mother, anything, anything
|
48
|
+
).and_return mock('formatter').as_null_object
|
49
|
+
|
50
|
+
subject.results_of_running @features
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should construct the wrapped formatter using the options' do
|
54
|
+
@formatter_class.should_receive(:new).with(
|
55
|
+
anything, anything, @options
|
56
|
+
).and_return mock('formatter').as_null_object
|
57
|
+
|
58
|
+
subject.results_of_running @features
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should return results of visiting features with wrapped formatter' do
|
62
|
+
|
63
|
+
class FormatterTestDouble
|
64
|
+
def initialize io
|
65
|
+
@io = io
|
66
|
+
end
|
67
|
+
|
68
|
+
def visit_features features
|
69
|
+
@io << 'results'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
@formatter_class.stub!(:new) do |step_mother, io, options|
|
74
|
+
FormatterTestDouble.new(io)
|
75
|
+
end
|
76
|
+
|
77
|
+
subject.results_of_running(@features).should =='results'
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'when pushing results' do
|
83
|
+
|
84
|
+
before do
|
85
|
+
@response = mock 'response'
|
86
|
+
@response.stub!(:code_type).and_return Net::HTTPOK
|
87
|
+
@push_url = 'http://push.com'
|
88
|
+
Bumps::Configuration.stub!(:push_url).and_return @push_url
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'should post results to configured push URL' do
|
92
|
+
parsed_uri = mock 'parsed uri'
|
93
|
+
URI.stub!(:parse).with(@push_url).and_return parsed_uri
|
94
|
+
|
95
|
+
Net::HTTP.should_receive(:post_form).with(parsed_uri, anything).and_return([@response, ''])
|
96
|
+
|
97
|
+
subject.push 'results'
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should send captured results in request' do
|
101
|
+
Net::HTTP.should_receive(:post_form).with(anything, {:results => 'results'}).and_return([@response, ''])
|
102
|
+
|
103
|
+
subject.push 'results'
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'should output a success message if results were pushed successfully' do
|
107
|
+
Net::HTTP.stub!(:post_form).and_return @response, ''
|
108
|
+
|
109
|
+
@io.should_receive(:<<).with "Successfully pushed results to #{@push_url}\n\n"
|
110
|
+
|
111
|
+
subject.push 'results'
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'should output a failure message if results could not be pushed' do
|
115
|
+
@response.stub!(:code_type).and_return Net::HTTPInternalServerError
|
116
|
+
@response.stub!(:code).and_return 500
|
117
|
+
@response.stub!(:body).and_return 'response body'
|
118
|
+
|
119
|
+
Net::HTTP.stub!(:post_form).and_return @response, ''
|
120
|
+
|
121
|
+
@io.should_receive(:<<).with "Failed to push results to #{@push_url} - HTTP 500: \nresponse body\n\n"
|
122
|
+
|
123
|
+
subject.push 'results'
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
data/spec/bumps_spec.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe Bumps, 'configuration' do
|
4
|
+
|
5
|
+
it 'should configure the new configuration using the given directives' do
|
6
|
+
Bumps::PreFeatureLoadHook.stub! :register_on
|
7
|
+
|
8
|
+
# how can we specify that it should be passed a reference to a block?
|
9
|
+
Bumps::Configuration.should_receive(:configure)
|
10
|
+
|
11
|
+
Bumps.configure {}
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should register a pre feature load hook on the main Cucumber class' do
|
15
|
+
Bumps::PreFeatureLoadHook.should_receive(:register_on).with Cucumber::Cli::Main
|
16
|
+
|
17
|
+
Bumps.configure {}
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/spec/spec_helper.rb
ADDED
data/tasks/rspec.rake
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
begin
|
2
|
+
require 'spec'
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems'
|
5
|
+
require 'spec'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'spec/rake/spectask'
|
9
|
+
rescue LoadError
|
10
|
+
puts <<-EOS
|
11
|
+
To use rspec for testing you must install rspec gem:
|
12
|
+
gem install rspec
|
13
|
+
EOS
|
14
|
+
exit(0)
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Run the specs under spec/models"
|
18
|
+
Spec::Rake::SpecTask.new do |t|
|
19
|
+
t.spec_opts = ['--options', "spec/spec.opts"]
|
20
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Feature: Destroy Dr Thaddeus Venture
|
2
|
+
|
3
|
+
As The Monarch
|
4
|
+
I want to destroy Dr Thaddeus Venture
|
5
|
+
Just because
|
6
|
+
|
7
|
+
Scenario: Brock Samson shows up
|
8
|
+
|
9
|
+
Given an evil plan is in effect
|
10
|
+
When Brock Samson shows up
|
11
|
+
Then all henchmen will be killed
|
12
|
+
And the plan will fail
|
metadata
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bumps
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brent Snook
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-07-09 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: cucumber
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.3.11
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: nokogiri
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.1
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: newgem
|
37
|
+
type: :development
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.2.3
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: rspec
|
47
|
+
type: :development
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.2.7
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: hoe
|
57
|
+
type: :development
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 1.8.0
|
64
|
+
version:
|
65
|
+
description: ""
|
66
|
+
email:
|
67
|
+
- brent@fuglylogic.com
|
68
|
+
executables: []
|
69
|
+
|
70
|
+
extensions: []
|
71
|
+
|
72
|
+
extra_rdoc_files:
|
73
|
+
- History.txt
|
74
|
+
- Manifest.txt
|
75
|
+
- README.rdoc
|
76
|
+
files:
|
77
|
+
- History.txt
|
78
|
+
- Manifest.txt
|
79
|
+
- README.rdoc
|
80
|
+
- Rakefile
|
81
|
+
- TODO
|
82
|
+
- examples/feature_server
|
83
|
+
- features/pull_remote_features.feature
|
84
|
+
- features/push_feature_results.feature
|
85
|
+
- features/steps/command_output.rb
|
86
|
+
- features/steps/cucumber_run.rb
|
87
|
+
- features/steps/env.rb
|
88
|
+
- features/steps/feature_report.rb
|
89
|
+
- features/steps/feature_server.rb
|
90
|
+
- features/steps/helpers/scenario_process.rb
|
91
|
+
- lib/bumps.rb
|
92
|
+
- lib/bumps/configuration.rb
|
93
|
+
- lib/bumps/feature.rb
|
94
|
+
- lib/bumps/hook_tasks.rb
|
95
|
+
- lib/bumps/pre_feature_load_hook.rb
|
96
|
+
- lib/bumps/remote_feature.rb
|
97
|
+
- lib/bumps/results_push_formatter.rb
|
98
|
+
- script/console
|
99
|
+
- script/destroy
|
100
|
+
- script/generate
|
101
|
+
- spec/bumps/configuration_spec.rb
|
102
|
+
- spec/bumps/feature_spec.rb
|
103
|
+
- spec/bumps/hook_tasks_spec.rb
|
104
|
+
- spec/bumps/pre_feature_load_hook_spec.rb
|
105
|
+
- spec/bumps/remote_feature_spec.rb
|
106
|
+
- spec/bumps/results_push_formatter_spec.rb
|
107
|
+
- spec/bumps_spec.rb
|
108
|
+
- spec/spec.opts
|
109
|
+
- spec/spec_helper.rb
|
110
|
+
- tasks/rspec.rake
|
111
|
+
- test_features/remote_content/destroy_dr_thaddeus_venture.feature
|
112
|
+
- test_features/requires/env.rb
|
113
|
+
has_rdoc: true
|
114
|
+
homepage: http://github.com/brentsnook/bumps
|
115
|
+
post_install_message:
|
116
|
+
rdoc_options:
|
117
|
+
- --main
|
118
|
+
- README.rdoc
|
119
|
+
require_paths:
|
120
|
+
- lib
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: "0"
|
126
|
+
version:
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: "0"
|
132
|
+
version:
|
133
|
+
requirements: []
|
134
|
+
|
135
|
+
rubyforge_project: bumps
|
136
|
+
rubygems_version: 1.3.1
|
137
|
+
signing_key:
|
138
|
+
specification_version: 2
|
139
|
+
summary: Remote feature management for Cucumber.
|
140
|
+
test_files: []
|
141
|
+
|