aslakhellesoy-cucumber 0.3.0 → 0.3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +18 -1
- data/Manifest.txt +15 -1
- data/config/hoe.rb +5 -4
- data/examples/i18n/hu/Rakefile +6 -0
- data/examples/i18n/hu/features/addition.feature +16 -0
- data/examples/i18n/hu/features/division.feature +9 -0
- data/examples/i18n/hu/features/step_definitons/calculator_steps.rb +25 -0
- data/examples/i18n/hu/lib/calculator.rb +14 -0
- data/examples/i18n/lv/Rakefile +6 -0
- data/examples/i18n/lv/features/addition.feature +16 -0
- data/examples/i18n/lv/features/division.feature +9 -0
- data/examples/i18n/lv/features/step_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/lv/lib/calculator.rb +14 -0
- data/examples/self_test/features/multiline_name.feature +27 -0
- data/examples/tickets/Rakefile +3 -3
- data/examples/tickets/features/272/hooks.feature +26 -0
- data/examples/tickets/features/272/hooks_steps.rb +53 -0
- data/features/cucumber_cli.feature +32 -2
- data/features/multiline_names.feature +43 -0
- data/features/report_called_undefined_steps.feature +1 -1
- data/features/usage.feature +4 -0
- data/lib/cucumber/ast/background.rb +3 -6
- data/lib/cucumber/ast/feature_element.rb +18 -9
- data/lib/cucumber/ast/outline_table.rb +10 -0
- data/lib/cucumber/ast/scenario.rb +16 -1
- data/lib/cucumber/ast/scenario_outline.rb +1 -1
- data/lib/cucumber/ast/step.rb +4 -2
- data/lib/cucumber/ast/step_collection.rb +9 -1
- data/lib/cucumber/ast/table.rb +4 -0
- data/lib/cucumber/formatter/console.rb +1 -1
- data/lib/cucumber/formatter/html.rb +1 -1
- data/lib/cucumber/formatter/pretty.rb +7 -8
- data/lib/cucumber/languages.yml +30 -0
- data/lib/cucumber/parser/feature.rb +196 -10
- data/lib/cucumber/parser/feature.tt +26 -10
- data/lib/cucumber/rails/world.rb +6 -0
- data/lib/cucumber/step_mother.rb +2 -1
- data/lib/cucumber/version.rb +1 -1
- data/lib/cucumber/world.rb +2 -2
- data/rails_generators/cucumber/templates/paths.rb +11 -13
- data/rails_generators/feature/feature_generator.rb +1 -1
- data/spec/cucumber/ast/feature_element_spec.rb +35 -0
- data/spec/cucumber/ast/table_spec.rb +6 -2
- data/spec/cucumber/cli/configuration_spec.rb +0 -9
- data/spec/cucumber/cli/main_spec.rb +55 -153
- data/spec/cucumber/parser/feature_parser_spec.rb +79 -0
- data/spec/cucumber/step_mother_spec.rb +12 -5
- metadata +17 -13
- data/spec/cucumber/formatters/profile_formatter_spec.rb +0 -198
data/History.txt
CHANGED
@@ -1,4 +1,21 @@
|
|
1
|
-
== 0.3.
|
1
|
+
== 0.3.x (In Git)
|
2
|
+
|
3
|
+
With the addition of Latvian and Hungarian Cucumber now supports 32(!!) languages.
|
4
|
+
|
5
|
+
=== New features
|
6
|
+
* Support multiline names for Scenarios, Scenario Outlines, Backgrounds, Examples (#231 Joseph Wilk)
|
7
|
+
* Added #headers to Cucumber::Ast::Table (Ben Mabey)
|
8
|
+
* New translation for Latvian (Vitauts Stočka)
|
9
|
+
* New translation for Hungarian (#287 Bence Golda)
|
10
|
+
* Pick up failure on after hook (#272 Aslak Hellesøy)
|
11
|
+
|
12
|
+
=== Bugfixes
|
13
|
+
* Gem no longer depends on Hoe (Aslak Hellesøy)
|
14
|
+
* Span html tags appear on HTML results with 0.3.0 (#299 Aslak Hellesøy)
|
15
|
+
* Fixed incorrect colours in pretty formatter's table headers for outline tables (Aslak Hellesøy)
|
16
|
+
* Exceptions from steps called within hooks are now reraised. (#294 Ben Mabey)
|
17
|
+
|
18
|
+
== 0.3.0 2009-04-14
|
2
19
|
|
3
20
|
This release has some minor changes to the APIs, but big enough that a new major release is in order.
|
4
21
|
The biggest change is the new semantics of the #World method. Previously you would call this method
|
data/Manifest.txt
CHANGED
@@ -67,6 +67,11 @@ examples/i18n/fr/Rakefile
|
|
67
67
|
examples/i18n/fr/features/addition.feature
|
68
68
|
examples/i18n/fr/features/step_definitions/calculatrice_steps.rb
|
69
69
|
examples/i18n/fr/lib/calculatrice.rb
|
70
|
+
examples/i18n/hu/Rakefile
|
71
|
+
examples/i18n/hu/features/addition.feature
|
72
|
+
examples/i18n/hu/features/division.feature
|
73
|
+
examples/i18n/hu/features/step_definitons/calculator_steps.rb
|
74
|
+
examples/i18n/hu/lib/calculator.rb
|
70
75
|
examples/i18n/id/Rakefile
|
71
76
|
examples/i18n/id/features/addition.feature
|
72
77
|
examples/i18n/id/features/division.feature
|
@@ -91,6 +96,11 @@ examples/i18n/lt/features/addition.feature
|
|
91
96
|
examples/i18n/lt/features/division.feature
|
92
97
|
examples/i18n/lt/features/step_definitons/calculator_steps.rb
|
93
98
|
examples/i18n/lt/lib/calculator.rb
|
99
|
+
examples/i18n/lv/Rakefile
|
100
|
+
examples/i18n/lv/features/addition.feature
|
101
|
+
examples/i18n/lv/features/division.feature
|
102
|
+
examples/i18n/lv/features/step_definitons/calculator_steps.rb
|
103
|
+
examples/i18n/lv/lib/calculator.rb
|
94
104
|
examples/i18n/no/Rakefile
|
95
105
|
examples/i18n/no/features/step_definitons/kalkulator_steps.rb
|
96
106
|
examples/i18n/no/features/summering.feature
|
@@ -159,6 +169,7 @@ examples/self_test/features/background/scenario_outline_passing_background.featu
|
|
159
169
|
examples/self_test/features/call_undefined_step_from_step_def.feature
|
160
170
|
examples/self_test/features/failing_expectation.feature
|
161
171
|
examples/self_test/features/lots_of_undefined.feature
|
172
|
+
examples/self_test/features/multiline_name.feature
|
162
173
|
examples/self_test/features/outline_sample.feature
|
163
174
|
examples/self_test/features/sample.feature
|
164
175
|
examples/self_test/features/step_definitions/sample_steps.rb
|
@@ -190,6 +201,8 @@ examples/tickets/features/246.feature
|
|
190
201
|
examples/tickets/features/248.feature
|
191
202
|
examples/tickets/features/270/back.feature
|
192
203
|
examples/tickets/features/270/back.steps.rb
|
204
|
+
examples/tickets/features/272/hooks.feature
|
205
|
+
examples/tickets/features/272/hooks_steps.rb
|
193
206
|
examples/tickets/features/279/py_string_indent.feature
|
194
207
|
examples/tickets/features/279/py_string_indent.steps.rb
|
195
208
|
examples/tickets/features/279/wrong.feature_
|
@@ -211,6 +224,7 @@ features/cucumber_cli.feature
|
|
211
224
|
features/cucumber_cli_diff_disabled.feature
|
212
225
|
features/cucumber_cli_outlines.feature
|
213
226
|
features/custom_formatter.feature
|
227
|
+
features/multiline_names.feature
|
214
228
|
features/rake_task.feature
|
215
229
|
features/report_called_undefined_steps.feature
|
216
230
|
features/snippet.feature
|
@@ -301,6 +315,7 @@ rails_generators/feature/feature_generator.rb
|
|
301
315
|
rails_generators/feature/templates/feature.erb
|
302
316
|
rails_generators/feature/templates/steps.erb
|
303
317
|
spec/cucumber/ast/background_spec.rb
|
318
|
+
spec/cucumber/ast/feature_element_spec.rb
|
304
319
|
spec/cucumber/ast/feature_factory.rb
|
305
320
|
spec/cucumber/ast/feature_spec.rb
|
306
321
|
spec/cucumber/ast/py_string_spec.rb
|
@@ -321,7 +336,6 @@ spec/cucumber/formatter/html/cucumber.js
|
|
321
336
|
spec/cucumber/formatter/html/index.html
|
322
337
|
spec/cucumber/formatter/html/jquery-1.3.min.js
|
323
338
|
spec/cucumber/formatter/html/jquery.uitableedit.js
|
324
|
-
spec/cucumber/formatters/profile_formatter_spec.rb
|
325
339
|
spec/cucumber/parser/feature_parser_spec.rb
|
326
340
|
spec/cucumber/parser/table_parser_spec.rb
|
327
341
|
spec/cucumber/rails/stubs/mini_rails.rb
|
data/config/hoe.rb
CHANGED
@@ -38,11 +38,12 @@ RDOC_OPTS = ['--quiet', '--title', 'Cucumber documentation',
|
|
38
38
|
"--main", "README.textile",
|
39
39
|
"--inline-source"]
|
40
40
|
|
41
|
+
# Remove Hoe dependency
|
41
42
|
class Hoe
|
42
|
-
def
|
43
|
-
@
|
44
|
-
@
|
45
|
-
end
|
43
|
+
def extra_dev_deps
|
44
|
+
@extra_dev_deps.reject! { |dep| dep[0] == "hoe" }
|
45
|
+
@extra_dev_deps
|
46
|
+
end
|
46
47
|
end
|
47
48
|
|
48
49
|
# Generate all the Rake tasks
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Jellemző: Összeadás
|
2
|
+
Azért, hogy elkerüljem a buta hibákat
|
3
|
+
amit diszkalkúliásként elkövethetek,
|
4
|
+
két szám összegét szeretném kiszámoltatni.
|
5
|
+
|
6
|
+
Forgatókönyv vázlat: Két szám összeadása
|
7
|
+
Ha beütök a számológépbe egy <be_1>-est
|
8
|
+
És beütök a számológépbe egy <be_2>-est
|
9
|
+
Majd megnyomom az <gomb> gombot
|
10
|
+
Akkor eredményül <ki>-t kell kapnom
|
11
|
+
|
12
|
+
Példák:
|
13
|
+
| be_1 | be_2 | gomb | ki |
|
14
|
+
| 20 | 30 | add | 50 |
|
15
|
+
| 2 | 5 | add | 7 |
|
16
|
+
| 0 | 40 | add | 40 |
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Jellemző: Osztás
|
2
|
+
Azért, hogy elkerüljem a buta hibákat
|
3
|
+
a számológépeknek tudniuk kell osztani.
|
4
|
+
|
5
|
+
Forgatókönyv: Egyszerű számok
|
6
|
+
Ha beütök a számológépbe egy 3-ast
|
7
|
+
És beütök a számológépbe egy 2-est
|
8
|
+
Majd megnyomom a divide gombot
|
9
|
+
Akkor eredményül 1.5-öt kell kapnom
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec/expectations'
|
3
|
+
$:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
|
4
|
+
require 'cucumber/formatter/unicode'
|
5
|
+
require 'calculator'
|
6
|
+
|
7
|
+
Before do
|
8
|
+
@calc = Calculator.new
|
9
|
+
end
|
10
|
+
|
11
|
+
After do
|
12
|
+
end
|
13
|
+
|
14
|
+
Ha /^beütök a számológépbe egy (\d+)\-(?:es|as|ös|ás)t$/ do |n|
|
15
|
+
@calc.push n.to_i
|
16
|
+
end
|
17
|
+
|
18
|
+
Majd /^megnyomom az? (\w+) gombot$/ do |op|
|
19
|
+
@result = @calc.send op
|
20
|
+
end
|
21
|
+
|
22
|
+
Akkor /^eredményül (.*)\-(?:e|a|ö|á|)t kell kapnom$/ do |result|
|
23
|
+
@result.should == result.to_f
|
24
|
+
end
|
25
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Funkcionalitāte: Saskaitīšana
|
2
|
+
Lai izvairītos no muļķīgām kļūdām
|
3
|
+
Kā matemātikas idiots
|
4
|
+
Es vēlos uzzināt divu skaitļu summu
|
5
|
+
|
6
|
+
Scenārijs pēc parauga: Saskaitīt divus skaitļus
|
7
|
+
Kad esmu ievadījis kalkulatorā <skaitlis_1>
|
8
|
+
Un esmu ievadījis kalkulatorā <skaitlis_2>
|
9
|
+
Ja nospiežu pogu <poga>
|
10
|
+
Tad rezultātam uz ekrāna ir jābūt <rezultāts>
|
11
|
+
|
12
|
+
Paraugs:
|
13
|
+
| skaitlis_1 | skaitlis_2 | poga | rezultāts |
|
14
|
+
| 20 | 30 | add | 50 |
|
15
|
+
| 2 | 5 | add | 7 |
|
16
|
+
| 0 | 40 | add | 40 |
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Funkcionalitāte: Dalīšana
|
2
|
+
Lai izvairītos no muļķīgām kļūdām
|
3
|
+
Kasieriem ir jāprot aprēķināt daļas
|
4
|
+
|
5
|
+
Scenārijs: Veseli skaitļi
|
6
|
+
Kad esmu ievadījis kalkulatorā 3
|
7
|
+
Un esmu ievadījis kalkulatorā 2
|
8
|
+
Ja nospiežu pogu divide
|
9
|
+
Tad rezultātam uz ekrāna ir jābūt 1.5
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec/expectations'
|
3
|
+
$:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
|
4
|
+
require 'cucumber/formatter/unicode'
|
5
|
+
require 'calculator'
|
6
|
+
|
7
|
+
Before do
|
8
|
+
@calc = Calculator.new
|
9
|
+
end
|
10
|
+
|
11
|
+
After do
|
12
|
+
end
|
13
|
+
|
14
|
+
Given /esmu ievadījis kalkulatorā (\d+)/ do |n|
|
15
|
+
@calc.push n.to_i
|
16
|
+
end
|
17
|
+
|
18
|
+
When /nospiežu pogu (\w+)/ do |op|
|
19
|
+
@result = @calc.send op
|
20
|
+
end
|
21
|
+
|
22
|
+
Then /rezultātam uz ekrāna ir jābūt (.*)/ do |result|
|
23
|
+
@result.should == result.to_f
|
24
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Feature: multiline
|
2
|
+
|
3
|
+
Background: I'm a multiline name
|
4
|
+
which goes on and on and on for three lines
|
5
|
+
yawn
|
6
|
+
Given passing without a table
|
7
|
+
|
8
|
+
Scenario: I'm a multiline name
|
9
|
+
which goes on and on and on for three lines
|
10
|
+
yawn
|
11
|
+
Given passing without a table
|
12
|
+
|
13
|
+
Scenario Outline: I'm a multiline name
|
14
|
+
which goes on and on and on for three lines
|
15
|
+
yawn
|
16
|
+
Given <state> without a table
|
17
|
+
Examples:
|
18
|
+
| state |
|
19
|
+
|passing|
|
20
|
+
|
21
|
+
Scenario Outline: name
|
22
|
+
Given <state> without a table
|
23
|
+
Examples: I'm a multiline name
|
24
|
+
which goes on and on and on for three lines
|
25
|
+
yawn
|
26
|
+
| state |
|
27
|
+
|passing|
|
data/examples/tickets/Rakefile
CHANGED
@@ -2,15 +2,15 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
|
|
2
2
|
require 'cucumber/rake/task'
|
3
3
|
|
4
4
|
Cucumber::Rake::Task.new(:pretty) do |t|
|
5
|
-
t.cucumber_opts = "--format pretty -q"
|
5
|
+
t.cucumber_opts = "--tags ~@intentional_failure --format pretty -q"
|
6
6
|
end
|
7
7
|
|
8
8
|
Cucumber::Rake::Task.new(:html) do |t|
|
9
|
-
t.cucumber_opts = "--format html --out features.html"
|
9
|
+
t.cucumber_opts = "--tags ~@intentional_failure --format html --out features.html"
|
10
10
|
end
|
11
11
|
|
12
12
|
Cucumber::Rake::Task.new(:progress) do |t|
|
13
|
-
t.cucumber_opts = "--format progress -i -n"
|
13
|
+
t.cucumber_opts = "--tags ~@intentional_failure --format progress -i -n"
|
14
14
|
end
|
15
15
|
|
16
16
|
task :default => [:pretty, :html, :progress]
|
@@ -0,0 +1,26 @@
|
|
1
|
+
@intentional_failure
|
2
|
+
Feature: Hooks
|
3
|
+
In order to integrate with my complex environment
|
4
|
+
I need to check scenario status in an After block
|
5
|
+
|
6
|
+
@272_failed
|
7
|
+
Scenario: Failed
|
8
|
+
Given I fail
|
9
|
+
|
10
|
+
@272_undefined
|
11
|
+
Scenario: Undefined
|
12
|
+
Given I am undefined
|
13
|
+
|
14
|
+
@272_passed
|
15
|
+
Scenario: Passed
|
16
|
+
Given I pass
|
17
|
+
|
18
|
+
@272_outline
|
19
|
+
Scenario Outline: Should work too
|
20
|
+
Given <something>
|
21
|
+
|
22
|
+
Examples:
|
23
|
+
| something |
|
24
|
+
| I fail |
|
25
|
+
| I am undefined |
|
26
|
+
| I pass |
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec/expectations'
|
2
|
+
|
3
|
+
Given /^I fail$/ do
|
4
|
+
raise "BOOM (this is expected)"
|
5
|
+
end
|
6
|
+
|
7
|
+
Given /^I pass$/ do
|
8
|
+
end
|
9
|
+
|
10
|
+
module HookChecks
|
11
|
+
def check_failed(scenario)
|
12
|
+
scenario.should be_failed
|
13
|
+
scenario.should_not be_passed
|
14
|
+
scenario.exception.message.should == "BOOM (this is expected)"
|
15
|
+
end
|
16
|
+
|
17
|
+
def check_undefined(scenario)
|
18
|
+
scenario.should_not be_failed
|
19
|
+
scenario.should_not be_passed
|
20
|
+
end
|
21
|
+
|
22
|
+
def check_passed(scenario)
|
23
|
+
scenario.should_not be_failed
|
24
|
+
scenario.should be_passed
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
World(HookChecks)
|
29
|
+
|
30
|
+
After('@272_failed') do |scenario|
|
31
|
+
check_failed(scenario)
|
32
|
+
end
|
33
|
+
|
34
|
+
After('@272_undefined') do |scenario|
|
35
|
+
check_undefined(scenario)
|
36
|
+
end
|
37
|
+
|
38
|
+
After('@272_passed') do |scenario|
|
39
|
+
check_passed(scenario)
|
40
|
+
end
|
41
|
+
|
42
|
+
counter = 0
|
43
|
+
After('@272_outline') do |scenario|
|
44
|
+
case(counter)
|
45
|
+
when 0
|
46
|
+
check_failed(scenario)
|
47
|
+
when 1
|
48
|
+
check_undefined(scenario)
|
49
|
+
when 2
|
50
|
+
check_passed(scenario)
|
51
|
+
end
|
52
|
+
counter +=1
|
53
|
+
end
|
@@ -191,6 +191,36 @@ Feature: Cucumber command line
|
|
191
191
|
When I stop procrastinating
|
192
192
|
And there is world peace
|
193
193
|
|
194
|
+
Feature: multiline
|
195
|
+
|
196
|
+
Background: I'm a multiline name
|
197
|
+
which goes on and on and on for three lines
|
198
|
+
yawn
|
199
|
+
Given passing without a table
|
200
|
+
|
201
|
+
Scenario: I'm a multiline name
|
202
|
+
which goes on and on and on for three lines
|
203
|
+
yawn
|
204
|
+
Given passing without a table
|
205
|
+
|
206
|
+
Scenario Outline: I'm a multiline name
|
207
|
+
which goes on and on and on for three lines
|
208
|
+
yawn
|
209
|
+
Given <state> without a table
|
210
|
+
|
211
|
+
Examples:
|
212
|
+
| state |
|
213
|
+
| passing |
|
214
|
+
|
215
|
+
Scenario Outline: name
|
216
|
+
Given <state> without a table
|
217
|
+
|
218
|
+
Examples: I'm a multiline name
|
219
|
+
which goes on and on and on for three lines
|
220
|
+
yawn
|
221
|
+
| state |
|
222
|
+
| passing |
|
223
|
+
|
194
224
|
Feature: Outline Sample
|
195
225
|
|
196
226
|
Scenario: I have no steps
|
@@ -242,8 +272,8 @@ Feature: Cucumber command line
|
|
242
272
|
| table |
|
243
273
|
| example |
|
244
274
|
|
245
|
-
|
246
|
-
|
275
|
+
17 scenarios
|
276
|
+
18 skipped steps
|
247
277
|
9 undefined steps
|
248
278
|
|
249
279
|
"""
|
@@ -0,0 +1,43 @@
|
|
1
|
+
Feature: Multiline description names
|
2
|
+
In order to accurately document feature elements
|
3
|
+
As a cucumberist
|
4
|
+
I want to have multiline names
|
5
|
+
|
6
|
+
Scenario: multiline scenario
|
7
|
+
When I run cucumber features/multiline_name.feature --no-snippets
|
8
|
+
Then it should pass with
|
9
|
+
"""
|
10
|
+
Feature: multiline
|
11
|
+
|
12
|
+
Background: I'm a multiline name # features/multiline_name.feature:3
|
13
|
+
which goes on and on and on for three lines
|
14
|
+
yawn
|
15
|
+
Given passing without a table # features/step_definitions/sample_steps.rb:12
|
16
|
+
|
17
|
+
Scenario: I'm a multiline name # features/multiline_name.feature:8
|
18
|
+
which goes on and on and on for three lines
|
19
|
+
yawn
|
20
|
+
Given passing without a table # features/step_definitions/sample_steps.rb:12
|
21
|
+
|
22
|
+
Scenario Outline: I'm a multiline name # features/multiline_name.feature:13
|
23
|
+
which goes on and on and on for three lines
|
24
|
+
yawn
|
25
|
+
Given <state> without a table # features/step_definitions/sample_steps.rb:12
|
26
|
+
|
27
|
+
Examples:
|
28
|
+
| state |
|
29
|
+
| passing |
|
30
|
+
|
31
|
+
Scenario Outline: name # features/multiline_name.feature:21
|
32
|
+
Given <state> without a table # features/step_definitions/sample_steps.rb:12
|
33
|
+
|
34
|
+
Examples: I'm a multiline name
|
35
|
+
which goes on and on and on for three lines
|
36
|
+
yawn
|
37
|
+
| state |
|
38
|
+
| passing |
|
39
|
+
|
40
|
+
3 scenarios
|
41
|
+
6 passed steps
|
42
|
+
|
43
|
+
"""
|