square-cucumber 0.3.12.2 → 0.3.93.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 +117 -4
- data/Manifest.txt +11 -0
- data/Rakefile +1 -1
- data/config/hoe.rb +3 -2
- data/cucumber.yml +2 -2
- data/examples/i18n/ko/features/addition.feature +5 -5
- data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +1 -1
- data/examples/i18n/pt/features/adicao.feature +4 -4
- data/examples/self_test/features/support/env.rb +2 -1
- data/examples/sinatra/features/support/env.rb +7 -1
- data/examples/steps_library/features/step_definitions/steps_lib1.rb +8 -0
- data/examples/steps_library/features/step_definitions/steps_lib2.rb +8 -0
- data/examples/tickets/features/step_definitons/tickets_steps.rb +15 -0
- data/examples/tickets/features/table_diffing.feature +13 -0
- data/examples/watir/features/step_definitons/search_steps.rb +5 -1
- data/features/cucumber_cli_diff_disabled.feature +2 -1
- data/features/html_formatter/a.html +5 -7
- data/features/junit_formatter.feature +21 -14
- data/features/profiles.feature +99 -0
- data/features/rake_task.feature +28 -0
- data/features/step_definitions/cucumber_steps.rb +28 -15
- data/features/steps_formatter.feature +25 -0
- data/features/support/env.rb +9 -5
- data/features/table_diffing.feature +45 -0
- data/features/unicode_table.feature +35 -0
- data/features/work_in_progress.feature +1 -0
- data/gem_tasks/contributors.rake +4 -0
- data/lib/cucumber/ast/background.rb +1 -0
- data/lib/cucumber/ast/comment.rb +1 -0
- data/lib/cucumber/ast/examples.rb +1 -0
- data/lib/cucumber/ast/feature.rb +10 -0
- data/lib/cucumber/ast/features.rb +6 -1
- data/lib/cucumber/ast/outline_table.rb +4 -1
- data/lib/cucumber/ast/py_string.rb +1 -1
- data/lib/cucumber/ast/scenario.rb +1 -0
- data/lib/cucumber/ast/scenario_outline.rb +2 -0
- data/lib/cucumber/ast/step.rb +5 -1
- data/lib/cucumber/ast/step_collection.rb +1 -0
- data/lib/cucumber/ast/step_invocation.rb +1 -0
- data/lib/cucumber/ast/table.rb +306 -52
- data/lib/cucumber/ast/tags.rb +1 -0
- data/lib/cucumber/ast/visitor.rb +2 -1
- data/lib/cucumber/cli/configuration.rb +28 -278
- data/lib/cucumber/cli/drb_client.rb +3 -1
- data/lib/cucumber/cli/language_help_formatter.rb +9 -7
- data/lib/cucumber/cli/main.rb +16 -2
- data/lib/cucumber/cli/options.rb +370 -0
- data/lib/cucumber/cli/profile_loader.rb +65 -0
- data/lib/cucumber/core_ext/instance_exec.rb +8 -5
- data/lib/cucumber/feature_file.rb +7 -1
- data/lib/cucumber/filter.rb +2 -2
- data/lib/cucumber/formatter/ansicolor.rb +42 -9
- data/lib/cucumber/formatter/console.rb +1 -1
- data/lib/cucumber/formatter/html.rb +12 -10
- data/lib/cucumber/formatter/junit.rb +63 -26
- data/lib/cucumber/formatter/pretty.rb +20 -5
- data/lib/cucumber/formatter/progress.rb +1 -1
- data/lib/cucumber/formatter/steps.rb +49 -0
- data/lib/cucumber/languages.yml +6 -6
- data/lib/cucumber/parser/feature.rb +90 -63
- data/lib/cucumber/parser/feature.tt +28 -1
- data/lib/cucumber/parser/i18n/language.rb +12 -5
- data/lib/cucumber/parser/table.rb +25 -25
- data/lib/cucumber/rake/task.rb +9 -3
- data/lib/cucumber/step_definition.rb +1 -1
- data/lib/cucumber/step_match.rb +1 -1
- data/lib/cucumber/step_mother.rb +3 -1
- data/lib/cucumber/version.rb +2 -2
- data/lib/cucumber/webrat/table_locator.rb +66 -0
- data/rails_generators/cucumber/cucumber_generator.rb +5 -1
- data/rails_generators/cucumber/templates/cucumber +3 -2
- data/rails_generators/cucumber/templates/cucumber.rake +18 -6
- data/rails_generators/cucumber/templates/cucumber_environment.rb +7 -4
- data/rails_generators/cucumber/templates/env.rb +1 -0
- data/rails_generators/cucumber/templates/spork_env.rb +1 -0
- data/rails_generators/cucumber/templates/webrat_steps.rb +22 -0
- data/rails_generators/feature/templates/feature.erb +1 -1
- data/rails_generators/feature/templates/steps.erb +2 -8
- data/spec/cucumber/ast/table_spec.rb +169 -0
- data/spec/cucumber/cli/configuration_spec.rb +144 -101
- data/spec/cucumber/cli/main_spec.rb +14 -5
- data/spec/cucumber/cli/options_spec.rb +311 -0
- data/spec/cucumber/cli/profile_loader_spec.rb +10 -0
- data/spec/cucumber/core_ext/proc_spec.rb +16 -2
- data/spec/cucumber/formatter/html_spec.rb +18 -0
- data/spec/cucumber/formatter/progress_spec.rb +2 -2
- data/spec/cucumber/parser/table_parser_spec.rb +1 -1
- data/spec/spec.opts +3 -1
- metadata +18 -4
- data/lib/cucumber/webrat/mechanize_world.rb +0 -82
@@ -6,42 +6,49 @@ Feature: JUnit output formatter
|
|
6
6
|
Given I am in junit
|
7
7
|
And the tmp directory is empty
|
8
8
|
|
9
|
-
@mri186
|
9
|
+
@mri186
|
10
10
|
Scenario: one feature, one passing scenario, one failing scenario
|
11
11
|
When I run cucumber --format junit --out tmp/ features/one_passing_one_failing.feature
|
12
12
|
Then it should fail with
|
13
13
|
"""
|
14
14
|
|
15
15
|
"""
|
16
|
-
And "examples/junit/tmp/TEST-one_passing_one_failing.xml" should contain
|
16
|
+
And "examples/junit/tmp/TEST-one_passing_one_failing.xml" with junit duration "0.005" should contain
|
17
17
|
"""
|
18
|
-
<?xml version="1.0"
|
19
|
-
<testsuite errors="0"
|
20
|
-
<testcase
|
18
|
+
<?xml encoding="UTF-8" version="1.0"?>
|
19
|
+
<testsuite errors="0" failures="1" name="One passing scenario, one failing scenario" tests="2" time="0.005">
|
20
|
+
<testcase classname="One passing scenario, one failing scenario.Passing" name="Passing" time="0.005">
|
21
21
|
</testcase>
|
22
|
-
<testcase
|
23
|
-
<failure message="
|
22
|
+
<testcase classname="One passing scenario, one failing scenario.Failing" name="Failing" time="0.005">
|
23
|
+
<failure message="failed Failing" type="failed">
|
24
|
+
Scenario: Failing
|
25
|
+
|
26
|
+
Given a failing scenario
|
27
|
+
|
28
|
+
Message:
|
24
29
|
(RuntimeError)
|
25
30
|
./features/step_definitions/steps.rb:6:in `/a failing scenario/'
|
26
31
|
features/one_passing_one_failing.feature:7:in `Given a failing scenario' </failure>
|
27
32
|
</testcase>
|
28
33
|
</testsuite>
|
29
|
-
|
34
|
+
|
30
35
|
"""
|
31
36
|
|
32
|
-
@mri186
|
37
|
+
@mri186
|
33
38
|
Scenario: pending step
|
34
39
|
When I run cucumber --format junit --out tmp/ features/pending.feature
|
35
40
|
Then it should pass with
|
36
41
|
"""
|
37
42
|
|
38
43
|
"""
|
39
|
-
And "examples/junit/tmp/TEST-pending.xml" should contain
|
44
|
+
And "examples/junit/tmp/TEST-pending.xml" with junit duration "0.009" should contain
|
40
45
|
"""
|
41
|
-
<?xml version="1.0"
|
42
|
-
<testsuite errors="0"
|
43
|
-
<testcase
|
44
|
-
<failure message="
|
46
|
+
<?xml encoding="UTF-8" version="1.0"?>
|
47
|
+
<testsuite errors="0" failures="1" name="Pending step" tests="1" time="0.009">
|
48
|
+
<testcase classname="Pending step.Pending" name="Pending" time="0.009">
|
49
|
+
<failure message="pending Pending" type="pending">
|
50
|
+
Scenario: Pending
|
51
|
+
|
45
52
|
TODO (Cucumber::Pending)
|
46
53
|
./features/step_definitions/steps.rb:10:in `/a pending step/'
|
47
54
|
features/pending.feature:4:in `Given a pending step' </failure>
|
@@ -0,0 +1,99 @@
|
|
1
|
+
Feature: Profiles
|
2
|
+
In order to save time and prevent carpal tunnel syndrome
|
3
|
+
Cucumber users can save and reuse commonly used cucumber flags in a 'cucumber.yml' file.
|
4
|
+
These named arguments are called profiles and the yml file should be in the root of your project.
|
5
|
+
Any cucumber argument is valid in a profile. To see all the available flags type 'cucumber --help'
|
6
|
+
For more information about profiles please see the wiki:
|
7
|
+
http://wiki.github.com/aslakhellesoy/cucumber/cucumberyml
|
8
|
+
|
9
|
+
Background: Basic App
|
10
|
+
Given a standard Cucumber project directory structure
|
11
|
+
And a file named "features/sample.feature" with:
|
12
|
+
"""
|
13
|
+
Feature: Sample
|
14
|
+
Scenario: this is a test
|
15
|
+
Given I am just testing stuff
|
16
|
+
"""
|
17
|
+
And a file named "features/support/env.rb"
|
18
|
+
And a file named "features/support/super_env.rb"
|
19
|
+
And the following profiles are defined:
|
20
|
+
"""
|
21
|
+
default: features/sample.feature --require features/support/env.rb -v
|
22
|
+
super: features/sample.feature --require features/support/super_env.rb -v
|
23
|
+
"""
|
24
|
+
|
25
|
+
Scenario: Explicitly defining a profile to run
|
26
|
+
When I run cucumber features/sample.feature --profile super
|
27
|
+
Then the output should contain
|
28
|
+
"""
|
29
|
+
Using the super profile...
|
30
|
+
"""
|
31
|
+
And exactly these files should be loaded: features/support/super_env.rb
|
32
|
+
|
33
|
+
Scenario: Defining multiple profiles to run
|
34
|
+
When I run cucumber features/sample.feature --profile default --profile super
|
35
|
+
Then the output should contain
|
36
|
+
"""
|
37
|
+
Using the default and super profiles...
|
38
|
+
"""
|
39
|
+
And exactly these files should be loaded: features/support/env.rb, features/support/super_env.rb
|
40
|
+
|
41
|
+
Scenario: Arguments passed in but no profile specified
|
42
|
+
When I run cucumber -v
|
43
|
+
Then the default profile should be used
|
44
|
+
And exactly these files should be loaded: features/support/env.rb
|
45
|
+
|
46
|
+
Scenario: Trying to use a missing profile
|
47
|
+
When I run cucumber -p foo
|
48
|
+
Then STDERR should be
|
49
|
+
"""
|
50
|
+
Could not find profile: 'foo'
|
51
|
+
|
52
|
+
Defined profiles in cucumber.yml:
|
53
|
+
* default
|
54
|
+
* super
|
55
|
+
|
56
|
+
"""
|
57
|
+
|
58
|
+
Scenario Outline: Disabling the default profile
|
59
|
+
When I run cucumber -v features/ <Flag>
|
60
|
+
Then the output should contain
|
61
|
+
"""
|
62
|
+
Disabling profiles...
|
63
|
+
"""
|
64
|
+
And exactly these files should be loaded: features/support/env.rb, features/support/super_env.rb
|
65
|
+
|
66
|
+
Examples:
|
67
|
+
| Flag |
|
68
|
+
| -P |
|
69
|
+
| --no-profile |
|
70
|
+
|
71
|
+
|
72
|
+
Scenario: Overriding the profile's features to run
|
73
|
+
Given a file named "features/another.feature" with:
|
74
|
+
"""
|
75
|
+
Feature: Just this one should be ran
|
76
|
+
"""
|
77
|
+
When I run cucumber -p default features/another.feature
|
78
|
+
Then exactly these features should be ran: features/another.feature
|
79
|
+
|
80
|
+
Scenario: Overriding the profile's formatter
|
81
|
+
You will most likely want to define a formatter in your default formatter.
|
82
|
+
However, you often want to run your features with a different formatter
|
83
|
+
yet still use the other the other arguments in the profile. Cucumber will
|
84
|
+
allow you to do this by giving precedence to the formatter specified on the
|
85
|
+
command line and override the one in the profile.
|
86
|
+
|
87
|
+
Given the following profiles are defined:
|
88
|
+
"""
|
89
|
+
default: features/sample.feature --require features/support/env.rb -v --format profile
|
90
|
+
"""
|
91
|
+
When I run cucumber features --format pretty
|
92
|
+
And the output should contain
|
93
|
+
"""
|
94
|
+
Feature: Sample
|
95
|
+
"""
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
data/features/rake_task.feature
CHANGED
@@ -148,3 +148,31 @@ Feature: Rake task
|
|
148
148
|
"""
|
149
149
|
* features/support/dont_require_me.rb
|
150
150
|
"""
|
151
|
+
|
152
|
+
Scenario: feature files with spaces
|
153
|
+
Given a file named "features/spaces are nasty.feature" with:
|
154
|
+
"""
|
155
|
+
Feature: The futures green
|
156
|
+
|
157
|
+
Scenario: Orange
|
158
|
+
Given this is missing
|
159
|
+
"""
|
160
|
+
And a file named "Rakefile" with:
|
161
|
+
"""
|
162
|
+
$LOAD_PATH.unshift(CUCUMBER_LIB)
|
163
|
+
require 'cucumber/rake/task'
|
164
|
+
|
165
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
166
|
+
t.cucumber_opts = %w{--quiet --no-color}
|
167
|
+
end
|
168
|
+
"""
|
169
|
+
When I run rake features
|
170
|
+
Then it should pass
|
171
|
+
And the output should contain
|
172
|
+
"""
|
173
|
+
Feature: The futures green
|
174
|
+
|
175
|
+
Scenario: Orange
|
176
|
+
Given this is missing
|
177
|
+
|
178
|
+
"""
|
@@ -39,7 +39,6 @@ Given /^I am not running (?:.*) in the background$/ do
|
|
39
39
|
# no-op
|
40
40
|
end
|
41
41
|
|
42
|
-
|
43
42
|
When /^I run cucumber (.*)$/ do |cucumber_opts|
|
44
43
|
run "#{Cucumber::RUBY_BINARY} #{Cucumber::BINARY} --no-color #{cucumber_opts}"
|
45
44
|
end
|
@@ -75,23 +74,17 @@ Then /^the output should be$/ do |text|
|
|
75
74
|
last_stdout.should == text
|
76
75
|
end
|
77
76
|
|
78
|
-
Then /^"(
|
79
|
-
|
80
|
-
t.write(xml)
|
81
|
-
t.flush
|
82
|
-
t.close
|
83
|
-
cmd = "diffxml #{t.path} #{file}"
|
84
|
-
diff = `#{cmd}`
|
85
|
-
if diff =~ /<delta>/m
|
86
|
-
raise diff + "\nXML WAS:\n" + IO.read(file)
|
87
|
-
end
|
77
|
+
Then /^"([^\"]*)" should contain$/ do |file, text|
|
78
|
+
strip_duration(IO.read(file)).should == text
|
88
79
|
end
|
89
80
|
|
90
|
-
Then /^"(
|
91
|
-
|
81
|
+
Then /^"([^\"]*)" with junit duration "([^\"]*)" should contain$/ do |actual_file, duration_replacement, text|
|
82
|
+
actual = IO.read(actual_file)
|
83
|
+
actual = replace_junit_duration(actual, duration_replacement)
|
84
|
+
actual.should == text
|
92
85
|
end
|
93
86
|
|
94
|
-
Then /^"(
|
87
|
+
Then /^"([^\"]*)" should match$/ do |file, text|
|
95
88
|
IO.read(file).should =~ Regexp.new(text)
|
96
89
|
end
|
97
90
|
|
@@ -111,11 +104,15 @@ Then /^STDERR should not match$/ do |text|
|
|
111
104
|
last_stderr.should_not =~ /#{text}/
|
112
105
|
end
|
113
106
|
|
107
|
+
Then /^STDERR should be$/ do |text|
|
108
|
+
last_stderr.should == text
|
109
|
+
end
|
110
|
+
|
114
111
|
Then /^STDERR should be empty$/ do
|
115
112
|
last_stderr.should == ""
|
116
113
|
end
|
117
114
|
|
118
|
-
Then /^"(
|
115
|
+
Then /^"([^\"]*)" should exist$/ do |file|
|
119
116
|
File.exists?(file).should be_true
|
120
117
|
FileUtils.rm(file)
|
121
118
|
end
|
@@ -128,3 +125,19 @@ Then /^"([^\"]*)" should be required$/ do |file_name|
|
|
128
125
|
last_stdout.should include("* #{file_name}")
|
129
126
|
end
|
130
127
|
|
128
|
+
Then /^exactly these files should be loaded:\s*(.*)$/ do |files|
|
129
|
+
last_stdout.scan(/^ \* (.*\.rb)$/).flatten.should == files.split(/,\s+/)
|
130
|
+
end
|
131
|
+
|
132
|
+
Then /^exactly these features should be ran:\s*(.*)$/ do |files|
|
133
|
+
last_stdout.scan(/^ \* (.*\.feature)$/).flatten.should == files.split(/,\s+/)
|
134
|
+
end
|
135
|
+
|
136
|
+
Then /^the (.*) profile should be used$/ do |profile|
|
137
|
+
last_stdout.should =~ /Using the #{profile} profile/
|
138
|
+
end
|
139
|
+
|
140
|
+
Then /^print output$/ do
|
141
|
+
puts last_stdout
|
142
|
+
end
|
143
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Feature: --formatter steps option - Steps Formatter
|
2
|
+
In order to easily see which steps are already defined,
|
3
|
+
specially when using 3rd party steps libraries,
|
4
|
+
Cucumber should show the available steps in a user-friendly format
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given I am in steps_library
|
8
|
+
|
9
|
+
Scenario: Printing steps
|
10
|
+
When I run cucumber -f steps features
|
11
|
+
Then it should pass with
|
12
|
+
"""
|
13
|
+
features/step_definitions/steps_lib1.rb
|
14
|
+
/^I defined a first step$/ # features/step_definitions/steps_lib1.rb:1
|
15
|
+
/^I define a second step$/ # features/step_definitions/steps_lib1.rb:4
|
16
|
+
/^I should also have a third step$/ # features/step_definitions/steps_lib1.rb:7
|
17
|
+
|
18
|
+
features/step_definitions/steps_lib2.rb
|
19
|
+
/^I defined a step 4$/ # features/step_definitions/steps_lib2.rb:1
|
20
|
+
/^I create a step 5$/ # features/step_definitions/steps_lib2.rb:4
|
21
|
+
/^I should be too tired for step 6$/ # features/step_definitions/steps_lib2.rb:7
|
22
|
+
|
23
|
+
6 step definition(s) in 2 source file(s).
|
24
|
+
|
25
|
+
"""
|
data/features/support/env.rb
CHANGED
@@ -50,6 +50,10 @@ class CucumberWorld
|
|
50
50
|
s.gsub(/\d+m\d+\.\d+s/m, replacement)
|
51
51
|
end
|
52
52
|
|
53
|
+
def replace_junit_duration(s, replacement)
|
54
|
+
s.gsub(/\d+\.\d\d+/m, replacement)
|
55
|
+
end
|
56
|
+
|
53
57
|
def create_file(file_name, file_content)
|
54
58
|
file_content.gsub!("CUCUMBER_LIB", "'#{cucumber_lib_dir}'") # Some files, such as Rakefiles need to use the lib dir
|
55
59
|
in_current_dir do
|
@@ -70,6 +74,11 @@ class CucumberWorld
|
|
70
74
|
stderr_file.close
|
71
75
|
in_current_dir do
|
72
76
|
@last_stdout = `#{command} 2> #{stderr_file.path}`
|
77
|
+
mode = Cucumber::RUBY_1_9 ? {:external_encoding=>"UTF-8"} : 'r'
|
78
|
+
IO.popen("#{command} 2> #{stderr_file.path}", mode) do |io|
|
79
|
+
@last_stdout = io.read
|
80
|
+
end
|
81
|
+
|
73
82
|
@last_exit_status = $?.exitstatus
|
74
83
|
end
|
75
84
|
@last_stderr = IO.read(stderr_file.path)
|
@@ -113,8 +122,3 @@ end
|
|
113
122
|
After do
|
114
123
|
terminate_background_jobs
|
115
124
|
end
|
116
|
-
|
117
|
-
Before('@diffxml') do
|
118
|
-
`diffxml --version`
|
119
|
-
raise "Please install diffxml from http://diffxml.sourceforge.net/" if $? != 0
|
120
|
-
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
Feature: Table diffing
|
2
|
+
In order to more easily compare data in tables
|
3
|
+
step definition writers should be able to diff
|
4
|
+
a table with expected data and see the diff inline
|
5
|
+
|
6
|
+
Scenario: Extra row
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/tables.feature" with:
|
9
|
+
"""
|
10
|
+
Feature: Tables
|
11
|
+
Scenario: Extra row
|
12
|
+
Then the table should be:
|
13
|
+
| x | y |
|
14
|
+
| a | b |
|
15
|
+
"""
|
16
|
+
And a file named "features/step_definitions/table_steps.rb" with:
|
17
|
+
"""
|
18
|
+
Then /the table should be:/ do |expected|
|
19
|
+
expected.diff!(table(%{
|
20
|
+
| x | y |
|
21
|
+
| a | c |
|
22
|
+
}))
|
23
|
+
end
|
24
|
+
"""
|
25
|
+
When I run cucumber -i features/tables.feature
|
26
|
+
Then it should fail with
|
27
|
+
"""
|
28
|
+
Feature: Tables
|
29
|
+
|
30
|
+
Scenario: Extra row # features/tables.feature:2
|
31
|
+
Then the table should be: # features/step_definitions/table_steps.rb:1
|
32
|
+
| x | y |
|
33
|
+
| a | b |
|
34
|
+
| a | c |
|
35
|
+
Tables were not identical (RuntimeError)
|
36
|
+
./features/step_definitions/table_steps.rb:2:in `/the table should be:/'
|
37
|
+
features/tables.feature:3:in `Then the table should be:'
|
38
|
+
|
39
|
+
Failing Scenarios:
|
40
|
+
cucumber features/tables.feature:2 # Scenario: Extra row
|
41
|
+
|
42
|
+
1 scenario (1 failed)
|
43
|
+
1 step (1 failed)
|
44
|
+
|
45
|
+
"""
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Feature: Unicode in tables
|
2
|
+
In order to please the whole world,
|
3
|
+
unicode characters in tables should be
|
4
|
+
properly aligned
|
5
|
+
|
6
|
+
Scenario: All sorts of weird stuff
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/unicode.feature" with:
|
9
|
+
"""
|
10
|
+
Feature: Featuring unicode
|
11
|
+
|
12
|
+
Scenario: So what, whatever
|
13
|
+
Given passing
|
14
|
+
| Brüno | abc |
|
15
|
+
| Bruno | æøå |
|
16
|
+
"""
|
17
|
+
And a file named "features/env.rb" with:
|
18
|
+
"""
|
19
|
+
$KCODE='u'
|
20
|
+
"""
|
21
|
+
When I run cucumber -q --dry-run features/unicode.feature
|
22
|
+
Then it should pass with
|
23
|
+
"""
|
24
|
+
Feature: Featuring unicode
|
25
|
+
|
26
|
+
Scenario: So what, whatever
|
27
|
+
Given passing
|
28
|
+
| Brüno | abc |
|
29
|
+
| Bruno | æøå |
|
30
|
+
|
31
|
+
1 scenario (1 undefined)
|
32
|
+
1 step (1 undefined)
|
33
|
+
|
34
|
+
"""
|
35
|
+
|
@@ -23,6 +23,7 @@ module Cucumber
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def accept(visitor)
|
26
|
+
return if $cucumber_interrupted
|
26
27
|
visitor.visit_comment(@comment) unless @comment.empty?
|
27
28
|
visitor.visit_background_name(@keyword, @name, file_colon_line(@line), source_indent(first_line_length))
|
28
29
|
visitor.step_mother.before(hook_context)
|