kosmas58-cucumber 0.3.99 → 0.3.100
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 +17 -10
- data/Manifest.txt +12 -2
- data/examples/i18n/uz/Rakefile +6 -0
- data/examples/i18n/uz/features/addition.feature +10 -0
- data/examples/i18n/uz/features/consecutive_calculations.feature +17 -0
- data/examples/i18n/uz/features/division.feature +17 -0
- data/examples/i18n/uz/features/step_definitons/calculator_steps.rb +19 -0
- data/examples/i18n/uz/features/support/env.rb +6 -0
- data/examples/i18n/uz/features/support/world.rb +8 -0
- data/examples/i18n/uz/lib/calculator.rb +24 -0
- data/examples/self_test/list-of-features.txt +1 -0
- data/features/{after_block_exceptions.feature → exception_in_after_block.feature} +17 -17
- data/features/{after_step_block_exceptions.feature → exception_in_after_step_block.feature} +9 -9
- data/features/exception_in_before_block.feature +47 -0
- data/lib/cucumber/ast/scenario.rb +42 -18
- data/lib/cucumber/ast/step_invocation.rb +12 -6
- data/lib/cucumber/cli/configuration.rb +15 -0
- data/lib/cucumber/cli/main.rb +1 -16
- data/lib/cucumber/languages.yml +14 -0
- data/lib/cucumber/step_mother.rb +0 -1
- data/lib/cucumber/version.rb +1 -1
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +9 -0
- metadata +15 -4
data/History.txt
CHANGED
@@ -1,8 +1,15 @@
|
|
1
|
-
==
|
1
|
+
== 0.3.100 2009-09-09
|
2
|
+
|
3
|
+
The JavaZone release!
|
2
4
|
|
3
5
|
=== New Features
|
6
|
+
* Added support for Uzbek (msarvar)
|
4
7
|
* The file argument on the cucumber command line will replace contents of file on cli if file is prefixed with @ (Tero Tilus)
|
5
8
|
|
9
|
+
=== Bugfixes
|
10
|
+
* Backtraces on JRuby are handled in a cleaner way when the exception comes from Java (NativeException). (Aslak Hellesøy)
|
11
|
+
* When exceptions occur in a Before block the rest of the scenario is now skipped (#331 Matt Wynne)
|
12
|
+
|
6
13
|
== 0.3.99 2009-09-03
|
7
14
|
|
8
15
|
=== New Features
|
@@ -68,7 +75,7 @@ data in your HTML with a Cucumber table using Cucumber::Ast::Table#diff!
|
|
68
75
|
This release also fixes several bugs related to --drb (Spork) and profiles (cucumber.yml)
|
69
76
|
|
70
77
|
=== Bug Fixes
|
71
|
-
* --guess will always prefer the longest regexp with no groups if they exist.
|
78
|
+
* --guess will always prefer the longest regexp with no groups if they exist.
|
72
79
|
* Prevent delays if a NoMethodError is raise in a step definition. Define a light #inspect in World. (#374 Aslak Hellesøy)
|
73
80
|
* Restore 'features' as the default feature running path. (#412 Ben Mabey)
|
74
81
|
* --drb degrades gracefully when no drb server is running and no formatter is provided. (#410 Ben Mabey)
|
@@ -76,7 +83,7 @@ This release also fixes several bugs related to --drb (Spork) and profiles (cucu
|
|
76
83
|
* Resolved infinite loop problem when --drb was defined in a profile. (#408 Ben Mabey)
|
77
84
|
|
78
85
|
=== New Features
|
79
|
-
* Cucumber::World#table has been overloaded to work with 2D Array in addition to a table String to be parsed.
|
86
|
+
* Cucumber::World#table has been overloaded to work with 2D Array in addition to a table String to be parsed.
|
80
87
|
* New When /^I fill in the following:$/ step definition for Webrat. Useful for filling out a form with a Table. (Aslak Hellesøy)
|
81
88
|
* The object returned by element_at (Webrat::Element) has a #to_table that works for table, dl, ol and ul. (Aslak Hellesøy)
|
82
89
|
* An explanation of why failures are ok is printed when --wip is used. (Aslak Hellesøy)
|
@@ -104,7 +111,7 @@ So upgrade today and get into the habit of tagging new features with @wip (or in
|
|
104
111
|
You'll achieve better flow this way.
|
105
112
|
|
106
113
|
=== New features
|
107
|
-
* Support limiting the number of feature elements with certain tags (#353 Joseph Wilk)
|
114
|
+
* Support limiting the number of feature elements with certain tags (#353 Joseph Wilk)
|
108
115
|
* script/generate cucumber sets up 'cucumber:ok' and 'cucumber:wip' tasks and deprecates 'features'. More Kanban love. (#344 Aslak Hellesøy)
|
109
116
|
* Better JUnit formatter: feature->testsuite, scenario->testcase. Better timing and support for background and scenario outline. (Mads Buus Westmark)
|
110
117
|
* Added examples/python that uses rubypython. (Aslak Hellesøy)
|
@@ -127,8 +134,8 @@ Highlights in this release: Improved profile handling (cucumber.yml) and a fix f
|
|
127
134
|
* click_link_within(parent, link) webrat step (Joakim Kolsjö)
|
128
135
|
|
129
136
|
=== Bugfixes
|
130
|
-
* script/cucumber correctly loads the gem's binary if the plugin isn't installed.
|
131
|
-
* Cucumber hangs waiting for Ctrl+C if an Error is raised. (#374 Aslak Hellesøy)
|
137
|
+
* script/cucumber correctly loads the gem's binary if the plugin isn't installed.
|
138
|
+
* Cucumber hangs waiting for Ctrl+C if an Error is raised. (#374 Aslak Hellesøy)
|
132
139
|
|
133
140
|
== 0.3.92 2009-07-29
|
134
141
|
|
@@ -202,7 +209,7 @@ or simply another Ast::Table object. Here is a simple example:
|
|
202
209
|
expected_cukes_table.diff!(actual_table)
|
203
210
|
end
|
204
211
|
|
205
|
-
As an extra bonus we provide Webrat users with a new #table_at(selector) method that you can use to transform
|
212
|
+
As an extra bonus we provide Webrat users with a new #table_at(selector) method that you can use to transform
|
206
213
|
an HTML table into an Array of Array, so that you can easily compare the contents of your HTML table to
|
207
214
|
expected data passed to a step. Here is an example:
|
208
215
|
|
@@ -211,7 +218,7 @@ expected data passed to a step. Here is an example:
|
|
211
218
|
end
|
212
219
|
|
213
220
|
You can do the same trick to compare data from a Rails ActiveRecord table (although this is not a
|
214
|
-
recommended practice - your Then steps should compare against what users *see*, not what's in the
|
221
|
+
recommended practice - your Then steps should compare against what users *see*, not what's in the
|
215
222
|
database):
|
216
223
|
|
217
224
|
# This requires that you use the column names in the header of the plain text expected table
|
@@ -248,7 +255,7 @@ This release also has several bugfixes related to --format and Before/After hook
|
|
248
255
|
=== New Features
|
249
256
|
* I should see should support regexes (#382 John Ferlito)
|
250
257
|
* Access to scenario outline name from After hook scenario parameter (#342 Aslak Hellesøy)
|
251
|
-
* Allow multiple --tags switches to be passed
|
258
|
+
* Allow multiple --tags switches to be passed
|
252
259
|
* Load step definitions from vendored gems and plugins (#388 Mike Burns)
|
253
260
|
* New --format steps formatter. Variant of the usage formatter that lists available step definitions (Demetrius Nunes)
|
254
261
|
* Possibility to specify scenario language as part of the .feature file (#345 Aslak Hellesøy)
|
@@ -912,7 +919,7 @@ spaces removed too.
|
|
912
919
|
== 0.1.8 2008-10-18
|
913
920
|
|
914
921
|
This release extends the support for tables. PLEASE NOTE THAT TABLES ARE STILL EXPERIMENTAL.
|
915
|
-
In previous releases it has been possible to use tables to define "more examples" of a scenario in
|
922
|
+
In previous releases it has been possible to use tables to define "more examples" of a scenario in
|
916
923
|
a FIT-style column fixture kind of way. Now you can also use tables as arguments to steps.
|
917
924
|
|
918
925
|
Tables used to define more examples after a scenario must now be prefixed. In English it looks like this:
|
data/Manifest.txt
CHANGED
@@ -147,6 +147,14 @@ examples/i18n/sk/features/addition.feature
|
|
147
147
|
examples/i18n/sk/features/division.feature
|
148
148
|
examples/i18n/sk/features/step_definitons/calculator_steps.rb
|
149
149
|
examples/i18n/sk/lib/calculator.rb
|
150
|
+
examples/i18n/uz/Rakefile
|
151
|
+
examples/i18n/uz/features/addition.feature
|
152
|
+
examples/i18n/uz/features/consecutive_calculations.feature
|
153
|
+
examples/i18n/uz/features/division.feature
|
154
|
+
examples/i18n/uz/features/step_definitons/calculator_steps.rb
|
155
|
+
examples/i18n/uz/features/support/env.rb
|
156
|
+
examples/i18n/uz/features/support/world.rb
|
157
|
+
examples/i18n/uz/lib/calculator.rb
|
150
158
|
examples/i18n/zh-CN/Rakefile
|
151
159
|
examples/i18n/zh-CN/features/addition.feature
|
152
160
|
examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb
|
@@ -204,6 +212,7 @@ examples/self_test/features/support/env.rb
|
|
204
212
|
examples/self_test/features/tags_sample.feature
|
205
213
|
examples/self_test/features/tons_of_cukes.feature
|
206
214
|
examples/self_test/features/undefined_multiline_args.feature
|
215
|
+
examples/self_test/list-of-features.txt
|
207
216
|
examples/sinatra/README.textile
|
208
217
|
examples/sinatra/Rakefile
|
209
218
|
examples/sinatra/app.rb
|
@@ -253,8 +262,6 @@ examples/watir/Rakefile
|
|
253
262
|
examples/watir/features/search.feature
|
254
263
|
examples/watir/features/step_definitons/search_steps.rb
|
255
264
|
examples/watir/features/support/env.rb
|
256
|
-
features/after_block_exceptions.feature
|
257
|
-
features/after_step_block_exceptions.feature
|
258
265
|
features/background.feature
|
259
266
|
features/bug_371.feature
|
260
267
|
features/cucumber_cli.feature
|
@@ -262,6 +269,9 @@ features/cucumber_cli_diff_disabled.feature
|
|
262
269
|
features/cucumber_cli_outlines.feature
|
263
270
|
features/custom_formatter.feature
|
264
271
|
features/drb_server_integration.feature
|
272
|
+
features/exception_in_after_block.feature
|
273
|
+
features/exception_in_after_step_block.feature
|
274
|
+
features/exception_in_before_block.feature
|
265
275
|
features/exclude_files.feature
|
266
276
|
features/expand.feature
|
267
277
|
features/html_formatter.feature
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# language: uz
|
2
|
+
Функционал: Сонларни кушиш
|
3
|
+
Хаелда кушмаслик учун
|
4
|
+
Купчилик сонларни атомат равищда кушишни истайди
|
5
|
+
|
6
|
+
Сценарий: Икки бутун сонни кушиш
|
7
|
+
Агар 50 сонини киритсам
|
8
|
+
Ва ундан сунг 70 сонини киритсам
|
9
|
+
Агар "+" боссам
|
10
|
+
Унда жавоб 120 сони булиши керак
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# language: uz
|
2
|
+
Функционал: Кетма кет хисобот
|
3
|
+
Мураккаб амалларни хисоблаш учун
|
4
|
+
Ишлатувчилар олдинги жавоблар устидан амаллар бажармокчилардыдущей операций
|
5
|
+
|
6
|
+
Тарих:
|
7
|
+
Агар 3 ва 5 сонини кушсам
|
8
|
+
|
9
|
+
Сценарий: охирги жавоб билан кушиш амали
|
10
|
+
Агар 4 сонини киритсам
|
11
|
+
Ва "+"ни боссам
|
12
|
+
Унда жавоб 12 сони булиши керак
|
13
|
+
|
14
|
+
Сценарий: охирги жавобни булиш
|
15
|
+
Агар 2 сонини киритсам
|
16
|
+
Ва "/"ни боссам
|
17
|
+
Унда жавоб 4 сони булиши керак
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# language: uz
|
2
|
+
Функционал: Сонларни булиш
|
3
|
+
Булиш кийин амал булганлиги сабабли
|
4
|
+
Одамларга бу амални калькуляторда килишни имконини бериш керак
|
5
|
+
|
6
|
+
Сценарий структураси: Бутун сонли булиш
|
7
|
+
Агар ман <булинувчи> сонини киритсам
|
8
|
+
Ва унда сунг <булувчи> сонини киритсам
|
9
|
+
Агар "/"ни боссам
|
10
|
+
Унда жавоб <булинма> сони булиши керак
|
11
|
+
|
12
|
+
Мисоллар:
|
13
|
+
| булинувчи | булувчи | булинма |
|
14
|
+
| 100 | 2 | 50 |
|
15
|
+
| 28 | 7 | 4 |
|
16
|
+
| 0 | 5 | 0 |
|
17
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
Агар /(\d+) сонини киритсам/ do |сон|
|
4
|
+
calc.push сон.to_i
|
5
|
+
end
|
6
|
+
|
7
|
+
Ва /"(.*)"(.*) боссам/ do |операция, _|
|
8
|
+
calc.send операция
|
9
|
+
end
|
10
|
+
|
11
|
+
Унда /жавоб (\d+) сони булиши керак/ do |жавоб|
|
12
|
+
calc.result.should == жавоб.to_f
|
13
|
+
end
|
14
|
+
|
15
|
+
Агар /(\d+) ва (\d+) сонини кушсам/ do |кушилувчи1, кушилувчи2|
|
16
|
+
Агар %{#{кушилувчи1} сонини киритсам}
|
17
|
+
Агар %{ундан сунг #{кушилувчи2} сонини киритсам}
|
18
|
+
Агар %{"+"ни боссам}
|
19
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Calculator
|
4
|
+
def initialize
|
5
|
+
@stack = []
|
6
|
+
end
|
7
|
+
|
8
|
+
def push(arg)
|
9
|
+
@stack.push arg
|
10
|
+
end
|
11
|
+
|
12
|
+
def result
|
13
|
+
@stack.last
|
14
|
+
end
|
15
|
+
|
16
|
+
def +
|
17
|
+
@stack.push @stack.pop + @stack.pop
|
18
|
+
end
|
19
|
+
|
20
|
+
def /
|
21
|
+
divisor, dividend = [@stack.pop, @stack.pop] # Hm, @stack.pop(2) doesn't work
|
22
|
+
@stack.push dividend / divisor
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
features/sample.feature:12
|
@@ -1,8 +1,8 @@
|
|
1
|
-
Feature: After Block
|
1
|
+
Feature: Exception in After Block
|
2
2
|
In order to use custom assertions at the end of each scenario
|
3
3
|
As a developer
|
4
4
|
I want exceptions raised in After blocks to be handled gracefully and reported by the formatters
|
5
|
-
|
5
|
+
|
6
6
|
Background:
|
7
7
|
Given a standard Cucumber project directory structure
|
8
8
|
And a file named "features/step_definitions/steps.rb" with:
|
@@ -11,7 +11,7 @@ Feature: After Block Exceptions
|
|
11
11
|
@naughty = true
|
12
12
|
end
|
13
13
|
|
14
|
-
Given /^this step works$/ do
|
14
|
+
Given /^this step works$/ do
|
15
15
|
end
|
16
16
|
"""
|
17
17
|
And a file named "features/support/env.rb" with:
|
@@ -37,10 +37,10 @@ Feature: After Block Exceptions
|
|
37
37
|
Given this step works
|
38
38
|
"""
|
39
39
|
When I run cucumber features
|
40
|
-
Then it should fail with
|
40
|
+
Then it should fail with
|
41
41
|
"""
|
42
42
|
Feature: Sample
|
43
|
-
|
43
|
+
|
44
44
|
Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
|
45
45
|
Given this step does something naughty # features/step_definitions/steps.rb:1
|
46
46
|
This scenario has been very very naughty (NaughtyScenarioException)
|
@@ -48,13 +48,13 @@ Feature: After Block Exceptions
|
|
48
48
|
|
49
49
|
Scenario: Success # features/naughty_step_in_scenario.feature:6
|
50
50
|
Given this step works # features/step_definitions/steps.rb:5
|
51
|
-
|
51
|
+
|
52
52
|
Failing Scenarios:
|
53
53
|
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
|
54
|
-
|
54
|
+
|
55
55
|
2 scenarios (1 failed, 1 passed)
|
56
56
|
2 steps (2 passed)
|
57
|
-
|
57
|
+
|
58
58
|
"""
|
59
59
|
|
60
60
|
@mri186
|
@@ -65,7 +65,7 @@ Feature: After Block Exceptions
|
|
65
65
|
|
66
66
|
Scenario Outline: Naughty Step
|
67
67
|
Given this step <Might Work>
|
68
|
-
|
68
|
+
|
69
69
|
Examples:
|
70
70
|
| Might Work |
|
71
71
|
| works |
|
@@ -74,16 +74,16 @@ Feature: After Block Exceptions
|
|
74
74
|
|
75
75
|
Scenario: Success
|
76
76
|
Given this step works
|
77
|
-
|
77
|
+
|
78
78
|
"""
|
79
79
|
When I run cucumber features
|
80
|
-
Then it should fail with
|
80
|
+
Then it should fail with
|
81
81
|
"""
|
82
82
|
Feature: Sample
|
83
|
-
|
83
|
+
|
84
84
|
Scenario Outline: Naughty Step # features/naughty_step_in_scenario_outline.feature:3
|
85
85
|
Given this step <Might Work> # features/step_definitions/steps.rb:5
|
86
|
-
|
86
|
+
|
87
87
|
Examples:
|
88
88
|
| Might Work |
|
89
89
|
| works |
|
@@ -91,12 +91,12 @@ Feature: After Block Exceptions
|
|
91
91
|
This scenario has been very very naughty (NaughtyScenarioException)
|
92
92
|
./features/support/env.rb:4:in `After'
|
93
93
|
| works |
|
94
|
-
|
94
|
+
|
95
95
|
Scenario: Success # features/naughty_step_in_scenario_outline.feature:12
|
96
96
|
Given this step works # features/step_definitions/steps.rb:5
|
97
|
-
|
97
|
+
|
98
98
|
4 scenarios (1 failed, 3 passed)
|
99
99
|
4 steps (4 passed)
|
100
|
-
|
100
|
+
|
101
101
|
"""
|
102
|
-
|
102
|
+
|
@@ -1,8 +1,8 @@
|
|
1
|
-
Feature: AfterStep Block
|
1
|
+
Feature: Exception in AfterStep Block
|
2
2
|
In order to use custom assertions at the end of each step
|
3
3
|
As a developer
|
4
4
|
I want exceptions raised in AfterStep blocks to be handled gracefully and reported by the formatters
|
5
|
-
|
5
|
+
|
6
6
|
Background:
|
7
7
|
Given a standard Cucumber project directory structure
|
8
8
|
And a file named "features/step_definitions/steps.rb" with:
|
@@ -11,7 +11,7 @@ Feature: AfterStep Block Exceptions
|
|
11
11
|
@naughty = true
|
12
12
|
end
|
13
13
|
|
14
|
-
Given /^this step works$/ do
|
14
|
+
Given /^this step works$/ do
|
15
15
|
end
|
16
16
|
"""
|
17
17
|
And a file named "features/support/env.rb" with:
|
@@ -37,10 +37,10 @@ Feature: AfterStep Block Exceptions
|
|
37
37
|
Given this step works
|
38
38
|
"""
|
39
39
|
When I run cucumber features
|
40
|
-
Then it should fail with
|
40
|
+
Then it should fail with
|
41
41
|
"""
|
42
42
|
Feature: Sample
|
43
|
-
|
43
|
+
|
44
44
|
Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
|
45
45
|
Given this step does something naughty # features/step_definitions/steps.rb:1
|
46
46
|
This step has been very very naughty (NaughtyStepException)
|
@@ -49,13 +49,13 @@ Feature: AfterStep Block Exceptions
|
|
49
49
|
|
50
50
|
Scenario: Success # features/naughty_step_in_scenario.feature:6
|
51
51
|
Given this step works # features/step_definitions/steps.rb:5
|
52
|
-
|
52
|
+
|
53
53
|
Failing Scenarios:
|
54
54
|
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
|
55
|
-
|
55
|
+
|
56
56
|
2 scenarios (1 failed, 1 passed)
|
57
57
|
2 steps (1 failed, 1 passed)
|
58
|
-
|
58
|
+
|
59
59
|
"""
|
60
60
|
|
61
61
|
@mri186
|
@@ -78,7 +78,7 @@ Feature: AfterStep Block Exceptions
|
|
78
78
|
|
79
79
|
"""
|
80
80
|
When I run cucumber features
|
81
|
-
Then it should fail with
|
81
|
+
Then it should fail with
|
82
82
|
"""
|
83
83
|
Feature: Sample
|
84
84
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
Feature: Exception in Before Block
|
2
|
+
In order to know with confidence that my before blocks have run OK
|
3
|
+
As a developer
|
4
|
+
I want exceptions raised in Before blocks to be handled gracefully and reported by the formatters
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/step_definitions/steps.rb" with:
|
9
|
+
"""
|
10
|
+
Given /^this step works$/ do
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
And a file named "features/support/env.rb" with:
|
14
|
+
"""
|
15
|
+
class SomeSetupException < Exception; end
|
16
|
+
class BadStepException < Exception; end
|
17
|
+
Before do
|
18
|
+
raise SomeSetupException.new("I cannot even start this scenario")
|
19
|
+
end
|
20
|
+
"""
|
21
|
+
|
22
|
+
@mri186
|
23
|
+
Scenario: Handle Exception in standard scenario step and carry on
|
24
|
+
Given a file named "features/naughty_step_in_scenario.feature" with:
|
25
|
+
"""
|
26
|
+
Feature: Sample
|
27
|
+
|
28
|
+
Scenario: Run a good step
|
29
|
+
Given this step works
|
30
|
+
"""
|
31
|
+
When I run cucumber features
|
32
|
+
Then it should fail with
|
33
|
+
"""
|
34
|
+
Feature: Sample
|
35
|
+
|
36
|
+
Scenario: Run a good step # features/naughty_step_in_scenario.feature:3
|
37
|
+
I cannot even start this scenario (SomeSetupException)
|
38
|
+
./features/support/env.rb:4:in `Before'
|
39
|
+
Given this step works # features/step_definitions/steps.rb:1
|
40
|
+
|
41
|
+
Failing Scenarios:
|
42
|
+
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Run a good step
|
43
|
+
|
44
|
+
1 scenario (1 failed)
|
45
|
+
1 step (1 skipped)
|
46
|
+
|
47
|
+
"""
|
@@ -7,33 +7,45 @@ module Cucumber
|
|
7
7
|
|
8
8
|
attr_reader :name, :line
|
9
9
|
|
10
|
+
class EmptyBackground
|
11
|
+
def failed?
|
12
|
+
false
|
13
|
+
end
|
14
|
+
|
15
|
+
def feature_elements
|
16
|
+
[]
|
17
|
+
end
|
18
|
+
|
19
|
+
def step_collection(step_invocations)
|
20
|
+
StepCollection.new(step_invocations)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
10
24
|
def initialize(background, comment, tags, line, keyword, name, steps)
|
11
|
-
@background
|
25
|
+
@background = background || EmptyBackground.new
|
26
|
+
@comment, @tags, @line, @keyword, @name = comment, tags, line, keyword, name
|
12
27
|
attach_steps(steps)
|
13
28
|
|
14
29
|
step_invocations = steps.map{|step| step.step_invocation}
|
15
|
-
|
16
|
-
|
17
|
-
@background.feature_elements << self
|
18
|
-
else
|
19
|
-
@steps = StepCollection.new(step_invocations)
|
20
|
-
end
|
30
|
+
@steps = @background.step_collection(step_invocations)
|
31
|
+
@background.feature_elements << self
|
21
32
|
end
|
22
33
|
|
23
34
|
def accept(visitor)
|
24
35
|
return if $cucumber_interrupted
|
25
|
-
|
26
|
-
visitor
|
27
|
-
|
36
|
+
|
37
|
+
with_visitor(visitor) do
|
38
|
+
visitor.visit_comment(@comment) unless @comment.empty?
|
39
|
+
visitor.visit_tags(@tags)
|
40
|
+
visitor.visit_scenario_name(@keyword, @name, file_colon_line(@line), source_indent(first_line_length))
|
28
41
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
42
|
+
skip_invoke! if @background.failed?
|
43
|
+
visitor.step_mother.before_and_after(self, skip_hooks?) do
|
44
|
+
skip_invoke! if failed?
|
45
|
+
visitor.visit_steps(@steps)
|
46
|
+
end
|
47
|
+
@executed = true
|
34
48
|
end
|
35
|
-
visitor.visit_exception(@exception, :failed) if @exception
|
36
|
-
@executed = true
|
37
49
|
end
|
38
50
|
|
39
51
|
# Returns true if one or more steps failed
|
@@ -43,6 +55,7 @@ module Cucumber
|
|
43
55
|
|
44
56
|
def fail!(exception)
|
45
57
|
@exception = exception
|
58
|
+
@current_visitor.visit_exception(@exception, :failed)
|
46
59
|
end
|
47
60
|
|
48
61
|
# Returns true if all steps passed
|
@@ -78,7 +91,18 @@ module Cucumber
|
|
78
91
|
sexp += steps if steps.any?
|
79
92
|
sexp
|
80
93
|
end
|
81
|
-
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
def with_visitor(visitor)
|
98
|
+
@current_visitor = visitor
|
99
|
+
yield
|
100
|
+
@current_visitor = nil
|
101
|
+
end
|
102
|
+
|
103
|
+
def skip_hooks?
|
104
|
+
@background.failed? || @executed
|
105
|
+
end
|
82
106
|
end
|
83
107
|
end
|
84
108
|
end
|
@@ -89,12 +89,18 @@ module Cucumber
|
|
89
89
|
BACKTRACE_FILTER_PATTERNS.detect { |p| line =~ p }
|
90
90
|
end
|
91
91
|
|
92
|
-
if Cucumber::JRUBY
|
93
|
-
#
|
94
|
-
#
|
95
|
-
|
96
|
-
|
97
|
-
|
92
|
+
if Cucumber::JRUBY && e.class.name == 'NativeException'
|
93
|
+
# JRuby's NativeException ignores #set_backtrace.
|
94
|
+
# We're fixing it.
|
95
|
+
e.instance_eval do
|
96
|
+
def set_backtrace(backtrace)
|
97
|
+
@backtrace = backtrace
|
98
|
+
end
|
99
|
+
|
100
|
+
def backtrace
|
101
|
+
@backtrace
|
102
|
+
end
|
103
|
+
end
|
98
104
|
end
|
99
105
|
e.set_backtrace(filtered)
|
100
106
|
e
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'logger'
|
1
2
|
require 'cucumber/cli/options'
|
2
3
|
require 'cucumber/constantize'
|
3
4
|
|
@@ -140,8 +141,22 @@ module Cucumber
|
|
140
141
|
paths.map { |f| File.directory?(f) ? f : File.dirname(f) }.uniq
|
141
142
|
end
|
142
143
|
|
144
|
+
def log
|
145
|
+
logger = Logger.new(@out_stream)
|
146
|
+
logger.formatter = LogFormatter.new
|
147
|
+
logger.level = Logger::INFO
|
148
|
+
logger.level = Logger::DEBUG if self.verbose?
|
149
|
+
logger
|
150
|
+
end
|
151
|
+
|
143
152
|
private
|
144
153
|
|
154
|
+
class LogFormatter < ::Logger::Formatter
|
155
|
+
def call(severity, time, progname, msg)
|
156
|
+
msg
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
145
160
|
def paths
|
146
161
|
@options[:paths].empty? ? ['features'] : @options[:paths]
|
147
162
|
end
|
data/lib/cucumber/cli/main.rb
CHANGED
@@ -14,12 +14,6 @@ module Cucumber
|
|
14
14
|
class Main
|
15
15
|
FAILURE = 1
|
16
16
|
|
17
|
-
class LogFormatter < ::Logger::Formatter
|
18
|
-
def call(severity, time, progname, msg)
|
19
|
-
msg
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
17
|
class << self
|
24
18
|
def step_mother
|
25
19
|
@step_mother ||= StepMother.new
|
@@ -46,12 +40,7 @@ module Cucumber
|
|
46
40
|
end
|
47
41
|
end
|
48
42
|
step_mother.options = configuration.options
|
49
|
-
|
50
|
-
logger = Logger.new(@out_stream)
|
51
|
-
logger.formatter = LogFormatter.new
|
52
|
-
logger.level = Logger::INFO
|
53
|
-
logger.level = Logger::DEBUG if configuration.verbose?
|
54
|
-
step_mother.log = logger
|
43
|
+
step_mother.log = configuration.log
|
55
44
|
|
56
45
|
step_mother.load_code_files(configuration.support_to_load)
|
57
46
|
step_mother.after_configuration(configuration)
|
@@ -97,10 +86,6 @@ module Cucumber
|
|
97
86
|
@configuration
|
98
87
|
end
|
99
88
|
|
100
|
-
def verbose_log(string)
|
101
|
-
@out_stream.puts(string) if configuration.verbose?
|
102
|
-
end
|
103
|
-
|
104
89
|
private
|
105
90
|
|
106
91
|
def enable_diffing
|
data/lib/cucumber/languages.yml
CHANGED
@@ -500,6 +500,20 @@
|
|
500
500
|
and: A
|
501
501
|
but: Ale
|
502
502
|
space_after_keyword: true
|
503
|
+
"uz":
|
504
|
+
name: Uzbek
|
505
|
+
native: Узбекча
|
506
|
+
encoding: UTF-8
|
507
|
+
feature: Функционал
|
508
|
+
background: Тарих
|
509
|
+
scenario: Сценарий
|
510
|
+
scenario_outline: Сценарий структураси
|
511
|
+
examples: Мисоллар
|
512
|
+
given: Агар
|
513
|
+
when: Агар
|
514
|
+
then: Унда
|
515
|
+
and: Ва
|
516
|
+
but: Лекин|Бирок|Аммо
|
503
517
|
"vi":
|
504
518
|
name: Vietnamese
|
505
519
|
native: Tiếng Việt
|
data/lib/cucumber/step_mother.rb
CHANGED
data/lib/cucumber/version.rb
CHANGED
@@ -109,6 +109,15 @@ module Cucumber
|
|
109
109
|
end
|
110
110
|
})
|
111
111
|
end
|
112
|
+
|
113
|
+
it "should be helpful with tables" do
|
114
|
+
@rb.snippet_text('Given', 'A "first" arg', Cucumber::Ast::Table).should == unindented(%{
|
115
|
+
Given /^A "([^\\"]*)" arg$/ do |arg1, table|
|
116
|
+
# table is a Cucumber::Ast::Table
|
117
|
+
pending
|
118
|
+
end
|
119
|
+
})
|
120
|
+
end
|
112
121
|
end
|
113
122
|
end
|
114
123
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kosmas58-cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.100
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Aslak Helles\xC3\xB8y"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-09 00:00:00 -07:00
|
13
13
|
default_executable: cucumber
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -74,6 +74,7 @@ extra_rdoc_files:
|
|
74
74
|
- License.txt
|
75
75
|
- Manifest.txt
|
76
76
|
- README.txt
|
77
|
+
- examples/self_test/list-of-features.txt
|
77
78
|
files:
|
78
79
|
- History.txt
|
79
80
|
- License.txt
|
@@ -224,6 +225,14 @@ files:
|
|
224
225
|
- examples/i18n/sk/features/division.feature
|
225
226
|
- examples/i18n/sk/features/step_definitons/calculator_steps.rb
|
226
227
|
- examples/i18n/sk/lib/calculator.rb
|
228
|
+
- examples/i18n/uz/Rakefile
|
229
|
+
- examples/i18n/uz/features/addition.feature
|
230
|
+
- examples/i18n/uz/features/consecutive_calculations.feature
|
231
|
+
- examples/i18n/uz/features/division.feature
|
232
|
+
- examples/i18n/uz/features/step_definitons/calculator_steps.rb
|
233
|
+
- examples/i18n/uz/features/support/env.rb
|
234
|
+
- examples/i18n/uz/features/support/world.rb
|
235
|
+
- examples/i18n/uz/lib/calculator.rb
|
227
236
|
- examples/i18n/zh-CN/Rakefile
|
228
237
|
- examples/i18n/zh-CN/features/addition.feature
|
229
238
|
- examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb
|
@@ -281,6 +290,7 @@ files:
|
|
281
290
|
- examples/self_test/features/tags_sample.feature
|
282
291
|
- examples/self_test/features/tons_of_cukes.feature
|
283
292
|
- examples/self_test/features/undefined_multiline_args.feature
|
293
|
+
- examples/self_test/list-of-features.txt
|
284
294
|
- examples/sinatra/README.textile
|
285
295
|
- examples/sinatra/Rakefile
|
286
296
|
- examples/sinatra/app.rb
|
@@ -330,8 +340,6 @@ files:
|
|
330
340
|
- examples/watir/features/search.feature
|
331
341
|
- examples/watir/features/step_definitons/search_steps.rb
|
332
342
|
- examples/watir/features/support/env.rb
|
333
|
-
- features/after_block_exceptions.feature
|
334
|
-
- features/after_step_block_exceptions.feature
|
335
343
|
- features/background.feature
|
336
344
|
- features/bug_371.feature
|
337
345
|
- features/cucumber_cli.feature
|
@@ -339,6 +347,9 @@ files:
|
|
339
347
|
- features/cucumber_cli_outlines.feature
|
340
348
|
- features/custom_formatter.feature
|
341
349
|
- features/drb_server_integration.feature
|
350
|
+
- features/exception_in_after_block.feature
|
351
|
+
- features/exception_in_after_step_block.feature
|
352
|
+
- features/exception_in_before_block.feature
|
342
353
|
- features/exclude_files.feature
|
343
354
|
- features/expand.feature
|
344
355
|
- features/html_formatter.feature
|