spinach 0.3.2 → 0.3.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/lib/spinach/capybara.rb +19 -9
- data/lib/spinach/config.rb +8 -1
- data/lib/spinach/hooks.rb +10 -10
- data/lib/spinach/reporter.rb +2 -2
- data/lib/spinach/reporter/stdout.rb +7 -7
- data/lib/spinach/runner/scenario_runner.rb +10 -10
- data/lib/spinach/version.rb +1 -1
- data/test/spinach/capybara_test.rb +32 -3
- data/test/spinach/reporter/stdout_test.rb +1 -0
- data/test/spinach/runner/scenario_runner_test.rb +13 -12
- metadata +35 -29
data/lib/spinach/capybara.rb
CHANGED
@@ -40,16 +40,26 @@ module Spinach
|
|
40
40
|
stream.reopen(old_stream)
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
44
|
-
Spinach.hooks.after_scenario do
|
45
|
-
::Capybara.current_session.reset! if ::Capybara.app
|
46
|
-
::Capybara.use_default_driver
|
47
|
-
end
|
48
|
-
|
49
|
-
Spinach.hooks.on_tag('javascript') do
|
50
|
-
::Capybara.current_driver = ::Capybara.javascript_driver
|
51
|
-
end
|
52
43
|
end
|
53
44
|
end
|
54
45
|
end
|
55
46
|
end
|
47
|
+
|
48
|
+
Spinach.hooks.after_scenario do
|
49
|
+
::Capybara.current_session.reset! if ::Capybara.app
|
50
|
+
::Capybara.use_default_driver
|
51
|
+
end
|
52
|
+
|
53
|
+
Spinach.hooks.on_tag('javascript') do
|
54
|
+
::Capybara.current_driver = ::Capybara.javascript_driver
|
55
|
+
end
|
56
|
+
|
57
|
+
open_page = Proc.new do |*args|
|
58
|
+
if Spinach.config.save_and_open_page_on_failure
|
59
|
+
step_definitions = args.last
|
60
|
+
step_definitions.send(:save_and_open_page)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
Spinach.hooks.on_error_step(&open_page)
|
65
|
+
Spinach.hooks.on_failed_step(&open_page)
|
data/lib/spinach/config.rb
CHANGED
@@ -21,7 +21,7 @@ module Spinach
|
|
21
21
|
#
|
22
22
|
class Config
|
23
23
|
attr_writer :features_path, :step_definitions_path, :default_reporter, :support_path,
|
24
|
-
:failure_exceptions, :config_path
|
24
|
+
:failure_exceptions, :config_path, :save_and_open_page_on_failure
|
25
25
|
|
26
26
|
# The "features path" holds the place where your features will be
|
27
27
|
# searched for. Defaults to 'features'
|
@@ -106,6 +106,13 @@ module Spinach
|
|
106
106
|
@config_path ||= 'config/spinach.yml'
|
107
107
|
end
|
108
108
|
|
109
|
+
# When using capybara, it automatically shows the current page when there's
|
110
|
+
# a failure
|
111
|
+
#
|
112
|
+
def save_and_open_page_on_failure
|
113
|
+
@save_and_open_page_on_failure ||= false
|
114
|
+
end
|
115
|
+
|
109
116
|
# Parse options from the config file
|
110
117
|
#
|
111
118
|
# @return [Boolean]
|
data/lib/spinach/hooks.rb
CHANGED
@@ -51,14 +51,14 @@ module Spinach
|
|
51
51
|
# Runs before every scenario
|
52
52
|
#
|
53
53
|
# @example
|
54
|
-
# Spinach.hooks.before_scenario do |scenario_data|
|
54
|
+
# Spinach.hooks.before_scenario do |scenario_data, step_definitions|
|
55
55
|
# # feature_data is a hash of the parsed scenario data
|
56
56
|
# end
|
57
57
|
hook :before_scenario
|
58
58
|
|
59
59
|
# Runs around every scenario
|
60
60
|
# @example
|
61
|
-
# Spinach.hooks.around_scenario do |scenario_data, &block|
|
61
|
+
# Spinach.hooks.around_scenario do |scenario_data, step_definitions, &block|
|
62
62
|
# # feature_data is a hash of the parsed scenario data
|
63
63
|
# block.call
|
64
64
|
# end
|
@@ -67,7 +67,7 @@ module Spinach
|
|
67
67
|
# Runs after every scenario
|
68
68
|
#
|
69
69
|
# @example
|
70
|
-
# Spinach.hooks.after_scenario do |scenario_data|
|
70
|
+
# Spinach.hooks.after_scenario do |scenario_data, step_definitions|
|
71
71
|
# # feature_data is a hash of the parsed scenario data
|
72
72
|
# end
|
73
73
|
hook :after_scenario
|
@@ -75,7 +75,7 @@ module Spinach
|
|
75
75
|
# Runs before every step execution
|
76
76
|
#
|
77
77
|
# @example
|
78
|
-
# Spinach.hooks.before_step do |step_data|
|
78
|
+
# Spinach.hooks.before_step do |step_data, step_definitions|
|
79
79
|
# # step_data contains a hash with this step's data
|
80
80
|
# end
|
81
81
|
hook :before_step
|
@@ -83,7 +83,7 @@ module Spinach
|
|
83
83
|
# Runs after every step execution
|
84
84
|
#
|
85
85
|
# @example
|
86
|
-
# Spinach.hooks.before_step do |step_data|
|
86
|
+
# Spinach.hooks.before_step do |step_data, step_definitions|
|
87
87
|
# # step_data contains a hash with this step's data
|
88
88
|
# end
|
89
89
|
hook :after_step
|
@@ -91,7 +91,7 @@ module Spinach
|
|
91
91
|
# Runs after every successful step execution
|
92
92
|
#
|
93
93
|
# @example
|
94
|
-
# Spinach.hooks.on_successful_step do |step_data, location|
|
94
|
+
# Spinach.hooks.on_successful_step do |step_data, location, step_definitions|
|
95
95
|
# # step_data contains a hash with this step's data
|
96
96
|
# # step_location contains a string indication this step definition's
|
97
97
|
# # location
|
@@ -101,7 +101,7 @@ module Spinach
|
|
101
101
|
# Runs after every failed step execution
|
102
102
|
#
|
103
103
|
# @example
|
104
|
-
# Spinach.hooks.on_failed_step do |step_data, location|
|
104
|
+
# Spinach.hooks.on_failed_step do |step_data, exception, location, step_definitions|
|
105
105
|
# # step_data contains a hash with this step's data
|
106
106
|
# # step_location contains a string indication this step definition's
|
107
107
|
# # location
|
@@ -111,7 +111,7 @@ module Spinach
|
|
111
111
|
# Runs after every step execution that raises an exception
|
112
112
|
#
|
113
113
|
# @example
|
114
|
-
# Spinach.hooks.on_error_step do |step_data, location|
|
114
|
+
# Spinach.hooks.on_error_step do |step_data, exception, location, step_definitions|
|
115
115
|
# # step_data contains a hash with this step's data
|
116
116
|
# # step_location contains a string indication this step definition's
|
117
117
|
# # location
|
@@ -121,7 +121,7 @@ module Spinach
|
|
121
121
|
# Runs every time a step which is not defined is called
|
122
122
|
#
|
123
123
|
# @example
|
124
|
-
# Spinach.hooks.on_undefined_step do |step_data, location|
|
124
|
+
# Spinach.hooks.on_undefined_step do |step_data, exception, location, step_definitions|
|
125
125
|
# # step_data contains a hash with this step's data
|
126
126
|
# # step_location contains a string indication this step definition's
|
127
127
|
# # location
|
@@ -132,7 +132,7 @@ module Spinach
|
|
132
132
|
# one just before.
|
133
133
|
#
|
134
134
|
# @example
|
135
|
-
# Spinach.hooks.on_undefined_step do |step_data|
|
135
|
+
# Spinach.hooks.on_undefined_step do |step_data, step_definitions|
|
136
136
|
# # step_data contains a hash with this step's data
|
137
137
|
# end
|
138
138
|
hook :on_skipped_step
|
data/lib/spinach/reporter.rb
CHANGED
@@ -41,8 +41,8 @@ module Spinach
|
|
41
41
|
|
42
42
|
hooks.before_feature { |*args| set_current_feature(*args) }
|
43
43
|
hooks.after_feature { |*args| clear_current_feature(*args) }
|
44
|
-
hooks.before_scenario { |*args| set_current_scenario(
|
45
|
-
hooks.after_scenario { |*args| clear_current_scenario(
|
44
|
+
hooks.before_scenario { |*args| set_current_scenario(args.first) }
|
45
|
+
hooks.after_scenario { |*args| clear_current_scenario(args.first) }
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -46,7 +46,7 @@ module Spinach
|
|
46
46
|
# @param [Hash] data
|
47
47
|
# The feature in a JSON Gherkin format
|
48
48
|
#
|
49
|
-
def before_scenario_run(scenario)
|
49
|
+
def before_scenario_run(scenario, step_definitions = nil)
|
50
50
|
@max_step_name_length = scenario.steps.map(&:name).map(&:length).max if scenario.steps.any?
|
51
51
|
name = scenario.name
|
52
52
|
out.puts "\n #{'Scenario:'.green} #{name.light_green}"
|
@@ -57,7 +57,7 @@ module Spinach
|
|
57
57
|
# @param [Hash] data
|
58
58
|
# The feature in a JSON Gherkin format
|
59
59
|
#
|
60
|
-
def after_scenario_run(scenario)
|
60
|
+
def after_scenario_run(scenario, step_definitions = nil)
|
61
61
|
if scenario_error
|
62
62
|
report_error(scenario_error, :full)
|
63
63
|
self.scenario_error = nil
|
@@ -72,7 +72,7 @@ module Spinach
|
|
72
72
|
# @param [Array] step_location
|
73
73
|
# The step source location
|
74
74
|
#
|
75
|
-
def on_successful_step(step, step_location)
|
75
|
+
def on_successful_step(step, step_location, step_definitions = nil)
|
76
76
|
output_step('✔', step, :green, step_location)
|
77
77
|
self.scenario = [current_feature, current_scenario, step]
|
78
78
|
successful_steps << scenario
|
@@ -86,7 +86,7 @@ module Spinach
|
|
86
86
|
# @param [Exception] failure
|
87
87
|
# The exception that caused the failure
|
88
88
|
#
|
89
|
-
def on_failed_step(step, failure, step_location)
|
89
|
+
def on_failed_step(step, failure, step_location, step_definitions = nil)
|
90
90
|
output_step('✘', step, :red, step_location)
|
91
91
|
self.scenario_error = [current_feature, current_scenario, step, failure]
|
92
92
|
failed_steps << scenario_error
|
@@ -100,7 +100,7 @@ module Spinach
|
|
100
100
|
# @param [Exception] failure
|
101
101
|
# The exception that caused the failure
|
102
102
|
#
|
103
|
-
def on_error_step(step, failure, step_location)
|
103
|
+
def on_error_step(step, failure, step_location, step_definitions = nil)
|
104
104
|
output_step('!', step, :red, step_location)
|
105
105
|
self.scenario_error = [current_feature, current_scenario, step, failure]
|
106
106
|
error_steps << scenario_error
|
@@ -111,7 +111,7 @@ module Spinach
|
|
111
111
|
# @param [Hash] step
|
112
112
|
# The step in a JSON Gherkin format
|
113
113
|
#
|
114
|
-
def on_undefined_step(step, failure)
|
114
|
+
def on_undefined_step(step, failure, step_definitions = nil)
|
115
115
|
output_step('?', step, :yellow)
|
116
116
|
self.scenario_error = [current_feature, current_scenario, step, failure]
|
117
117
|
undefined_steps << scenario_error
|
@@ -145,7 +145,7 @@ module Spinach
|
|
145
145
|
# @param [Hash] step
|
146
146
|
# The step that Gherkin extracts
|
147
147
|
#
|
148
|
-
def on_skipped_step(step)
|
148
|
+
def on_skipped_step(step, step_definitions = nil)
|
149
149
|
output_step('~', step, :cyan)
|
150
150
|
end
|
151
151
|
|
@@ -43,24 +43,24 @@ module Spinach
|
|
43
43
|
#
|
44
44
|
# @api public
|
45
45
|
def run
|
46
|
-
Spinach.hooks.run_before_scenario @scenario
|
46
|
+
Spinach.hooks.run_before_scenario @scenario, step_definitions
|
47
47
|
scenario_run = false
|
48
|
-
Spinach.hooks.run_around_scenario @scenario do
|
48
|
+
Spinach.hooks.run_around_scenario @scenario, step_definitions do
|
49
49
|
scenario_run = true
|
50
50
|
steps.each do |step|
|
51
|
-
Spinach.hooks.run_before_step step
|
51
|
+
Spinach.hooks.run_before_step step, step_definitions
|
52
52
|
|
53
53
|
if @exception
|
54
|
-
Spinach.hooks.run_on_skipped_step step
|
54
|
+
Spinach.hooks.run_on_skipped_step step, step_definitions
|
55
55
|
else
|
56
56
|
run_step(step)
|
57
57
|
end
|
58
58
|
|
59
|
-
Spinach.hooks.run_after_step step
|
59
|
+
Spinach.hooks.run_after_step step, step_definitions
|
60
60
|
end
|
61
61
|
end
|
62
62
|
raise "around_scenario hooks *must* yield" if !scenario_run && !@exception
|
63
|
-
Spinach.hooks.run_after_scenario @scenario
|
63
|
+
Spinach.hooks.run_after_scenario @scenario, step_definitions
|
64
64
|
!@exception
|
65
65
|
end
|
66
66
|
|
@@ -73,16 +73,16 @@ module Spinach
|
|
73
73
|
def run_step(step)
|
74
74
|
step_location = step_definitions.step_location_for(step.name)
|
75
75
|
step_definitions.execute(step)
|
76
|
-
Spinach.hooks.run_on_successful_step step, step_location
|
76
|
+
Spinach.hooks.run_on_successful_step step, step_location, step_definitions
|
77
77
|
rescue *Spinach.config[:failure_exceptions] => e
|
78
78
|
@exception = e
|
79
|
-
Spinach.hooks.run_on_failed_step step, @exception, step_location
|
79
|
+
Spinach.hooks.run_on_failed_step step, @exception, step_location, step_definitions
|
80
80
|
rescue Spinach::StepNotDefinedException => e
|
81
81
|
@exception = e
|
82
|
-
Spinach.hooks.run_on_undefined_step step, @exception
|
82
|
+
Spinach.hooks.run_on_undefined_step step, @exception, step_definitions
|
83
83
|
rescue Exception => e
|
84
84
|
@exception = e
|
85
|
-
Spinach.hooks.run_on_error_step step, @exception, step_location
|
85
|
+
Spinach.hooks.run_on_error_step step, @exception, step_location, step_definitions
|
86
86
|
end
|
87
87
|
|
88
88
|
end
|
data/lib/spinach/version.rb
CHANGED
@@ -17,18 +17,24 @@ describe Spinach::FeatureSteps::Capybara do
|
|
17
17
|
|
18
18
|
Capybara.app = @sinatra_app
|
19
19
|
|
20
|
-
|
20
|
+
class TestFeature < Spinach::FeatureSteps
|
21
21
|
include Spinach::FeatureSteps::Capybara
|
22
22
|
feature 'A test feature'
|
23
23
|
Given 'Hello' do
|
24
24
|
end
|
25
25
|
Then 'Goodbye' do
|
26
26
|
end
|
27
|
+
Given 'Fail' do
|
28
|
+
1.must_equal 2
|
29
|
+
end
|
27
30
|
def go_home
|
28
31
|
visit '/'
|
29
32
|
page
|
30
33
|
end
|
31
|
-
end
|
34
|
+
end
|
35
|
+
|
36
|
+
@feature_class = TestFeature
|
37
|
+
@feature = @feature_class.new
|
32
38
|
end
|
33
39
|
|
34
40
|
let(:parsed_feature) { Spinach::Parser.new("""
|
@@ -44,8 +50,15 @@ Feature: A test feature
|
|
44
50
|
""").parse
|
45
51
|
}
|
46
52
|
|
53
|
+
let(:failing_feature) { Spinach::Parser.new("""
|
54
|
+
Feature: A test feature
|
55
|
+
Scenario: A test scenario
|
56
|
+
Given Fail
|
57
|
+
""").parse
|
58
|
+
}
|
59
|
+
|
47
60
|
it 'includes capybara into all features' do
|
48
|
-
@feature.kind_of?
|
61
|
+
@feature.kind_of?(Capybara::DSL).must_equal true
|
49
62
|
end
|
50
63
|
|
51
64
|
it 'goes to a capybara page and returns its result' do
|
@@ -77,4 +90,20 @@ Feature: A test feature
|
|
77
90
|
|
78
91
|
@feature_runner.run
|
79
92
|
end
|
93
|
+
|
94
|
+
describe "when there's a failure" do
|
95
|
+
it 'saves and open the page if the option is activated' do
|
96
|
+
@feature_runner = Spinach::Runner::FeatureRunner.new(failing_feature)
|
97
|
+
Spinach.config.save_and_open_page_on_failure = true
|
98
|
+
@feature_class.any_instance.expects(:save_and_open_page).once
|
99
|
+
@feature_runner.run
|
100
|
+
end
|
101
|
+
|
102
|
+
it "doesn't saves and open the page if the option is deactivated" do
|
103
|
+
@feature_runner = Spinach::Runner::FeatureRunner.new(failing_feature)
|
104
|
+
Spinach.config.save_and_open_page_on_failure = false
|
105
|
+
Capybara.expects(:save_and_open_page).never
|
106
|
+
@feature_runner.run
|
107
|
+
end
|
108
|
+
end
|
80
109
|
end
|
@@ -72,6 +72,7 @@ describe Spinach::Reporter::Stdout do
|
|
72
72
|
describe '#on_successful_step' do
|
73
73
|
let(:step) { stub(keyword: 'Given', name: 'I am too cool') }
|
74
74
|
let(:step_location){['error_step_location', 1]}
|
75
|
+
let(:step_definitions){ stub }
|
75
76
|
it 'adds the step to the output buffer' do
|
76
77
|
@reporter.on_successful_step(step, step_location)
|
77
78
|
|
@@ -13,6 +13,7 @@ module Spinach
|
|
13
13
|
end
|
14
14
|
|
15
15
|
subject { ScenarioRunner.new(scenario) }
|
16
|
+
let(:step_definitions){ subject.step_definitions }
|
16
17
|
|
17
18
|
describe 'delegations' do
|
18
19
|
it 'delegates #feature to the scenario' do
|
@@ -38,18 +39,18 @@ module Spinach
|
|
38
39
|
hooks = sequence('hooks')
|
39
40
|
subject.stubs(:step_definitions).returns step_definitions = stub
|
40
41
|
|
41
|
-
Spinach.hooks.expects(:run_before_scenario).with(scenario).in_sequence(hooks)
|
42
|
-
Spinach.hooks.expects(:run_around_scenario).with(scenario).in_sequence(hooks).yields
|
42
|
+
Spinach.hooks.expects(:run_before_scenario).with(scenario, step_definitions).in_sequence(hooks)
|
43
|
+
Spinach.hooks.expects(:run_around_scenario).with(scenario, step_definitions).in_sequence(hooks).yields
|
43
44
|
|
44
|
-
Spinach.hooks.expects(:run_before_step).with(steps.first).in_sequence(hooks)
|
45
|
+
Spinach.hooks.expects(:run_before_step).with(steps.first, step_definitions).in_sequence(hooks)
|
45
46
|
subject.expects(:run_step).with(steps.first)
|
46
|
-
Spinach.hooks.expects(:run_after_step).with(steps.first).in_sequence(hooks)
|
47
|
+
Spinach.hooks.expects(:run_after_step).with(steps.first, step_definitions).in_sequence(hooks)
|
47
48
|
|
48
|
-
Spinach.hooks.expects(:run_before_step).with(steps.last).in_sequence(hooks)
|
49
|
+
Spinach.hooks.expects(:run_before_step).with(steps.last, step_definitions).in_sequence(hooks)
|
49
50
|
subject.expects(:run_step).with(steps.last)
|
50
|
-
Spinach.hooks.expects(:run_after_step).with(steps.last).in_sequence(hooks)
|
51
|
+
Spinach.hooks.expects(:run_after_step).with(steps.last, step_definitions).in_sequence(hooks)
|
51
52
|
|
52
|
-
Spinach.hooks.expects(:run_after_scenario).with(scenario).in_sequence(hooks)
|
53
|
+
Spinach.hooks.expects(:run_after_scenario).with(scenario, step_definitions).in_sequence(hooks)
|
53
54
|
|
54
55
|
subject.run
|
55
56
|
end
|
@@ -57,7 +58,7 @@ module Spinach
|
|
57
58
|
it 'raises if around hook does not yield' do
|
58
59
|
subject.stubs(:step_definitions).returns stub
|
59
60
|
|
60
|
-
Spinach.hooks.stubs(:run_around_scenario).with(scenario)
|
61
|
+
Spinach.hooks.stubs(:run_around_scenario).with(scenario, step_definitions)
|
61
62
|
|
62
63
|
proc do
|
63
64
|
subject.run
|
@@ -77,7 +78,7 @@ module Spinach
|
|
77
78
|
describe 'when the step is successful' do
|
78
79
|
it 'runs the successful hooks' do
|
79
80
|
@step_definitions.stubs(:execute).with(@step).returns true
|
80
|
-
Spinach.hooks.expects(:run_on_successful_step).with(@step, @location)
|
81
|
+
Spinach.hooks.expects(:run_on_successful_step).with(@step, @location, @step_definitions)
|
81
82
|
|
82
83
|
subject.run_step(@step)
|
83
84
|
end
|
@@ -96,7 +97,7 @@ module Spinach
|
|
96
97
|
end
|
97
98
|
|
98
99
|
it 'runs the failed hooks' do
|
99
|
-
Spinach.hooks.expects(:run_on_failed_step).with(@step, kind_of(@failure_exception), @location)
|
100
|
+
Spinach.hooks.expects(:run_on_failed_step).with(@step, kind_of(@failure_exception), @location, @step_definitions)
|
100
101
|
subject.run_step(@step)
|
101
102
|
end
|
102
103
|
end
|
@@ -112,7 +113,7 @@ module Spinach
|
|
112
113
|
end
|
113
114
|
|
114
115
|
it 'runs the undefined hooks' do
|
115
|
-
Spinach.hooks.expects(:run_on_undefined_step).with(@step, kind_of(Spinach::StepNotDefinedException))
|
116
|
+
Spinach.hooks.expects(:run_on_undefined_step).with(@step, kind_of(Spinach::StepNotDefinedException), @step_definitions)
|
116
117
|
subject.run_step(@step)
|
117
118
|
end
|
118
119
|
end
|
@@ -128,7 +129,7 @@ module Spinach
|
|
128
129
|
end
|
129
130
|
|
130
131
|
it 'runs the error hooks' do
|
131
|
-
Spinach.hooks.expects(:run_on_error_step).with(@step, kind_of(StandardError), @location)
|
132
|
+
Spinach.hooks.expects(:run_on_error_step).with(@step, kind_of(StandardError), @location, @step_definitions)
|
132
133
|
subject.run_step(@step)
|
133
134
|
end
|
134
135
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spinach
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,11 +12,11 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-03-
|
15
|
+
date: 2012-03-21 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: gherkin-ruby
|
19
|
-
requirement: &
|
19
|
+
requirement: &2160936860 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ~>
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: 0.1.0
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *2160936860
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: colorize
|
30
|
-
requirement: &
|
30
|
+
requirement: &2160936440 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ! '>='
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: '0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *2160936440
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: rake
|
41
|
-
requirement: &
|
41
|
+
requirement: &2160935980 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ! '>='
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
version: '0'
|
47
47
|
type: :development
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *2160935980
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: mocha
|
52
|
-
requirement: &
|
52
|
+
requirement: &2160935560 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
@@ -57,10 +57,10 @@ dependencies:
|
|
57
57
|
version: '0'
|
58
58
|
type: :development
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *2160935560
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: sinatra
|
63
|
-
requirement: &
|
63
|
+
requirement: &2160935140 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ! '>='
|
@@ -68,10 +68,10 @@ dependencies:
|
|
68
68
|
version: '0'
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *2160935140
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: capybara
|
74
|
-
requirement: &
|
74
|
+
requirement: &2160934700 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ! '>='
|
@@ -79,10 +79,10 @@ dependencies:
|
|
79
79
|
version: '0'
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
|
-
version_requirements: *
|
82
|
+
version_requirements: *2160934700
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: open4
|
85
|
-
requirement: &
|
85
|
+
requirement: &2160934280 !ruby/object:Gem::Requirement
|
86
86
|
none: false
|
87
87
|
requirements:
|
88
88
|
- - ! '>='
|
@@ -90,10 +90,10 @@ dependencies:
|
|
90
90
|
version: '0'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
|
-
version_requirements: *
|
93
|
+
version_requirements: *2160934280
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: pry
|
96
|
-
requirement: &
|
96
|
+
requirement: &2160933860 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
99
|
- - ! '>='
|
@@ -101,10 +101,10 @@ dependencies:
|
|
101
101
|
version: '0'
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
|
-
version_requirements: *
|
104
|
+
version_requirements: *2160933860
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: simplecov
|
107
|
-
requirement: &
|
107
|
+
requirement: &2160933420 !ruby/object:Gem::Requirement
|
108
108
|
none: false
|
109
109
|
requirements:
|
110
110
|
- - ! '>='
|
@@ -112,10 +112,10 @@ dependencies:
|
|
112
112
|
version: '0'
|
113
113
|
type: :development
|
114
114
|
prerelease: false
|
115
|
-
version_requirements: *
|
115
|
+
version_requirements: *2160933420
|
116
116
|
- !ruby/object:Gem::Dependency
|
117
117
|
name: rspec
|
118
|
-
requirement: &
|
118
|
+
requirement: &2160933000 !ruby/object:Gem::Requirement
|
119
119
|
none: false
|
120
120
|
requirements:
|
121
121
|
- - ! '>='
|
@@ -123,10 +123,10 @@ dependencies:
|
|
123
123
|
version: '0'
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
|
-
version_requirements: *
|
126
|
+
version_requirements: *2160933000
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
128
|
name: fakefs
|
129
|
-
requirement: &
|
129
|
+
requirement: &2160932580 !ruby/object:Gem::Requirement
|
130
130
|
none: false
|
131
131
|
requirements:
|
132
132
|
- - ! '>='
|
@@ -134,10 +134,10 @@ dependencies:
|
|
134
134
|
version: '0'
|
135
135
|
type: :development
|
136
136
|
prerelease: false
|
137
|
-
version_requirements: *
|
137
|
+
version_requirements: *2160932580
|
138
138
|
- !ruby/object:Gem::Dependency
|
139
139
|
name: minitest
|
140
|
-
requirement: &
|
140
|
+
requirement: &2160932080 !ruby/object:Gem::Requirement
|
141
141
|
none: false
|
142
142
|
requirements:
|
143
143
|
- - ~>
|
@@ -145,10 +145,10 @@ dependencies:
|
|
145
145
|
version: '2.0'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
|
-
version_requirements: *
|
148
|
+
version_requirements: *2160932080
|
149
149
|
- !ruby/object:Gem::Dependency
|
150
150
|
name: turn
|
151
|
-
requirement: &
|
151
|
+
requirement: &2160931660 !ruby/object:Gem::Requirement
|
152
152
|
none: false
|
153
153
|
requirements:
|
154
154
|
- - ! '>='
|
@@ -156,7 +156,7 @@ dependencies:
|
|
156
156
|
version: '0'
|
157
157
|
type: :development
|
158
158
|
prerelease: false
|
159
|
-
version_requirements: *
|
159
|
+
version_requirements: *2160931660
|
160
160
|
description: Spinach is a BDD framework on top of gherkin
|
161
161
|
email:
|
162
162
|
- info@codegram.com
|
@@ -268,15 +268,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
268
268
|
- - ! '>='
|
269
269
|
- !ruby/object:Gem::Version
|
270
270
|
version: '0'
|
271
|
+
segments:
|
272
|
+
- 0
|
273
|
+
hash: 3946527158097990849
|
271
274
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
272
275
|
none: false
|
273
276
|
requirements:
|
274
277
|
- - ! '>='
|
275
278
|
- !ruby/object:Gem::Version
|
276
279
|
version: '0'
|
280
|
+
segments:
|
281
|
+
- 0
|
282
|
+
hash: 3946527158097990849
|
277
283
|
requirements: []
|
278
284
|
rubyforge_project:
|
279
|
-
rubygems_version: 1.8.
|
285
|
+
rubygems_version: 1.8.15
|
280
286
|
signing_key:
|
281
287
|
specification_version: 3
|
282
288
|
summary: Spinach is a BDD framework on top of gherkin
|