bumps 0.0.2 → 0.0.3
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 +2 -0
- data/README.rdoc +7 -5
- data/Rakefile +23 -18
- data/TODO +4 -12
- data/environment.rb +1 -0
- data/examples/feature_server +25 -47
- data/features/steps/helpers/scenario_process.rb +1 -1
- data/features/support/env.rb +6 -4
- data/lib/bumps/remote_feature.rb +0 -1
- data/lib/bumps/results_push_formatter.rb +21 -12
- data/lib/bumps_core.rb +1 -1
- data/spec/bumps/results_push_formatter_spec.rb +114 -40
- data/tasks/setup.rake +4 -0
- metadata +27 -11
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
|
@@ -3,6 +3,7 @@ Manifest.txt
|
|
|
3
3
|
README.rdoc
|
|
4
4
|
Rakefile
|
|
5
5
|
TODO
|
|
6
|
+
environment.rb
|
|
6
7
|
examples/feature_server
|
|
7
8
|
features/pull_remote_features.feature
|
|
8
9
|
features/push_feature_results.feature
|
|
@@ -31,5 +32,6 @@ spec/bumps_spec.rb
|
|
|
31
32
|
spec/spec.opts
|
|
32
33
|
spec/spec_helper.rb
|
|
33
34
|
tasks/rspec.rake
|
|
35
|
+
tasks/setup.rake
|
|
34
36
|
test_features/remote_content/destroy_dr_thaddeus_venture.feature
|
|
35
37
|
test_features/requires/support/env.rb
|
data/README.rdoc
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* http://groups.google.com/group/bumps-for-cucumber
|
|
5
5
|
* http://fuglylogic.com/2009/07/20/bumps-remote-features-for-cucumber/
|
|
6
6
|
|
|
7
|
+
== Description
|
|
8
|
+
|
|
9
|
+
Remote feature management for Cucumber.
|
|
10
|
+
|
|
7
11
|
Bumps extends {Cucumber}[http://cukes.info] by allowing you to pull feature content and push run results to and from a remote server. This means that your feature files no longer need to live with your steps and other code. This also means that you can publish the results of a Cucumber run to another system.
|
|
8
12
|
|
|
9
13
|
See the {wiki}[http://wiki.github.com/brentsnook/bumps] for more details.
|
|
@@ -12,15 +16,13 @@ See the {wiki}[http://wiki.github.com/brentsnook/bumps] for more details.
|
|
|
12
16
|
|
|
13
17
|
sudo gem install bumps
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Grab the code from github:
|
|
19
|
+
Or grab the code from Github and build yourself:
|
|
18
20
|
|
|
19
21
|
git clone git://github.com/brentsnook/bumps.git
|
|
20
22
|
cd bumps
|
|
21
23
|
rake install_gem
|
|
22
24
|
|
|
23
|
-
==
|
|
25
|
+
== Synopsis
|
|
24
26
|
|
|
25
27
|
First, start up a server that meets the {push/pull contract}[http://wiki.github.com/brentsnook/bumps/push-pull-contract].
|
|
26
28
|
|
|
@@ -33,7 +35,7 @@ Lastly, just run Cukes as normal.
|
|
|
33
35
|
|
|
34
36
|
cucumber my_feature_directory
|
|
35
37
|
|
|
36
|
-
Bumps will pull feature files into the specified feature directory, run
|
|
38
|
+
Bumps will pull feature files into the specified feature directory, run Cukes and then push the results back to the server.
|
|
37
39
|
|
|
38
40
|
== License
|
|
39
41
|
|
data/Rakefile
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
|
-
%w[rubygems rake rake/clean fileutils newgem rubigen].each { |f| require f }
|
|
2
|
-
|
|
1
|
+
%w[rubygems rake rake/clean hoe fileutils newgem rubigen].each { |f| require f }
|
|
2
|
+
['/lib/bumps_core', 'environment'].each do |f|
|
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__) , f))
|
|
4
|
+
end
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
['cucumber', ">= 0.3.
|
|
13
|
-
['nokogiri','>= 1.
|
|
6
|
+
Hoe.spec 'bumps' do
|
|
7
|
+
self.version = Bumps::VERSION
|
|
8
|
+
developer 'Brent Snook', 'brent@fuglylogic.com'
|
|
9
|
+
self.readme_file = 'README.rdoc'
|
|
10
|
+
self.clean_globs |= %w[**/.DS_Store tmp *.log]
|
|
11
|
+
self.rsync_args = '-av --delete --ignore-errors' # is this needed?
|
|
12
|
+
|
|
13
|
+
self.extra_deps = [
|
|
14
|
+
['cucumber', ">= 0.3.104"],
|
|
15
|
+
['nokogiri','>= 1.3.3'],
|
|
14
16
|
]
|
|
15
|
-
|
|
17
|
+
|
|
18
|
+
self.extra_dev_deps = [
|
|
19
|
+
['rspec', '>= 1.2.8'],
|
|
16
20
|
['newgem', ">= #{::Newgem::VERSION}"],
|
|
17
|
-
['
|
|
21
|
+
['sinatra', '>=0.9.4'],
|
|
18
22
|
]
|
|
23
|
+
end
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
p.rsync_args = '-av --delete --ignore-errors'
|
|
25
|
+
require 'cucumber/rake/task'
|
|
26
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
|
27
|
+
t.cucumber_opts = "features --format pretty"
|
|
24
28
|
end
|
|
29
|
+
task :features => :create_tmp
|
|
25
30
|
|
|
26
31
|
require 'newgem/tasks' # load /tasks/*.rake
|
|
27
32
|
Dir['tasks/**/*.rake'].each { |t| load t }
|
data/TODO
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
-
|
|
5
|
-
|
|
6
|
-
- publish gem
|
|
7
|
-
- add to tools page on Cukes wiki
|
|
8
|
-
- announce on twitter, Bumps mailing list, Cukes mailing list, Wave list
|
|
9
|
-
|
|
10
|
-
- delete fork
|
|
11
|
-
|
|
1
|
+
- release
|
|
2
|
+
- tag
|
|
3
|
+
- release to rubyforge
|
|
4
|
+
- announce on bumps group + twitter
|
|
12
5
|
|
|
13
6
|
--- LATER ---
|
|
14
7
|
|
|
15
8
|
- add validation for config and some nicer messages?
|
|
16
|
-
- get rid of treetop gibberish
|
|
17
9
|
- can it be more of a synch than a straight clobber??? for speed mainly
|
|
18
10
|
- extract process control logic out into a new gem
|
|
19
11
|
- support obtaining details for a single feature ???
|
data/environment.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ENV['BUMPS_TEMP'] = File.expand_path(File.join(File.dirname(__FILE__), 'tmp'))
|
data/examples/feature_server
CHANGED
|
@@ -1,61 +1,39 @@
|
|
|
1
|
-
require '
|
|
2
|
-
require '
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'sinatra'
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
FEATURE_DIR, RESULTS_FILE = ARGV[0..1]
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
set :port, 1981
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
private
|
|
14
|
-
|
|
15
|
-
def feature_content
|
|
16
|
-
content = StringIO.new
|
|
17
|
-
content.puts '<?xml version="1.0"?>'
|
|
18
|
-
content.puts '<features>'
|
|
19
|
-
|
|
20
|
-
Dir.glob(features_pattern).each do |file|
|
|
21
|
-
content << feature_within(file) if File.file?(file)
|
|
22
|
-
end
|
|
8
|
+
def feature_content
|
|
9
|
+
content = StringIO.new
|
|
10
|
+
content.puts '<?xml version="1.0"?>'
|
|
11
|
+
content.puts '<features>'
|
|
23
12
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
content.string
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def feature_within file
|
|
30
|
-
relative_path = file[(@options[0].length)..-1]
|
|
31
|
-
"<feature name=\"#{relative_path}\"><![CDATA[#{IO.read(file)}\n]]></feature>"
|
|
13
|
+
Dir.glob(features_pattern).each do |file|
|
|
14
|
+
content << feature_within(file) if File.file?(file)
|
|
32
15
|
end
|
|
33
16
|
|
|
34
|
-
|
|
35
|
-
File.join @options[0], '**', '*'
|
|
36
|
-
end
|
|
17
|
+
content.puts '</features>'
|
|
37
18
|
|
|
19
|
+
content.string
|
|
38
20
|
end
|
|
39
21
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
File.open(@options[0], 'w'){ |f| f.write(request.query['results']) }
|
|
44
|
-
response['Content-Type'] = 'text/html'
|
|
45
|
-
end
|
|
46
|
-
|
|
22
|
+
def feature_within file
|
|
23
|
+
relative_path = file[(FEATURE_DIR.length)..-1]
|
|
24
|
+
"<feature name=\"#{relative_path}\"><![CDATA[#{IO.read(file)}\n]]></feature>"
|
|
47
25
|
end
|
|
48
26
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
server.mount "/features/results", PushServlet, ARGV[1]
|
|
27
|
+
def features_pattern
|
|
28
|
+
File.join FEATURE_DIR, '**', '*'
|
|
29
|
+
end
|
|
53
30
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
exit!
|
|
58
|
-
end
|
|
31
|
+
get '/features/content' do
|
|
32
|
+
content_type 'text/xml'
|
|
33
|
+
feature_content
|
|
59
34
|
end
|
|
60
35
|
|
|
61
|
-
|
|
36
|
+
post '/features/results' do
|
|
37
|
+
content_type 'text/html'
|
|
38
|
+
File.open(RESULTS_FILE, 'w'){ |f| f.write(params[:results]) }
|
|
39
|
+
end
|
data/features/support/env.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '../../../environment.rb')
|
|
2
|
+
|
|
1
3
|
module CucumberWorld
|
|
2
4
|
|
|
3
5
|
def feature_report_file
|
|
4
|
-
File.expand_path File.join(
|
|
6
|
+
File.expand_path File.join(ENV['BUMPS_TEMP'], 'cucumber.out')
|
|
5
7
|
end
|
|
6
8
|
|
|
7
9
|
def feature_report
|
|
@@ -17,7 +19,7 @@ module CucumberWorld
|
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def push_request_file
|
|
20
|
-
File.expand_path File.join(
|
|
22
|
+
File.expand_path File.join(ENV['BUMPS_TEMP'], 'results.xml')
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
def push_request
|
|
@@ -29,7 +31,7 @@ module CucumberWorld
|
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
def test_features_directory
|
|
32
|
-
|
|
34
|
+
ENV['BUMPS_TEMP']
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
def feature_server_command
|
|
@@ -61,7 +63,7 @@ module CucumberWorld
|
|
|
61
63
|
end
|
|
62
64
|
|
|
63
65
|
def command_output_file
|
|
64
|
-
File.expand_path File.join(
|
|
66
|
+
File.expand_path File.join(ENV['BUMPS_TEMP'], 'cucumber.log')
|
|
65
67
|
end
|
|
66
68
|
|
|
67
69
|
def remote_features_directory
|
data/lib/bumps/remote_feature.rb
CHANGED
|
@@ -2,17 +2,26 @@ require 'cucumber/formatter/html'
|
|
|
2
2
|
require 'net/http'
|
|
3
3
|
|
|
4
4
|
module Bumps
|
|
5
|
-
class ResultsPushFormatter
|
|
5
|
+
class ResultsPushFormatter
|
|
6
|
+
|
|
7
|
+
attr_reader :formatter, :results
|
|
6
8
|
|
|
7
9
|
def initialize(step_mother, io, options)
|
|
8
|
-
super step_mother
|
|
9
10
|
@step_mother = step_mother
|
|
10
11
|
@io = io
|
|
11
12
|
@options = options
|
|
12
13
|
end
|
|
13
|
-
|
|
14
|
-
def
|
|
15
|
-
|
|
14
|
+
|
|
15
|
+
def before_features features
|
|
16
|
+
@results = StringIO.open
|
|
17
|
+
@formatter = Bumps::Configuration.results_formatter.new @step_mother, results, @options
|
|
18
|
+
formatter.before_features features
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def after_features features
|
|
22
|
+
formatter.after_features features
|
|
23
|
+
results.close
|
|
24
|
+
push results.string
|
|
16
25
|
end
|
|
17
26
|
|
|
18
27
|
def push results
|
|
@@ -25,13 +34,13 @@ module Bumps
|
|
|
25
34
|
end
|
|
26
35
|
end
|
|
27
36
|
|
|
28
|
-
def
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
end
|
|
37
|
+
def method_missing(method, *args, &block)
|
|
38
|
+
formatter.send(method, *args, &block)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def respond_to?(message, include_private = false)
|
|
42
|
+
super(message, include_private) || formatter.respond_to?(message, include_private)
|
|
35
43
|
end
|
|
44
|
+
|
|
36
45
|
end
|
|
37
46
|
end
|
data/lib/bumps_core.rb
CHANGED
|
@@ -18,65 +18,139 @@ describe Bumps::ResultsPushFormatter do
|
|
|
18
18
|
)
|
|
19
19
|
end
|
|
20
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
21
|
describe 'when capturing results' do
|
|
31
|
-
|
|
22
|
+
|
|
32
23
|
before do
|
|
33
24
|
@formatter_class = mock 'formatter class'
|
|
25
|
+
@formatter = mock('formatter').as_null_object
|
|
34
26
|
Bumps::Configuration.stub!(:results_formatter).and_return @formatter_class
|
|
35
27
|
end
|
|
36
28
|
|
|
37
|
-
|
|
38
|
-
@formatter_class.stub!(:new).and_return mock('formatter').as_null_object
|
|
29
|
+
describe 'responding to events' do
|
|
39
30
|
|
|
40
|
-
|
|
31
|
+
before do
|
|
32
|
+
@formatter_class.stub!(:new).and_return @formatter
|
|
33
|
+
Bumps::Configuration.stub!(:results_formatter).and_return @formatter_class
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'should recognise events that the wrapped formatter handles' do
|
|
37
|
+
@formatter.stub!(:respond_to?).with('event', anything).and_return true
|
|
38
|
+
|
|
39
|
+
subject.before_features @features
|
|
40
|
+
subject.respond_to?('event').should == true
|
|
41
|
+
end
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
it 'should recognise events that it handles on its own' do
|
|
44
|
+
@formatter.stub!(:respond_to?).with('after_features', anything).and_return false
|
|
45
|
+
|
|
46
|
+
subject.before_features @features
|
|
47
|
+
subject.respond_to?('after_features').should == true
|
|
48
|
+
end
|
|
43
49
|
end
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
|
|
51
|
+
describe 'before the running of features' do
|
|
52
|
+
|
|
53
|
+
it 'should construct the wrapped formatter using the step mother' do
|
|
54
|
+
@formatter_class.should_receive(:new).with(
|
|
55
|
+
@step_mother, anything, anything
|
|
56
|
+
).and_return @formatter
|
|
57
|
+
|
|
58
|
+
subject.before_features @features
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'should construct the wrapped formatter using the options' do
|
|
62
|
+
@formatter_class.should_receive(:new).with(
|
|
63
|
+
anything, anything, @options
|
|
64
|
+
).and_return @formatter
|
|
65
|
+
|
|
66
|
+
subject.before_features @features
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it 'should obtain the results formatter from the configuration' do
|
|
70
|
+
@formatter_class.stub!(:new).and_return @formatter
|
|
71
|
+
|
|
72
|
+
Bumps::Configuration.should_receive(:results_formatter).and_return @formatter_class
|
|
73
|
+
|
|
74
|
+
subject.before_features @features
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it 'should notify the wrapped formatter of the before_features event' do
|
|
78
|
+
Bumps::Configuration.stub!(:results_formatter).and_return @formatter_class
|
|
79
|
+
@formatter_class.stub!(:new).and_return @formatter
|
|
80
|
+
|
|
81
|
+
@formatter.should_receive(:before_features).with @features
|
|
82
|
+
|
|
83
|
+
subject.before_features @features
|
|
84
|
+
end
|
|
85
|
+
|
|
51
86
|
end
|
|
52
87
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
88
|
+
describe 'during the running of features' do
|
|
89
|
+
|
|
90
|
+
it 'should notify the wrapped formatter of all events' do
|
|
91
|
+
@formatter_class.stub!(:new).and_return @formatter
|
|
92
|
+
Bumps::Configuration.stub!(:results_formatter).and_return @formatter_class
|
|
93
|
+
events = [
|
|
94
|
+
:before_feature, :after_feature, :before_comment, :after_comment,
|
|
95
|
+
:comment_line, :after_tags, :before_background, :after_background,
|
|
96
|
+
# there are more, add as needed
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
events.each { |event| @formatter.should_receive(event).with('arguments')}
|
|
100
|
+
|
|
101
|
+
subject.before_features @features
|
|
102
|
+
events.each { |event| subject.send(event, 'arguments')}
|
|
103
|
+
end
|
|
104
|
+
|
|
59
105
|
end
|
|
60
106
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def visit_features features
|
|
69
|
-
@io << 'results'
|
|
70
|
-
end
|
|
107
|
+
describe 'after the running of features' do
|
|
108
|
+
before do
|
|
109
|
+
@results = mock('results').as_null_object
|
|
110
|
+
subject.stub!(:results).and_return @results
|
|
111
|
+
subject.stub!(:formatter).and_return @formatter
|
|
112
|
+
subject.stub!(:push)
|
|
71
113
|
end
|
|
114
|
+
|
|
115
|
+
it 'should notify the wrapped formatter after all features have been run' do
|
|
116
|
+
@formatter.should_receive(:after_features).with @features
|
|
72
117
|
|
|
73
|
-
|
|
74
|
-
FormatterTestDouble.new(io)
|
|
118
|
+
subject.after_features @features
|
|
75
119
|
end
|
|
120
|
+
|
|
121
|
+
it 'should ready the captured results for pushing' do
|
|
122
|
+
@results.should_receive :close
|
|
76
123
|
|
|
77
|
-
|
|
124
|
+
subject.after_features @features
|
|
125
|
+
end
|
|
78
126
|
end
|
|
127
|
+
|
|
128
|
+
describe 'over the entire run' do
|
|
129
|
+
it 'should capture then push results' do
|
|
130
|
+
class FormatterTestDouble
|
|
131
|
+
def initialize(step_mother, io, options)
|
|
132
|
+
@io = io
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def before_features features
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def after_features features
|
|
139
|
+
end
|
|
79
140
|
|
|
141
|
+
def after_feature feature
|
|
142
|
+
@io << "After feature: #{feature}"
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
Bumps::Configuration.stub(:results_formatter).and_return FormatterTestDouble
|
|
146
|
+
|
|
147
|
+
subject.should_receive(:push).with 'After feature: walk the dog'
|
|
148
|
+
|
|
149
|
+
subject.before_features @features
|
|
150
|
+
subject.after_feature 'walk the dog'
|
|
151
|
+
subject.after_features @features
|
|
152
|
+
end
|
|
153
|
+
end
|
|
80
154
|
end
|
|
81
155
|
|
|
82
156
|
describe 'when pushing results' do
|
data/tasks/setup.rake
ADDED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bumps
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brent Snook
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-09-
|
|
12
|
+
date: 2009-09-28 00:00:00 +01:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -20,7 +20,7 @@ dependencies:
|
|
|
20
20
|
requirements:
|
|
21
21
|
- - ">="
|
|
22
22
|
- !ruby/object:Gem::Version
|
|
23
|
-
version: 0.3.
|
|
23
|
+
version: 0.3.104
|
|
24
24
|
version:
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: nokogiri
|
|
@@ -30,7 +30,17 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.
|
|
33
|
+
version: 1.3.3
|
|
34
|
+
version:
|
|
35
|
+
- !ruby/object:Gem::Dependency
|
|
36
|
+
name: rspec
|
|
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.8
|
|
34
44
|
version:
|
|
35
45
|
- !ruby/object:Gem::Dependency
|
|
36
46
|
name: newgem
|
|
@@ -40,17 +50,17 @@ dependencies:
|
|
|
40
50
|
requirements:
|
|
41
51
|
- - ">="
|
|
42
52
|
- !ruby/object:Gem::Version
|
|
43
|
-
version: 1.2
|
|
53
|
+
version: 1.5.2
|
|
44
54
|
version:
|
|
45
55
|
- !ruby/object:Gem::Dependency
|
|
46
|
-
name:
|
|
56
|
+
name: sinatra
|
|
47
57
|
type: :development
|
|
48
58
|
version_requirement:
|
|
49
59
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
60
|
requirements:
|
|
51
61
|
- - ">="
|
|
52
62
|
- !ruby/object:Gem::Version
|
|
53
|
-
version:
|
|
63
|
+
version: 0.9.4
|
|
54
64
|
version:
|
|
55
65
|
- !ruby/object:Gem::Dependency
|
|
56
66
|
name: hoe
|
|
@@ -60,9 +70,14 @@ dependencies:
|
|
|
60
70
|
requirements:
|
|
61
71
|
- - ">="
|
|
62
72
|
- !ruby/object:Gem::Version
|
|
63
|
-
version:
|
|
73
|
+
version: 2.3.3
|
|
64
74
|
version:
|
|
65
|
-
description:
|
|
75
|
+
description: |-
|
|
76
|
+
Remote feature management for Cucumber.
|
|
77
|
+
|
|
78
|
+
Bumps extends {Cucumber}[http://cukes.info] by allowing you to pull feature content and push run results to and from a remote server. This means that your feature files no longer need to live with your steps and other code. This also means that you can publish the results of a Cucumber run to another system.
|
|
79
|
+
|
|
80
|
+
See the {wiki}[http://wiki.github.com/brentsnook/bumps] for more details.
|
|
66
81
|
email:
|
|
67
82
|
- brent@fuglylogic.com
|
|
68
83
|
executables: []
|
|
@@ -72,13 +87,13 @@ extensions: []
|
|
|
72
87
|
extra_rdoc_files:
|
|
73
88
|
- History.txt
|
|
74
89
|
- Manifest.txt
|
|
75
|
-
- README.rdoc
|
|
76
90
|
files:
|
|
77
91
|
- History.txt
|
|
78
92
|
- Manifest.txt
|
|
79
93
|
- README.rdoc
|
|
80
94
|
- Rakefile
|
|
81
95
|
- TODO
|
|
96
|
+
- environment.rb
|
|
82
97
|
- examples/feature_server
|
|
83
98
|
- features/pull_remote_features.feature
|
|
84
99
|
- features/push_feature_results.feature
|
|
@@ -107,6 +122,7 @@ files:
|
|
|
107
122
|
- spec/spec.opts
|
|
108
123
|
- spec/spec_helper.rb
|
|
109
124
|
- tasks/rspec.rake
|
|
125
|
+
- tasks/setup.rake
|
|
110
126
|
- test_features/remote_content/destroy_dr_thaddeus_venture.feature
|
|
111
127
|
- test_features/requires/support/env.rb
|
|
112
128
|
has_rdoc: true
|
|
@@ -137,6 +153,6 @@ rubyforge_project: bumps
|
|
|
137
153
|
rubygems_version: 1.3.5
|
|
138
154
|
signing_key:
|
|
139
155
|
specification_version: 3
|
|
140
|
-
summary: Remote feature management for Cucumber
|
|
156
|
+
summary: Remote feature management for Cucumber
|
|
141
157
|
test_files: []
|
|
142
158
|
|