spinach 0.1.5.4 → 0.2.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/Gemfile +2 -0
- data/README.markdown +18 -12
- data/features/background.feature +13 -0
- data/features/reporting/show_step_source_location.feature +11 -1
- data/features/steps/automatic_feature_generation.rb +7 -7
- data/features/steps/background.rb +30 -0
- data/features/steps/exit_status.rb +12 -13
- data/features/steps/feature_name_guessing.rb +7 -7
- data/features/steps/reporting/display_run_summary.rb +22 -22
- data/features/steps/reporting/error_reporting.rb +7 -7
- data/features/steps/reporting/show_step_source_location.rb +63 -14
- data/features/steps/reporting/undefined_feature_reporting.rb +7 -7
- data/features/steps/rspec_compatibility.rb +14 -14
- data/features/support/error_reporting.rb +5 -5
- data/features/support/filesystem.rb +71 -0
- data/features/support/spinach_runner.rb +5 -6
- data/lib/spinach.rb +11 -6
- data/lib/spinach/background.rb +11 -0
- data/lib/spinach/capybara.rb +7 -1
- data/lib/spinach/cli.rb +36 -13
- data/lib/spinach/config.rb +40 -6
- data/lib/spinach/dsl.rb +14 -11
- data/lib/spinach/exceptions.rb +1 -1
- data/lib/spinach/feature.rb +16 -0
- data/lib/spinach/frameworks.rb +2 -0
- data/lib/spinach/{suites → frameworks}/minitest.rb +0 -0
- data/lib/spinach/{suites → frameworks}/rspec.rb +0 -0
- data/lib/spinach/generators/feature_generator.rb +12 -23
- data/lib/spinach/generators/step_generator.rb +5 -5
- data/lib/spinach/hookable.rb +6 -4
- data/lib/spinach/hooks.rb +12 -4
- data/lib/spinach/parser.rb +6 -8
- data/lib/spinach/parser/visitor.rb +109 -0
- data/lib/spinach/reporter.rb +10 -6
- data/lib/spinach/reporter/stdout.rb +41 -16
- data/lib/spinach/reporter/stdout/error_reporting.rb +2 -2
- data/lib/spinach/runner.rb +9 -6
- data/lib/spinach/runner/feature_runner.rb +40 -34
- data/lib/spinach/runner/scenario_runner.rb +63 -36
- data/lib/spinach/scenario.rb +12 -0
- data/lib/spinach/step.rb +10 -0
- data/lib/spinach/version.rb +1 -1
- data/spinach.gemspec +3 -3
- data/test/spinach/background_test.rb +6 -0
- data/test/spinach/capybara_test.rb +30 -13
- data/test/spinach/cli_test.rb +46 -1
- data/test/spinach/config_test.rb +39 -0
- data/test/spinach/dsl_test.rb +12 -10
- data/test/spinach/feature_steps_test.rb +3 -3
- data/test/spinach/feature_test.rb +6 -0
- data/test/spinach/{suites → frameworks}/minitest_test.rb +2 -2
- data/test/spinach/generators/feature_generator_test.rb +18 -58
- data/test/spinach/generators/step_generator_test.rb +3 -3
- data/test/spinach/generators_test.rb +12 -10
- data/test/spinach/hookable_test.rb +8 -0
- data/test/spinach/hooks_test.rb +6 -7
- data/test/spinach/parser/visitor_test.rb +173 -0
- data/test/spinach/parser_test.rb +14 -27
- data/test/spinach/reporter/stdout/error_reporting_test.rb +9 -9
- data/test/spinach/reporter/stdout_test.rb +15 -19
- data/test/spinach/reporter_test.rb +15 -0
- data/test/spinach/runner/feature_runner_test.rb +79 -69
- data/test/spinach/runner/scenario_runner_test.rb +118 -92
- data/test/spinach/runner_test.rb +10 -6
- data/test/spinach/scenario_test.rb +6 -0
- data/test/spinach/step_test.rb +6 -0
- data/test/spinach_test.rb +7 -7
- metadata +60 -39
- data/lib/spinach/suites.rb +0 -2
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -35,8 +35,6 @@ use it with RSpec as well if you put the following in `features/support/env.rb`:
|
|
35
35
|
Now create a `features` folder in your app or library and write your first
|
36
36
|
feature:
|
37
37
|
|
38
|
-
## features/test_how_spinach_works.feature
|
39
|
-
|
40
38
|
Feature: Test how spinach works
|
41
39
|
In order to know what the heck is spinach
|
42
40
|
As a developer
|
@@ -62,7 +60,7 @@ scaffolding for you:
|
|
62
60
|
|
63
61
|
Spinach will detect your features and generate the following class:
|
64
62
|
|
65
|
-
|
63
|
+
## features/steps/test_how_spinach_works.rb
|
66
64
|
|
67
65
|
class TestHowSpinachWorks < Spinach::FeatureSteps
|
68
66
|
Given 'I have an empty array' do
|
@@ -102,7 +100,7 @@ use private methods, mix in modules or whatever!
|
|
102
100
|
end
|
103
101
|
end
|
104
102
|
|
105
|
-
Then 'the output should contain a formal
|
103
|
+
Then 'the output should contain a formal greeting' do
|
106
104
|
@output.must_include "Hello, mr. John Doe"
|
107
105
|
end
|
108
106
|
|
@@ -110,14 +108,14 @@ use private methods, mix in modules or whatever!
|
|
110
108
|
@array += ["John"]
|
111
109
|
end
|
112
110
|
|
113
|
-
Then 'the output should contain a casual
|
111
|
+
Then 'the output should contain a casual greeting' do
|
114
112
|
@output.must_include "Yo, John! Whassup?"
|
115
113
|
end
|
116
114
|
|
117
115
|
private
|
118
116
|
|
119
117
|
def capture_output
|
120
|
-
out =
|
118
|
+
out = StringIO.new
|
121
119
|
$stdout = out
|
122
120
|
$stderr = out
|
123
121
|
yield
|
@@ -126,6 +124,15 @@ use private methods, mix in modules or whatever!
|
|
126
124
|
out.string
|
127
125
|
end
|
128
126
|
end
|
127
|
+
module Greeter
|
128
|
+
def self.greet(name)
|
129
|
+
if name.length > 1
|
130
|
+
puts "Hello, mr. #{name.join(' ')}"
|
131
|
+
else
|
132
|
+
puts "Yo, #{name.first}! Whassup?"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
129
136
|
|
130
137
|
Then run your feature again running `spinach` and watch it all turn green! :)
|
131
138
|
|
@@ -136,12 +143,12 @@ after any feature, scenario or step execution.
|
|
136
143
|
|
137
144
|
So, for example, you could:
|
138
145
|
|
139
|
-
Spinach.hooks.before_scenario do |
|
146
|
+
Spinach.hooks.before_scenario do |scenario|
|
140
147
|
clear_database
|
141
148
|
end
|
142
149
|
|
143
|
-
Spinach.hooks.on_successful_step do |
|
144
|
-
count_steps(
|
150
|
+
Spinach.hooks.on_successful_step do |step, location|
|
151
|
+
count_steps(step.scenario.steps)
|
145
152
|
end
|
146
153
|
|
147
154
|
Spinach.hooks.after_run do |status|
|
@@ -152,7 +159,6 @@ Full hook documentation is here:
|
|
152
159
|
|
153
160
|
[Spinach's hook documentation on rubydoc](http://rubydoc.info/github/codegram/spinach/master/Spinach/Hooks)
|
154
161
|
|
155
|
-
|
156
162
|
## Wanna use it with Rails 3?
|
157
163
|
|
158
164
|
Use [spinach-rails](http://github.com/codegram/spinach-rails)
|
@@ -179,7 +185,6 @@ Check out our [spinach-sinatra demo](https://github.com/codegram/spinach-sinatra
|
|
179
185
|
* [spinach rails demo](https://github.com/codegram/spinach-rails-demo)
|
180
186
|
* [spinach sinatra demo](https://github.com/codegram/spinach-sinatra-demo)
|
181
187
|
|
182
|
-
|
183
188
|
## Contributing
|
184
189
|
|
185
190
|
* [List of spinach contributors](https://github.com/codegram/spinach/contributors)
|
@@ -196,10 +201,11 @@ You can easily contribute to Spinach. Its codebase is simple and
|
|
196
201
|
in a commit by itself I can ignore when I pull.
|
197
202
|
* Send me a pull request. Bonus points for topic branches.
|
198
203
|
|
199
|
-
[gherkin]: http://github.com/
|
204
|
+
[gherkin]: http://github.com/codegram/gherkin-ruby
|
200
205
|
[cucumber]: http://github.com/cucumber/cucumber
|
201
206
|
[documentation]: http://rubydoc.info/github/codegram/spinach/master/frames
|
202
207
|
|
203
208
|
## License
|
204
209
|
|
205
210
|
MIT License. Copyright 2011 [Codegram Technologies](http://codegram.com)
|
211
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Feature: Background
|
2
|
+
In order to avoid duplication of Steps in Scenarios
|
3
|
+
As a developer
|
4
|
+
I want to describe the background Steps once
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given Spinach has Background support
|
8
|
+
|
9
|
+
Scenario: Using Background
|
10
|
+
And another step in this scenario
|
11
|
+
When I run this Scenario
|
12
|
+
Then the background step should have been executed
|
13
|
+
And the scenario step should have been executed
|
@@ -3,7 +3,7 @@ Feature: Show step source location
|
|
3
3
|
I want spinach to give me every step source location in output
|
4
4
|
So I can easyly know where I defined a step
|
5
5
|
|
6
|
-
Scenario: Show class steps source location in output
|
6
|
+
Scenario: Show class steps source location in output when all is ok
|
7
7
|
Given I have a feature that has no error or failure
|
8
8
|
When I run it
|
9
9
|
Then I should see the source location of each step of every scenario
|
@@ -12,3 +12,13 @@ Feature: Show step source location
|
|
12
12
|
Given I have a feature that has no error or failure and use external steps
|
13
13
|
When I run it
|
14
14
|
Then I should see the source location of each step, even external ones
|
15
|
+
|
16
|
+
Scenario: Show class steps source location in output even when there is an error
|
17
|
+
Given I have a feature that has an error
|
18
|
+
When I run it
|
19
|
+
Then I should see the source location of each step, even ones with errors
|
20
|
+
|
21
|
+
Scenario: Show class steps source location in output even when there is a failure
|
22
|
+
Given I have a feature that has a failure
|
23
|
+
When I run it
|
24
|
+
Then I should see the source location of each step, even ones with failures
|
@@ -4,12 +4,13 @@ class AutomaticFeatureGeneration < Spinach::FeatureSteps
|
|
4
4
|
|
5
5
|
include Integration::SpinachRunner
|
6
6
|
Given 'I have defined a "Cheezburger can I has" feature' do
|
7
|
-
write_file('features/cheezburger_can_i_has.feature',
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
write_file('features/cheezburger_can_i_has.feature', """
|
8
|
+
Feature: Cheezburger can I has
|
9
|
+
Scenario: Some Lulz
|
10
|
+
Given I haz a sad
|
11
|
+
When I get some lulz
|
12
|
+
Then I haz a happy
|
13
|
+
""")
|
13
14
|
end
|
14
15
|
|
15
16
|
When 'I run spinach with "--generate"' do
|
@@ -17,7 +18,6 @@ class AutomaticFeatureGeneration < Spinach::FeatureSteps
|
|
17
18
|
end
|
18
19
|
|
19
20
|
Then 'I a feature should exist named "features/steps/cheezburger_can_i_has.rb"' do
|
20
|
-
stop_processes!
|
21
21
|
in_current_dir do
|
22
22
|
@file = 'features/steps/cheezburger_can_i_has.rb'
|
23
23
|
File.exists?(@file).must_equal true
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Background < Spinach::FeatureSteps
|
2
|
+
|
3
|
+
feature 'Background'
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@background_step = false
|
7
|
+
@scenario_step = false
|
8
|
+
end
|
9
|
+
|
10
|
+
And 'another step in this scenario' do
|
11
|
+
@scenario_step = true
|
12
|
+
end
|
13
|
+
|
14
|
+
When 'I run this Scenario' do
|
15
|
+
# Nothing to be done.
|
16
|
+
end
|
17
|
+
|
18
|
+
Then 'the background step should have been executed' do
|
19
|
+
@background_step.must_equal true
|
20
|
+
end
|
21
|
+
|
22
|
+
Then 'the scenario step should have been executed' do
|
23
|
+
@scenario_step.must_equal true
|
24
|
+
end
|
25
|
+
|
26
|
+
Given 'Spinach has Background support' do
|
27
|
+
@background_step = true
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -5,12 +5,12 @@ class ExitStatus < Spinach::FeatureSteps
|
|
5
5
|
include Integration::SpinachRunner
|
6
6
|
|
7
7
|
Given "I have a feature that has no error or failure" do
|
8
|
-
write_file('features/success_feature.feature',
|
9
|
-
|
8
|
+
write_file('features/success_feature.feature', """
|
9
|
+
Feature: A success feature
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
Scenario: This is scenario will succeed
|
12
|
+
Then I succeed
|
13
|
+
""")
|
14
14
|
write_file('features/steps/success_feature.rb',
|
15
15
|
'class ASuccessFeature < Spinach::FeatureSteps
|
16
16
|
feature "A success feature"
|
@@ -21,12 +21,12 @@ class ExitStatus < Spinach::FeatureSteps
|
|
21
21
|
end
|
22
22
|
|
23
23
|
Given "I have a feature that has a failure" do
|
24
|
-
write_file('features/failure_feature.feature',
|
25
|
-
|
24
|
+
write_file('features/failure_feature.feature', """
|
25
|
+
Feature: A failure feature
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
Scenario: This is scenario will fail
|
28
|
+
Then I fail
|
29
|
+
""")
|
30
30
|
write_file('features/steps/failure_feature.rb',
|
31
31
|
'class AFailureFeature < Spinach::FeatureSteps
|
32
32
|
feature "A failure feature"
|
@@ -39,14 +39,13 @@ class ExitStatus < Spinach::FeatureSteps
|
|
39
39
|
|
40
40
|
When "I run it" do
|
41
41
|
run_feature @feature
|
42
|
-
all_stdout # Hack to get a correct exit status
|
43
42
|
end
|
44
43
|
|
45
44
|
Then "the exit status should be 0" do
|
46
|
-
last_exit_status.must_equal 0
|
45
|
+
@last_exit_status.must_equal 0
|
47
46
|
end
|
48
47
|
|
49
48
|
Then "the exit status should be 1" do
|
50
|
-
last_exit_status.must_equal 1
|
49
|
+
@last_exit_status.must_equal 1
|
51
50
|
end
|
52
51
|
end
|
@@ -5,13 +5,13 @@ class FeatureNameGuessing < Spinach::FeatureSteps
|
|
5
5
|
include Integration::SpinachRunner
|
6
6
|
|
7
7
|
Given 'I am writing a feature called "My cool feature"' do
|
8
|
-
write_file('features/my_cool_feature.feature',
|
9
|
-
|
8
|
+
write_file('features/my_cool_feature.feature', """
|
9
|
+
Feature: My cool feature
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
Scenario: This is scenario is cool
|
12
|
+
When this is so meta
|
13
|
+
Then the world is crazy
|
14
|
+
""")
|
15
15
|
end
|
16
16
|
|
17
17
|
And 'I write a class named "MyCoolFeature"' do
|
@@ -30,6 +30,6 @@ class FeatureNameGuessing < Spinach::FeatureSteps
|
|
30
30
|
end
|
31
31
|
|
32
32
|
Then 'I want "MyCoolFeature" class to be used to run it' do
|
33
|
-
last_exit_status.must_equal 0
|
33
|
+
@last_exit_status.must_equal 0
|
34
34
|
end
|
35
35
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'aruba/api'
|
2
|
-
|
3
1
|
class DisplayRunSummary < Spinach::FeatureSteps
|
4
2
|
|
5
3
|
feature 'automatic'
|
@@ -7,25 +5,27 @@ class DisplayRunSummary < Spinach::FeatureSteps
|
|
7
5
|
include Integration::SpinachRunner
|
8
6
|
|
9
7
|
Given "I have a feature that has some successful, undefined, failed and error steps" do
|
10
|
-
write_file('features/test_feature.feature',
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
8
|
+
write_file('features/test_feature.feature', """
|
9
|
+
|
10
|
+
Feature: A test feature
|
11
|
+
|
12
|
+
Scenario: Undefined scenario
|
13
|
+
Given I am a fool
|
14
|
+
When I jump from Codegrams roof
|
15
|
+
Then I must be pwned by floor
|
16
|
+
|
17
|
+
Scenario: Failed scenario
|
18
|
+
Given I love risk
|
19
|
+
When I jump from Codegrams roof
|
20
|
+
Then my parachute must open
|
21
|
+
Then I must not be pwned by floor
|
22
|
+
|
23
|
+
Scenario: Error scenario
|
24
|
+
Given I am not a fool
|
25
|
+
When I go downstairs
|
26
|
+
Then I must succeed
|
27
|
+
""")
|
28
|
+
|
29
29
|
write_file('features/steps/test_feature.rb',
|
30
30
|
'class ATestFeature < Spinach::FeatureSteps
|
31
31
|
feature "A test feature"
|
@@ -65,7 +65,7 @@ class DisplayRunSummary < Spinach::FeatureSteps
|
|
65
65
|
end
|
66
66
|
|
67
67
|
Then "I should see a summary with steps status information" do
|
68
|
-
|
68
|
+
@stdout.must_match(
|
69
69
|
/Summary:.*4.*Successful.*1.*Undefined.*1.*Failed.*1.*Error/
|
70
70
|
)
|
71
71
|
end
|
@@ -6,13 +6,13 @@ class ErrorReporting < Spinach::FeatureSteps
|
|
6
6
|
include Integration::ErrorReporting
|
7
7
|
|
8
8
|
Given "I have a feature with some failures" do
|
9
|
-
write_file('features/feature_with_failures.feature',
|
10
|
-
|
9
|
+
write_file('features/feature_with_failures.feature', """
|
10
|
+
Feature: Feature with failures
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
Scenario: This scenario will fail
|
13
|
+
Given true is false
|
14
|
+
Then remove all the files in my hard drive
|
15
|
+
""")
|
16
16
|
|
17
17
|
write_file('features/steps/failure_feature.rb',
|
18
18
|
'class FeatureWithFailures < Spinach::FeatureSteps
|
@@ -38,7 +38,7 @@ class ErrorReporting < Spinach::FeatureSteps
|
|
38
38
|
|
39
39
|
Then 'I should see the failure count along with their messages' do
|
40
40
|
check_error_messages(1)
|
41
|
-
all_stderr.wont_match /gems.*minitest.*assert_equal/
|
41
|
+
@all_stderr.wont_match /gems.*minitest.*assert_equal/
|
42
42
|
end
|
43
43
|
|
44
44
|
Then 'I should see the error count along with their messages and backtrace' do
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'aruba/api'
|
2
|
-
|
3
1
|
class ShowStepSourceLocation < Spinach::FeatureSteps
|
4
2
|
|
5
3
|
feature "Show step source location"
|
@@ -7,12 +5,13 @@ class ShowStepSourceLocation < Spinach::FeatureSteps
|
|
7
5
|
include Integration::SpinachRunner
|
8
6
|
|
9
7
|
Given "I have a feature that has no error or failure" do
|
10
|
-
write_file('features/success_feature.feature',
|
11
|
-
|
8
|
+
write_file('features/success_feature.feature', """
|
9
|
+
Feature: A success feature
|
10
|
+
|
11
|
+
Scenario: This is scenario will succeed
|
12
|
+
Then I succeed
|
13
|
+
""")
|
12
14
|
|
13
|
-
Scenario: This is scenario will succeed
|
14
|
-
Then I succeed
|
15
|
-
')
|
16
15
|
write_file('features/steps/success_feature.rb',
|
17
16
|
'class ASuccessFeature < Spinach::FeatureSteps
|
18
17
|
feature "A success feature"
|
@@ -27,18 +26,19 @@ class ShowStepSourceLocation < Spinach::FeatureSteps
|
|
27
26
|
end
|
28
27
|
|
29
28
|
Then "I should see the source location of each step of every scenario" do
|
30
|
-
|
29
|
+
@stdout.must_match(
|
31
30
|
/I succeed.*features\/steps\/success_feature\.rb.*3/
|
32
31
|
)
|
33
32
|
end
|
34
33
|
|
35
34
|
Given "I have a feature that has no error or failure and use external steps" do
|
36
|
-
write_file('features/success_feature.feature',
|
37
|
-
|
35
|
+
write_file('features/success_feature.feature', """
|
36
|
+
Feature: A feature that uses external steps
|
37
|
+
|
38
|
+
Scenario: This is scenario will succeed
|
39
|
+
Given this is a external step
|
40
|
+
""")
|
38
41
|
|
39
|
-
Scenario: This is scenario will succeed
|
40
|
-
Given this is a external step
|
41
|
-
')
|
42
42
|
write_file('features/steps/success_feature.rb',
|
43
43
|
'class AFeatureThatUsesExternalSteps < Spinach::FeatureSteps
|
44
44
|
feature "A feature that uses external steps"
|
@@ -54,8 +54,57 @@ class ShowStepSourceLocation < Spinach::FeatureSteps
|
|
54
54
|
end
|
55
55
|
|
56
56
|
Then "I should see the source location of each step, even external ones" do
|
57
|
-
|
57
|
+
@stdout.must_match(
|
58
58
|
/this is a external step.*features\/support\/external_steps\.rb.*3/
|
59
59
|
)
|
60
60
|
end
|
61
|
+
|
62
|
+
Given "I have a feature that has an error" do
|
63
|
+
write_file('features/error_feature.feature', """
|
64
|
+
Feature: An error feature
|
65
|
+
|
66
|
+
Scenario: This is scenario will not succeed
|
67
|
+
Then I do not succeed
|
68
|
+
""")
|
69
|
+
|
70
|
+
write_file('features/steps/error_feature.rb',
|
71
|
+
'class AnErrorFeature < Spinach::FeatureSteps
|
72
|
+
feature "An error feature"
|
73
|
+
Then "I do not succeed" do
|
74
|
+
i_do_not_exist.must_be_equal "Your Mumma"
|
75
|
+
end
|
76
|
+
end')
|
77
|
+
@feature = "features/error_feature.feature"
|
78
|
+
end
|
79
|
+
|
80
|
+
Then "I should see the source location of each step, even ones with errors" do
|
81
|
+
@stdout.must_match(
|
82
|
+
/I do not succeed.*features\/steps\/error_feature\.rb.*3/
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
86
|
+
Given "I have a feature that has a failure" do
|
87
|
+
write_file('features/failure_feature.feature', """
|
88
|
+
Feature: A failure feature
|
89
|
+
|
90
|
+
Scenario: This is scenario will not succeed
|
91
|
+
Then I do not succeed
|
92
|
+
""")
|
93
|
+
|
94
|
+
write_file('features/steps/failure_feature.rb',
|
95
|
+
'class AFailureFeature < Spinach::FeatureSteps
|
96
|
+
feature "A failure feature"
|
97
|
+
Then "I do not succeed" do
|
98
|
+
i_exist = "Your Pappa"
|
99
|
+
i_exist.must_be_equal "Your Mumma"
|
100
|
+
end
|
101
|
+
end')
|
102
|
+
@feature = "features/failure_feature.feature"
|
103
|
+
end
|
104
|
+
|
105
|
+
Then "I should see the source location of each step, even ones with failures" do
|
106
|
+
@stdout.must_match(
|
107
|
+
/I do not succeed.*features\/steps\/failure_feature\.rb.*3/
|
108
|
+
)
|
109
|
+
end
|
61
110
|
end
|