square-cucumber 0.3.12.2 → 0.3.93.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. data/History.txt +117 -4
  2. data/Manifest.txt +11 -0
  3. data/Rakefile +1 -1
  4. data/config/hoe.rb +3 -2
  5. data/cucumber.yml +2 -2
  6. data/examples/i18n/ko/features/addition.feature +5 -5
  7. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +1 -1
  8. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +1 -1
  9. data/examples/i18n/pt/features/adicao.feature +4 -4
  10. data/examples/self_test/features/support/env.rb +2 -1
  11. data/examples/sinatra/features/support/env.rb +7 -1
  12. data/examples/steps_library/features/step_definitions/steps_lib1.rb +8 -0
  13. data/examples/steps_library/features/step_definitions/steps_lib2.rb +8 -0
  14. data/examples/tickets/features/step_definitons/tickets_steps.rb +15 -0
  15. data/examples/tickets/features/table_diffing.feature +13 -0
  16. data/examples/watir/features/step_definitons/search_steps.rb +5 -1
  17. data/features/cucumber_cli_diff_disabled.feature +2 -1
  18. data/features/html_formatter/a.html +5 -7
  19. data/features/junit_formatter.feature +21 -14
  20. data/features/profiles.feature +99 -0
  21. data/features/rake_task.feature +28 -0
  22. data/features/step_definitions/cucumber_steps.rb +28 -15
  23. data/features/steps_formatter.feature +25 -0
  24. data/features/support/env.rb +9 -5
  25. data/features/table_diffing.feature +45 -0
  26. data/features/unicode_table.feature +35 -0
  27. data/features/work_in_progress.feature +1 -0
  28. data/gem_tasks/contributors.rake +4 -0
  29. data/lib/cucumber/ast/background.rb +1 -0
  30. data/lib/cucumber/ast/comment.rb +1 -0
  31. data/lib/cucumber/ast/examples.rb +1 -0
  32. data/lib/cucumber/ast/feature.rb +10 -0
  33. data/lib/cucumber/ast/features.rb +6 -1
  34. data/lib/cucumber/ast/outline_table.rb +4 -1
  35. data/lib/cucumber/ast/py_string.rb +1 -1
  36. data/lib/cucumber/ast/scenario.rb +1 -0
  37. data/lib/cucumber/ast/scenario_outline.rb +2 -0
  38. data/lib/cucumber/ast/step.rb +5 -1
  39. data/lib/cucumber/ast/step_collection.rb +1 -0
  40. data/lib/cucumber/ast/step_invocation.rb +1 -0
  41. data/lib/cucumber/ast/table.rb +306 -52
  42. data/lib/cucumber/ast/tags.rb +1 -0
  43. data/lib/cucumber/ast/visitor.rb +2 -1
  44. data/lib/cucumber/cli/configuration.rb +28 -278
  45. data/lib/cucumber/cli/drb_client.rb +3 -1
  46. data/lib/cucumber/cli/language_help_formatter.rb +9 -7
  47. data/lib/cucumber/cli/main.rb +16 -2
  48. data/lib/cucumber/cli/options.rb +370 -0
  49. data/lib/cucumber/cli/profile_loader.rb +65 -0
  50. data/lib/cucumber/core_ext/instance_exec.rb +8 -5
  51. data/lib/cucumber/feature_file.rb +7 -1
  52. data/lib/cucumber/filter.rb +2 -2
  53. data/lib/cucumber/formatter/ansicolor.rb +42 -9
  54. data/lib/cucumber/formatter/console.rb +1 -1
  55. data/lib/cucumber/formatter/html.rb +12 -10
  56. data/lib/cucumber/formatter/junit.rb +63 -26
  57. data/lib/cucumber/formatter/pretty.rb +20 -5
  58. data/lib/cucumber/formatter/progress.rb +1 -1
  59. data/lib/cucumber/formatter/steps.rb +49 -0
  60. data/lib/cucumber/languages.yml +6 -6
  61. data/lib/cucumber/parser/feature.rb +90 -63
  62. data/lib/cucumber/parser/feature.tt +28 -1
  63. data/lib/cucumber/parser/i18n/language.rb +12 -5
  64. data/lib/cucumber/parser/table.rb +25 -25
  65. data/lib/cucumber/rake/task.rb +9 -3
  66. data/lib/cucumber/step_definition.rb +1 -1
  67. data/lib/cucumber/step_match.rb +1 -1
  68. data/lib/cucumber/step_mother.rb +3 -1
  69. data/lib/cucumber/version.rb +2 -2
  70. data/lib/cucumber/webrat/table_locator.rb +66 -0
  71. data/rails_generators/cucumber/cucumber_generator.rb +5 -1
  72. data/rails_generators/cucumber/templates/cucumber +3 -2
  73. data/rails_generators/cucumber/templates/cucumber.rake +18 -6
  74. data/rails_generators/cucumber/templates/cucumber_environment.rb +7 -4
  75. data/rails_generators/cucumber/templates/env.rb +1 -0
  76. data/rails_generators/cucumber/templates/spork_env.rb +1 -0
  77. data/rails_generators/cucumber/templates/webrat_steps.rb +22 -0
  78. data/rails_generators/feature/templates/feature.erb +1 -1
  79. data/rails_generators/feature/templates/steps.erb +2 -8
  80. data/spec/cucumber/ast/table_spec.rb +169 -0
  81. data/spec/cucumber/cli/configuration_spec.rb +144 -101
  82. data/spec/cucumber/cli/main_spec.rb +14 -5
  83. data/spec/cucumber/cli/options_spec.rb +311 -0
  84. data/spec/cucumber/cli/profile_loader_spec.rb +10 -0
  85. data/spec/cucumber/core_ext/proc_spec.rb +16 -2
  86. data/spec/cucumber/formatter/html_spec.rb +18 -0
  87. data/spec/cucumber/formatter/progress_spec.rb +2 -2
  88. data/spec/cucumber/parser/table_parser_spec.rb +1 -1
  89. data/spec/spec.opts +3 -1
  90. metadata +18 -4
  91. data/lib/cucumber/webrat/mechanize_world.rb +0 -82
data/History.txt CHANGED
@@ -1,12 +1,76 @@
1
- == 0.3.12 (In Git)
1
+ == (In Git)
2
2
 
3
- The Egality release
3
+ === New features
4
+ * script/generate cucumber sets up 'cucumber:ok' and 'cucumber:wip' tasks and deprecates 'features'. More Kanban love. (#344 Aslak Hellesøy)
5
+ * Better JUnit formatter: feature->testsuite, scenario->testcase. Better timing and support for background and scenario outline. (Mads Buus Westmark)
6
+ * Added examples/python that uses rubypython. (Aslak Hellesøy)
7
+ * Checks the number of available colors on the terminal with ruby-terminfo if ruby-terminfo is installed.
8
+ This prevents Apple's Terminal.app from stalling (Yugui - Yuki Sonoda).
9
+ * Set 'xterm-256color' to TERM if your terminal supports grey.
10
+ * ruby-terminfo is available as genki-ruby-terminfo gem from github.
11
+ * Document builtin formatters with --help. (#406 Aslak Hellesøy)
12
+ * Added support for using regular expressions when mapping table headers. (Peter Williams)
13
+
14
+ == 0.3.93 2009-08-03
15
+
16
+ Highlights in this release: Improved profile handling (cucumber.yml) and a fix for cucumber hanging.
17
+
18
+ === New features
19
+ * script/generate cucumber --spork now sets up a spork gem dependency in the cucumber.rb environment. (Aslak Hellesøy)
20
+ * Feature files defined on the command line override any that are present in profiles. (#344 Ben Mabey)
21
+ * Default (STDOUT) formatter defined in profile can be overridden from the command line. (#344 Ben Mabey)
22
+ * Displays which profile, if any, is being used. (Ben Mabey)
23
+ * click_link_within(parent, link) webrat step (Joakim Kolsjö)
24
+
25
+ === Bugfixes
26
+ * script/cucumber correctly loads the gem's binary if the plugin isn't installed.
27
+ * Cucumber hangs waiting for Ctrl+C if an Error is raised (#374 Aslak Hellesøy)
28
+
29
+ == 0.3.92 2009-07-29
30
+
31
+ This release has some minor improvements to the new Table.diff! functionality. For example,
32
+ if you're using Webrat and you want to compare a feature table with a HTML table containing
33
+ links in one of the columns, you can do:
34
+
35
+ actual = Cucumber::Ast::Table.new(table_at('table').to_a)
36
+ actual.map_column!('Name') { |text| text.strip.match(/>(.*)</)[1] }
37
+ table.diff!(actual)
38
+
39
+ === New features
40
+ * Allow Step Definitions to accept mix of required & optional args (Niels Ganser)
41
+ * table_a.diff!(table_b) now uses column conversions from both tables (Table#map_column!) (Aslak Hellesøy)
42
+
43
+ === Bugfixes
44
+ * Upgrade Sinatra example to work with rack-test 0.3.0 and aslakhellesoy-webrat 0.4.4.1 (Aslak Hellesøy)
45
+ * require 'cucumber/webrat/table_locator' added to Spork environment for Rails (Anders Furseth)
46
+
47
+ === Changed Features
48
+ * The 'default' profile is now ALWAYS used unless you specify another profile or use the -P or --no-profile flag. (#344 Ben Mabey)
49
+
50
+ == 0.3.91 2009-07-27
51
+
52
+ === New Features
53
+ * CTRL-C will exit immediately instead of carrying on until all features are run. (Aslak Hellesøy)
54
+ * Run can be stopped programmatically by setting $cucumber_interrupted = true, for example in an After block. (Aslak Hellesøy)
55
+ * Table support for cuke4duke
56
+
57
+
58
+ == 0.3.90 2009-07-22
59
+
60
+ The Hot summer release
61
+
62
+ This is a hot summer in Norway, and Cucumbers are growing in abundance. To celebrate this we give you
63
+ a new release with lots of new features and bugfixes. This is also one of the last releases in the 0.3 series
64
+ (hence the 0.3.90 number), so 0.4 (or maybe 1.0!) will be coming up soon. The highlights of this release are:
65
+
66
+ === Egality
4
67
 
5
68
  English is not the world's most spoken language, so why should Cucumber force non-English speakers to use the
6
69
  --language flag? As of this release you're no longer forced to do that. Instead, you can add a comment header
7
70
  to your .feature files:
8
71
 
9
72
  # language: fr
73
+ # Cucumber understands that this is French
10
74
  Fonctionnalité: Trou de boulette
11
75
 
12
76
  If you don't have that header, Cucumber will work as before - using whatever you specified with --language,
@@ -14,6 +78,45 @@ or default to English if no --language option was specified. A nice side effect
14
78
  have features in several languages side by side and run them in the same cucumber. (Not recommended unless
15
79
  you want to take polyglot programming to an extreme level).
16
80
 
81
+ === Table diffing (experimental)
82
+
83
+ When you pass a table as an argument to your Then steps you often want to compare that table
84
+ to some actual values. In previous releases you had to iterate over the table's values and manually
85
+ compare each row using cell.should equal('foo') or assert_equal('foo', cell). If a discrepancy was found
86
+ you'd get an error, but it was hard to see how the entire expected data set was different from the actual one.
87
+
88
+ With this release you have a much more powerful way to compare expected tables with actual data. An
89
+ Ast::Table object now has a new #diff!(table) method that you can invoke in your step definitions
90
+ that take table arguments. If the table you pass in is different from the expected table (from your
91
+ plain text step), Cucumber will print the difference for each of the row or column and fail your step.
92
+
93
+ The Table#diff! method expects an Array of Array, Array of Hash (similar to what you'd get from table#hashes)
94
+ or simply another Ast::Table object. Here is a simple example:
95
+
96
+ Then /^I should see the following cukes:$/ do |expected_cukes_table|
97
+ actual_table = ... # For example [['Latin', 'English'], ['Cucumis sativus', 'Cucumber'], ['Cucumis anguria', 'Burr Gherkin']]
98
+ expected_cukes_table.diff!(actual_table)
99
+ end
100
+
101
+ As an extra bonus we provide Webrat users with a new #table_at(selector) method that you can use to transform
102
+ an HTML table into an Array of Array, so that you can easily compare the contents of your HTML table to
103
+ expected data passed to a step. Here is an example:
104
+
105
+ Then /^I should see the following cukes:$/ do |expected_cukes_table|
106
+ expected_cukes_table.diff!(table_at('#cuke_table').to_a)
107
+ end
108
+
109
+ You can do the same trick to compare data from a Rails ActiveRecord table (although this is not a
110
+ recommended practice - your Then steps should compare against what users *see*, not what's in the
111
+ database):
112
+
113
+ # This requires that you use the column names in the header of the plain text expected table
114
+ Then /^I should have the following cukes in the database:$/ do |expected_cukes_table|
115
+ expected_cukes_table.diff!(Cuke.find(:all).map(&attributes))
116
+ end
117
+
118
+ === Environment variables
119
+
17
120
  Another useful new feature is the ability to define environment variables on Cucumber's command line (just
18
121
  like you can with Rake). Example:
19
122
 
@@ -22,10 +125,13 @@ like you can with Rake). Example:
22
125
  You can now pick up ENV['FOO'] in ruby (for example in env.rb) and take actions according to the value,
23
126
  for example enabling your super hack that validates all HTTP responses for XHTML validity.
24
127
 
25
- This release also has several bugfixes related to --format and Before/Adter hooks.
128
+ This release also has several bugfixes related to --format and Before/After hooks.
26
129
 
27
130
  === Bugfixes
28
- * Before and After hooks run after everything is finished whn there are 2+ --format options (#371 Aslak Hellesøy)
131
+ * Fix some misspellings which affect test fail for Korean example (#373 Dongju Kim)
132
+ * Make it possible to write non-localized step definitions (#377 Aslak Hellesøy)
133
+ * Table cells containing unicode are rendered incorrectly (#386 Stefan Kanev)
134
+ * Before and After hooks run after everything is finished when there are 2+ --format options (#371 Aslak Hellesøy)
29
135
  * When using --out and two --format the first is not delivered inline with execution of features (#361 Aslak Hellesøy)
30
136
  * Profile Formatter broken (#370 Aslak Hellesøy)
31
137
  * Default profile usage with --drb flag degrades gracefully with no server. (#367 Ben Mabey)
@@ -33,15 +139,22 @@ This release also has several bugfixes related to --format and Before/Adter hook
33
139
  * rake gems no longer lists cucumber as a [F]ramework gem (David Chelimsky)
34
140
  * CLI issues correct exit code when using --drb. Requires Spork version >= 0.5.1. (#355 Ben Mabey)
35
141
  * Make sure script/generate cucumber --spork uses the cucumber Rails environment (Philippe Lafoucrière)
142
+ * Fixed bug with rake task raising errors with feature files with spaces (#380 Joseph Wilk)
36
143
 
37
144
  === New Features
145
+ * I should see should support regexes (#382 John Ferlito)
146
+ * Access to scenario outline name from After hook scenario parameter (#342 Aslak Hellesøy)
147
+ * Allow multiple --tags switches to be passed
148
+ * Load step definitions from vendored gems and plugins (#388 Mike Burns)
38
149
  * New --format steps formatter. Variant of the usage formatter that lists available step definitions (Demetrius Nunes)
39
150
  * Possibility to specify scenario language as part of the .feature file (#345 Aslak Hellesøy)
40
151
  * Support specifying environment variables using foo=bar syntax on command line or in profiles (#362 Bryan Helmkamp)
41
152
  * Display failing scenarios at the end of pretty format to make it easier for people to play them back (#360 Ryan Bigg)
42
153
 
43
154
  === Changed Features
155
+ * When using --tags, positive tags are &&'ed while negative tags are ||'ed (John Wilger)
44
156
  * The data returned from Table#hashes and similar methods are frozen. Dup if you need to modify. (Aslak Hellesøy)
157
+ * Visitor.visit_table_cell_value(value, col_width, status) is now visitor.visit_table_cell_value(value, status)
45
158
 
46
159
  == 0.3.11 2009-06-05
47
160
 
data/Manifest.txt CHANGED
@@ -239,6 +239,7 @@ examples/tickets/features/step_definitons/246_steps.rb
239
239
  examples/tickets/features/step_definitons/248_steps.rb
240
240
  examples/tickets/features/step_definitons/scenario_outline_steps.rb
241
241
  examples/tickets/features/step_definitons/tickets_steps.rb
242
+ examples/tickets/features/table_diffing.feature
242
243
  examples/tickets/features/tickets.feature
243
244
  examples/watir/README.textile
244
245
  examples/watir/Rakefile
@@ -261,6 +262,7 @@ features/html_formatter/a.html
261
262
  features/junit_formatter.feature
262
263
  features/language_from_header.feature
263
264
  features/multiline_names.feature
265
+ features/profiles.feature
264
266
  features/rake_task.feature
265
267
  features/report_called_undefined_steps.feature
266
268
  features/snippet.feature
@@ -268,8 +270,11 @@ features/step_definitions/cucumber_steps.rb
268
270
  features/step_definitions/extra_steps.rb
269
271
  features/steps_formatter.feature
270
272
  features/support/env.rb
273
+ features/table_diffing.feature
274
+ features/unicode_table.feature
271
275
  features/usage.feature
272
276
  features/work_in_progress.feature
277
+ gem_tasks/contributors.rake
273
278
  gem_tasks/deployment.rake
274
279
  gem_tasks/environment.rake
275
280
  gem_tasks/features.rake
@@ -308,6 +313,8 @@ lib/cucumber/cli/configuration.rb
308
313
  lib/cucumber/cli/drb_client.rb
309
314
  lib/cucumber/cli/language_help_formatter.rb
310
315
  lib/cucumber/cli/main.rb
316
+ lib/cucumber/cli/options.rb
317
+ lib/cucumber/cli/profile_loader.rb
311
318
  lib/cucumber/core_ext/exception.rb
312
319
  lib/cucumber/core_ext/instance_exec.rb
313
320
  lib/cucumber/core_ext/proc.rb
@@ -349,6 +356,7 @@ lib/cucumber/step_definition.rb
349
356
  lib/cucumber/step_match.rb
350
357
  lib/cucumber/step_mother.rb
351
358
  lib/cucumber/version.rb
359
+ lib/cucumber/webrat/table_locator.rb
352
360
  lib/cucumber/world.rb
353
361
  rails_generators/cucumber/USAGE
354
362
  rails_generators/cucumber/cucumber_generator.rb
@@ -378,11 +386,14 @@ spec/cucumber/broadcaster_spec.rb
378
386
  spec/cucumber/cli/configuration_spec.rb
379
387
  spec/cucumber/cli/drb_client_spec.rb
380
388
  spec/cucumber/cli/main_spec.rb
389
+ spec/cucumber/cli/options_spec.rb
390
+ spec/cucumber/cli/profile_loader_spec.rb
381
391
  spec/cucumber/core_ext/proc_spec.rb
382
392
  spec/cucumber/core_ext/string_spec.rb
383
393
  spec/cucumber/formatter/ansicolor_spec.rb
384
394
  spec/cucumber/formatter/color_io_spec.rb
385
395
  spec/cucumber/formatter/duration_spec.rb
396
+ spec/cucumber/formatter/html_spec.rb
386
397
  spec/cucumber/formatter/progress_spec.rb
387
398
  spec/cucumber/parser/feature_parser_spec.rb
388
399
  spec/cucumber/parser/table_parser_spec.rb
data/Rakefile CHANGED
@@ -6,4 +6,4 @@ Dir['gem_tasks/**/*.rake'].each { |rake| load rake }
6
6
 
7
7
  # Hoe gives us :default => :test, but we don't have Test::Unit tests.
8
8
  Rake::Task[:default].clear_prerequisites rescue nil # For some super weird reason this fails for some...
9
- task :default => [:spec, :features]
9
+ task :default => [:spec, :cucumber]
data/config/hoe.rb CHANGED
@@ -48,7 +48,8 @@ end
48
48
 
49
49
  # Generate all the Rake tasks
50
50
  # Run 'rake -T' to see list of generated tasks (from gem root directory)
51
- $hoe = Hoe.new(GEM_NAME, VERS) do |p|
51
+ $hoe = Hoe.spec(GEM_NAME) do |p|
52
+ p.version = VERS
52
53
  p.developer(AUTHOR, EMAIL)
53
54
  p.description = DESCRIPTION
54
55
  p.summary = DESCRIPTION
@@ -61,7 +62,7 @@ $hoe = Hoe.new(GEM_NAME, VERS) do |p|
61
62
  #p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
62
63
  p.extra_deps = [
63
64
  ['term-ansicolor', '>= 1.0.3'],
64
- ['treetop', '>= 1.2.6'],
65
+ ['treetop', '>= 1.3.0'],
65
66
  ['diff-lcs', '>= 1.1.2'],
66
67
  ['builder', '>= 2.1.2']
67
68
  ]
data/cucumber.yml CHANGED
@@ -1,2 +1,2 @@
1
- default: --format progress features --tags ~@proposed,~@in_progress
2
- wip: --tags @in_progress --wip features
1
+ default: --format progress --tags ~@proposed,~@wip --strict features
2
+ wip: --tags @wip --wip features
@@ -4,11 +4,11 @@
4
4
  수학을 잘 못하는 사람으로써
5
5
  두숫자의 합을 알고 싶다
6
6
 
7
- 시나리오: 두 숫자를 더하기
8
- 조건 계산기에 50을 입력했음
9
- 그리고 계산기에 70을 입력했음
10
- 만일 내가 add를 누르면
11
- 그러면 화면에 출력된 결과는 120이다
7
+ 시나리오 개요: 두 숫자를 더하기
8
+ 조건 계산기에 <입력1>을 입력했음
9
+ 그리고 계산기에 <입력2>을 입력했음
10
+ 만일 내가 <버튼>를 누르면
11
+ 그러면 화면에 출력된 결과는 <결과>이다
12
12
 
13
13
  예:
14
14
  | 입력1 | 입력2 | 버튼 | 결과 |
@@ -15,7 +15,7 @@ Given /^계산기에 (.*)을 입력했음$/ do |n|
15
15
  @calc.push n.to_i
16
16
  end
17
17
 
18
- When /^내가 (.*)를 누루면$/ do |op|
18
+ When /^내가 (.*)를 누르면$/ do |op|
19
19
  @result = @calc.send op
20
20
  end
21
21
 
@@ -4,7 +4,7 @@ Before do
4
4
  @calc = Kalkulator.new
5
5
  end
6
6
 
7
- Gitt /at jeg har tastet inn (\d+)/ do |n|
7
+ Given /at jeg har tastet inn (\d+)/ do |n|
8
8
  @calc.push n.to_i
9
9
  end
10
10
 
@@ -5,7 +5,7 @@ Funcionalidade: Adição
5
5
  Eu quero saber como somar dois números
6
6
 
7
7
  Cenário: Adicionar dois números
8
- Dado que eu digitei 50 na calculadora
9
- E que eu digitei 70 na calculadora
10
- Quando eu aperto o botão de soma
11
- Então o resultado na calculadora deve ser 120
8
+ Dado que eu digitei 50 na calculadora
9
+ E que eu digitei 70 na calculadora
10
+ Quando eu aperto o botão de soma
11
+ Então o resultado na calculadora deve ser 120
@@ -1,4 +1,5 @@
1
1
  require 'spec/expectations'
2
+ $KCODE = 'u' unless Cucumber::RUBY_1_9
2
3
 
3
4
  Before('@not_used') do
4
5
  raise "Should never run"
@@ -14,4 +15,4 @@ end
14
15
 
15
16
  After('@background_tagged_before_on_outline') do
16
17
  @cukes.should == '888'
17
- end
18
+ end
@@ -1,6 +1,10 @@
1
1
  # See http://wiki.github.com/aslakhellesoy/cucumber/sinatra
2
2
  # for more details about Sinatra with Cucumber
3
3
 
4
+ gem 'rack-test', '=0.3.0'
5
+ gem 'aslakhellesoy-webrat', '=0.4.4.1'
6
+ gem 'sinatra', '=0.9.4'
7
+
4
8
  # Sinatra
5
9
  app_file = File.join(File.dirname(__FILE__), *%w[.. .. app.rb])
6
10
  require app_file
@@ -8,13 +12,15 @@ require app_file
8
12
  Sinatra::Application.app_file = app_file
9
13
 
10
14
  require 'spec/expectations'
11
-
15
+ require 'rack/test'
12
16
  require 'webrat'
17
+
13
18
  Webrat.configure do |config|
14
19
  config.mode = :rack
15
20
  end
16
21
 
17
22
  class MyWorld
23
+ include Rack::Test::Methods
18
24
  include Webrat::Methods
19
25
  include Webrat::Matchers
20
26
 
@@ -0,0 +1,8 @@
1
+ Given /^I defined a first step$/ do
2
+ end
3
+
4
+ When /^I define a second step$/ do
5
+ end
6
+
7
+ Then /^I should also have a third step$/ do
8
+ end
@@ -0,0 +1,8 @@
1
+ Given /^I defined a step 4$/ do
2
+ end
3
+
4
+ When /^I create a step 5$/ do
5
+ end
6
+
7
+ Then /^I should be too tired for step 6$/ do
8
+ end
@@ -64,3 +64,18 @@ end
64
64
  Then /^I should get a no method error for 'backtrace_line'$/ do
65
65
  pending
66
66
  end
67
+
68
+ Then /the table should be different with table:/ do |expected|
69
+ expected.diff!(table(%{
70
+ | b | c | a | d |
71
+ | KASHA | AIIT | BOOYA | X |
72
+ | four | five | three | Y |
73
+ }), :coldiff => true)
74
+ end
75
+
76
+ Then /the table should be different with array:/ do |expected|
77
+ expected.diff!([
78
+ {'a' => 'BOOYA', 'b' => 'KASHA'},
79
+ {'a' => 'three', 'b' => 'four'},
80
+ ])
81
+ end
@@ -0,0 +1,13 @@
1
+ @intentional_failure
2
+ Feature: Tables
3
+ Scenario: Extra row with table
4
+ Then the table should be different with table:
5
+ | a | b |
6
+ | one | two |
7
+ | three | four |
8
+
9
+ Scenario: Extra row and missing column with table
10
+ Then the table should be different with table:
11
+ | a | e | b |
12
+ | one | Q | two |
13
+ | three | R | four |
@@ -19,4 +19,8 @@ end
19
19
  # http://github.com/aslakhellesoy/cucumber/tree/v0.1.15/examples/watir/features/step_definitons/search_steps.rb
20
20
  #
21
21
  # You may keep the page classes along your steps, or even better, put them in separate files, e.g.
22
- # support/pages/google_search.rb
22
+ # support/pages/google_search.rb
23
+ #
24
+ # This technique is called "Page Objects", and you can read more about it here:
25
+ # http://github.com/marekj/watirloo/tree/master
26
+ # We're not using this technique here, since we want to illustrate the basics only.
@@ -13,7 +13,8 @@ Feature: Cucumber command line
13
13
  Given failing expectation
14
14
  expected: "that",
15
15
  got: "this" (using ==)
16
- Diff:
16
+
17
+ Diff:
17
18
  @@ -1,2 +1,2 @@
18
19
  -that
19
20
  +this
@@ -136,10 +136,7 @@
136
136
  features/background/failing_background.feature:5:in `Given failing without a table'</pre></li><li class="step skipped" id="features_background_failing_background_feature_6"><div><span class="keyword">And</span> <span class="step val">'<span class="param">10</span>' cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">failing background</span></h3><ol><li class="step skipped" id="features_background_failing_background_feature_9"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">another failing background</span></h3><ol><li class="step skipped" id="features_background_failing_background_feature_12"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Failing background after previously successful background sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step passed" id="features_background_failing_background_after_success_feature_4"><div><span class="keyword">Given</span> <span class="step val">passing without a table</span></div></li><li class="step passed" id="features_background_failing_background_after_success_feature_5"><div><span class="keyword">And</span> <span class="step val">'<span class="param">10</span>' global cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">passing background</span></h3><ol><li class="step passed" id="features_background_failing_background_after_success_feature_8"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' global cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">failing background</span></h3><ol><li class="step failed" id="features_background_failing_background_after_success_feature_5"><pre class="failed">FAIL (RuntimeError)
137
137
  ./features/step_definitions/sample_steps.rb:2:in `flunker'
138
138
  ./features/step_definitions/sample_steps.rb:37:in `/^'(.+)' global cukes$/'
139
- features/background/failing_background_after_success.feature:5:in `And '10' global cukes'</pre></li><li class="step skipped" id="features_background_failing_background_after_success_feature_11"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' global cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Passing background with multiline args</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step passed" id="features_background_multiline_args_background_feature_4"><div><span class="keyword">Given</span> <span class="step val">table</span></div><table><tr id="row_5"><td class="val" id="row_5_0">a</td><td class="val" id="row_5_1">b</td></tr><tr id="row_6"><td class="val" id="row_6_0">c</td><td class="val" id="row_6_1">d</td></tr></table></li><li class="step passed" id="features_background_multiline_args_background_feature_7"><div><span class="keyword">And</span> <span class="step val">multiline string</span></div><pre class="val"> I'm a cucumber and I'm okay.
140
- I sleep all night and I test all day</pre></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">passing background</span></h3><ol><li class="step passed" id="features_background_multiline_args_background_feature_14"><div><span class="keyword">Then</span> <span class="step val">the table should be</span></div><table><tr id="row_15"><td class="val" id="row_15_0">a</td><td class="val" id="row_15_1">b</td></tr><tr id="row_16"><td class="val" id="row_16_0">c</td><td class="val" id="row_16_1">d</td></tr></table></li><li class="step passed" id="features_background_multiline_args_background_feature_17"><div><span class="keyword">Then</span> <span class="step val">the multiline string should be</span></div><pre class="val"> I'm a cucumber and I'm okay.
141
- I sleep all night and I test all day</pre></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">another passing background</span></h3><ol><li class="step passed" id="features_background_multiline_args_background_feature_24"><div><span class="keyword">Then</span> <span class="step val">the table should be</span></div><table><tr id="row_25"><td class="val" id="row_25_0">a</td><td class="val" id="row_25_1">b</td></tr><tr id="row_26"><td class="val" id="row_26_0">c</td><td class="val" id="row_26_1">d</td></tr></table></li><li class="step passed" id="features_background_multiline_args_background_feature_27"><div><span class="keyword">Then</span> <span class="step val">the multiline string should be</span></div><pre class="val"> I'm a cucumber and I'm okay.
142
- I sleep all night and I test all day</pre></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Passing background sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step passed" id="features_background_passing_background_feature_4"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">10</span>' cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">passing background</span></h3><ol><li class="step passed" id="features_background_passing_background_feature_7"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">another passing background</span></h3><ol><li class="step passed" id="features_background_passing_background_feature_10"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Pending background sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step undefined" id="features_background_pending_background_feature_4"><div><span class="keyword">Given</span> <span class="step val">pending</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">pending background</span></h3><ol><li class="step skipped" id="features_background_pending_background_feature_7"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">another pending background</span></h3><ol><li class="step skipped" id="features_background_pending_background_feature_10"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Failing background with scenario outlines sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step failed" id="features_background_scenario_outline_failing_background_feature_4"><div><span class="keyword">Given</span> <span class="step val">failing without a table</span></div><pre class="failed">FAIL (RuntimeError)
139
+ features/background/failing_background_after_success.feature:5:in `And '10' global cukes'</pre></li><li class="step skipped" id="features_background_failing_background_after_success_feature_11"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' global cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Passing background with multiline args</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step passed" id="features_background_multiline_args_background_feature_4"><div><span class="keyword">Given</span> <span class="step val">table</span></div><table><tr id="row_5"><td class="val" id="row_5_0">a</td><td class="val" id="row_5_1">b</td></tr><tr id="row_6"><td class="val" id="row_6_0">c</td><td class="val" id="row_6_1">d</td></tr></table></li><li class="step passed" id="features_background_multiline_args_background_feature_7"><div><span class="keyword">And</span> <span class="step val">multiline string</span></div><pre class="val"> I'm a cucumber and I'm okay. &#x000A; I sleep all night and I test all day</pre></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">passing background</span></h3><ol><li class="step passed" id="features_background_multiline_args_background_feature_14"><div><span class="keyword">Then</span> <span class="step val">the table should be</span></div><table><tr id="row_15"><td class="val" id="row_15_0">a</td><td class="val" id="row_15_1">b</td></tr><tr id="row_16"><td class="val" id="row_16_0">c</td><td class="val" id="row_16_1">d</td></tr></table></li><li class="step passed" id="features_background_multiline_args_background_feature_17"><div><span class="keyword">Then</span> <span class="step val">the multiline string should be</span></div><pre class="val"> I'm a cucumber and I'm okay. &#x000A; I sleep all night and I test all day</pre></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">another passing background</span></h3><ol><li class="step passed" id="features_background_multiline_args_background_feature_24"><div><span class="keyword">Then</span> <span class="step val">the table should be</span></div><table><tr id="row_25"><td class="val" id="row_25_0">a</td><td class="val" id="row_25_1">b</td></tr><tr id="row_26"><td class="val" id="row_26_0">c</td><td class="val" id="row_26_1">d</td></tr></table></li><li class="step passed" id="features_background_multiline_args_background_feature_27"><div><span class="keyword">Then</span> <span class="step val">the multiline string should be</span></div><pre class="val"> I'm a cucumber and I'm okay. &#x000A; I sleep all night and I test all day</pre></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Passing background sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step passed" id="features_background_passing_background_feature_4"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">10</span>' cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">passing background</span></h3><ol><li class="step passed" id="features_background_passing_background_feature_7"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">another passing background</span></h3><ol><li class="step passed" id="features_background_passing_background_feature_10"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Pending background sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step undefined" id="features_background_pending_background_feature_4"><div><span class="keyword">Given</span> <span class="step val">pending</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">pending background</span></h3><ol><li class="step skipped" id="features_background_pending_background_feature_7"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">another pending background</span></h3><ol><li class="step skipped" id="features_background_pending_background_feature_10"><div><span class="keyword">Then</span> <span class="step val">I should have '<span class="param">10</span>' cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Failing background with scenario outlines sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li class="step failed" id="features_background_scenario_outline_failing_background_feature_4"><div><span class="keyword">Given</span> <span class="step val">failing without a table</span></div><pre class="failed">FAIL (RuntimeError)
143
140
  ./features/step_definitions/sample_steps.rb:2:in `flunker'
144
141
  ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
145
142
  features/background/scenario_outline_failing_background.feature:4:in `Given failing without a table'</pre></li></ol></div><div class="scenario outline"><h3><span class="keyword">Scenario Outline:</span> <span class="val">failing background</span></h3><ol><li class="step skipped" id="features_background_scenario_outline_failing_background_feature_7"><div><span class="keyword">Then</span> <span class="step val">I should have '&lt;count&gt;' cukes</span></div></li></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr id="row_9"><th class="val skipped_param" id="row_9_0">count</th></tr><tr id="row_10"><td class="val skipped" id="row_10_0">10</td></tr><tr><td class="failed" colspan="1"><pre>FAIL (RuntimeError)
@@ -151,7 +148,8 @@ features/call_undefined_step_from_step_def.feature:4:in `Given a step definition
151
148
  ./features/step_definitions/sample_steps.rb:20:in `/^a step definition that calls an undefined step$/'
152
149
  features/call_undefined_step_from_step_def.feature:7:in `Given call step "a step definition that calls an undefined step"'</pre></li></ol></div></div><div class="feature"><h2><span class="val">Feature: Failing expectation</span></h2><p class="narrative"></p><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">Failing expectation</span></h3><ol><li class="step failed" id="features_failing_expectation_feature_4"><div><span class="keyword">Given</span> <span class="step val">failing expectation</span></div><pre class="failed">expected: "that",
153
150
  got: "this" (using ==)
154
- Diff:
151
+
152
+ Diff:
155
153
  @@ -1,2 +1,2 @@
156
154
  -that
157
155
  +this
@@ -168,7 +166,7 @@ which goes on and on and on for three lines
168
166
  yawn</span></h4><table><tr id="row_26"><th class="val skipped_param" id="row_26_0">state</th></tr><tr id="row_27"><td class="val passed" id="row_27_0">passing</td></tr></table></div></div></div><div class="feature"><h2><span class="val">Feature: Outline Sample</span></h2><p class="narrative"></p><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">I have no steps</span></h3><ol></ol></div><div class="scenario outline"><h3><span class="keyword">Scenario Outline:</span> <span class="val">Test state</span></h3><ol><li class="step skipped" id="features_outline_sample_feature_6"><div><span class="keyword">Given</span> <span class="step val">&lt;state&gt; without a table</span></div></li><li class="step skipped" id="features_outline_sample_feature_7"><div><span class="keyword">Given</span> <span class="step val">&lt;other_state&gt; without a table</span></div></li></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Rainbow colours</span></h4><table><tr id="row_9"><th class="val skipped_param" id="row_9_0">state</th><th class="val skipped_param" id="row_9_1">other_state</th></tr><tr id="row_10"><td class="val undefined" id="row_10_0">missing</td><td class="val skipped" id="row_10_1">passing</td></tr><tr id="row_11"><td class="val passed" id="row_11_0">passing</td><td class="val passed" id="row_11_1">passing</td></tr><tr id="row_12"><td class="val failed" id="row_12_0">failing</td><td class="val skipped" id="row_12_1">passing</td></tr><tr><td class="failed" colspan="2"><pre>FAIL (RuntimeError)
169
167
  ./features/step_definitions/sample_steps.rb:2:in `flunker'
170
168
  ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
171
- features/outline_sample.feature:6:in `Given <state> without a table'</pre></td></tr></table></div><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Only passing</span></h4><table><tr id="row_14"><th class="val skipped_param" id="row_14_0">state</th><th class="val skipped_param" id="row_14_1">other_state</th></tr><tr id="row_15"><td class="val passed" id="row_15_0">passing</td><td class="val passed" id="row_15_1">passing</td></tr></table></div></div></div><div class="feature"><pre class="comment"># Feature comment<br/></pre><span class="tag">@one</span><h2><span class="val">Feature: Sample</span></h2><p class="narrative"></p><div class="scenario"><span class="tag">@two</span><span class="tag">@three</span><h3><span class="keyword">Scenario:</span> <span class="val">Missing</span></h3><ol><li class="step undefined" id="features_sample_feature_7"><div><span class="keyword">Given</span> <span class="step val">missing</span></div></li></ol></div><div class="scenario"><pre class="comment"># Scenario comment<br/></pre><span class="tag">@three</span><h3><span class="keyword">Scenario:</span> <span class="val">Passing</span></h3><ol><li class="step passed" id="features_sample_feature_12"><div><span class="keyword">Given</span> <span class="step val">passing</span></div><table><tr id="row_13"><td class="val" id="row_13_0">a</td><td class="val" id="row_13_1">b</td></tr><tr id="row_14"><td class="val" id="row_14_0">c</td><td class="val" id="row_14_1">d</td></tr></table></li></ol></div><div class="scenario"><span class="tag">@four</span><h3><span class="keyword">Scenario:</span> <span class="val">Failing</span></h3><ol><li class="step failed" id="features_sample_feature_18"><div><span class="keyword">Given</span> <span class="step val">failing</span></div><pre class="val"> hello</pre><pre class="failed">FAIL (RuntimeError)
169
+ features/outline_sample.feature:6:in `Given <state> without a table'</pre></td></tr></table></div><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Only passing</span></h4><table><tr id="row_14"><th class="val skipped_param" id="row_14_0">state</th><th class="val skipped_param" id="row_14_1">other_state</th></tr><tr id="row_15"><td class="val passed" id="row_15_0">passing</td><td class="val passed" id="row_15_1">passing</td></tr></table></div></div></div><div class="feature"><pre class="comment"># Feature comment<br/></pre><span class="tag">@one</span><h2><span class="val">Feature: Sample</span></h2><p class="narrative"></p><div class="scenario"><span class="tag">@two</span> <span class="tag">@three</span><h3><span class="keyword">Scenario:</span> <span class="val">Missing</span></h3><ol><li class="step undefined" id="features_sample_feature_7"><div><span class="keyword">Given</span> <span class="step val">missing</span></div></li></ol></div><div class="scenario"><pre class="comment"># Scenario comment<br/></pre><span class="tag">@three</span><h3><span class="keyword">Scenario:</span> <span class="val">Passing</span></h3><ol><li class="step passed" id="features_sample_feature_12"><div><span class="keyword">Given</span> <span class="step val">passing</span></div><table><tr id="row_13"><td class="val" id="row_13_0">a</td><td class="val" id="row_13_1">b</td></tr><tr id="row_14"><td class="val" id="row_14_0">c</td><td class="val" id="row_14_1">d</td></tr></table></li></ol></div><div class="scenario"><span class="tag">@four</span><h3><span class="keyword">Scenario:</span> <span class="val">Failing</span></h3><ol><li class="step failed" id="features_sample_feature_18"><div><span class="keyword">Given</span> <span class="step val">failing</span></div><pre class="val">hello</pre><pre class="failed">FAIL (RuntimeError)
172
170
  ./features/step_definitions/sample_steps.rb:2:in `flunker'
173
171
  ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
174
172
  features/sample.feature:18:in `Given failing'</pre></li></ol></div></div><div class="feature"><h2><span class="val">Feature: search examples</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val">Hantu Pisang background match</span></h3><ol><li class="step passed" id="features_search_sample_feature_4"><div><span class="keyword">Given</span> <span class="step val">passing without a table</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">should match Hantu Pisang</span></h3><ol><li class="step passed" id="features_search_sample_feature_7"><div><span class="keyword">Given</span> <span class="step val">passing without a table</span></div></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">Ignore me</span></h3><ol><li class="step failed" id="features_search_sample_feature_10"><div><span class="keyword">Given</span> <span class="step val">failing without a table</span></div><pre class="failed">FAIL (RuntimeError)
@@ -182,4 +180,4 @@ features/search_sample.feature:13:in `Given <state> without a table'</pre></td><
182
180
  ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
183
181
  features/search_sample.feature:25:in `Given <state> without a table'</pre></td></tr></table></div></div></div><div class="feature"><span class="tag">@lots</span><h2><span class="val">Feature: Tons of cukes</span></h2><p class="narrative"></p><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">Lots and lots</span></h3><ol><li class="step passed" id="features_tons_of_cukes_feature_4"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step failed" id="features_tons_of_cukes_feature_5"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div><pre class="failed">We already have 2 cukes! (RuntimeError)
184
182
  ./features/step_definitions/sample_steps.rb:28:in `/^'(.+)' cukes$/'
185
- features/tons_of_cukes.feature:5:in `Given '2' cukes'</pre></li><li class="step skipped" id="features_tons_of_cukes_feature_6"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_7"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_8"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_9"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_10"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_11"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_12"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_13"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_14"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_15"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_16"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_17"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_18"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_19"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_20"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_21"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_22"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_23"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_24"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_25"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_26"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_27"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_28"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_29"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_30"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_31"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_32"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_33"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_34"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_35"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_36"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_37"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_38"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_39"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_40"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_41"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_42"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_43"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_44"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_45"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_46"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_47"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_48"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_49"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_50"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_51"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_52"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: undefined multiline args</span></h2><p class="narrative"></p><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">pystring</span></h3><ol><li class="step undefined" id="features_undefined_multiline_args_feature_4"><div><span class="keyword">Given</span> <span class="step val">a pystring</span></div><pre class="val"> example</pre></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">table</span></h3><ol><li class="step undefined" id="features_undefined_multiline_args_feature_10"><div><span class="keyword">Given</span> <span class="step val">a table</span></div><table><tr id="row_11"><td class="val" id="row_11_0">table</td></tr><tr id="row_12"><td class="val" id="row_12_0">example</td></tr></table></li></ol></div></div><div class="duration">0m30.005s</div></div></body></html>
183
+ features/tons_of_cukes.feature:5:in `Given '2' cukes'</pre></li><li class="step skipped" id="features_tons_of_cukes_feature_6"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_7"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_8"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_9"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_10"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_11"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_12"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_13"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_14"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_15"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_16"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_17"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_18"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_19"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_20"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_21"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_22"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_23"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_24"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_25"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_26"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_27"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_28"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_29"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_30"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_31"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_32"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_33"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_34"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_35"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_36"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_37"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_38"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_39"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_40"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_41"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_42"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_43"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_44"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_45"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_46"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_47"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_48"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_49"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_50"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_51"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li><li class="step skipped" id="features_tons_of_cukes_feature_52"><div><span class="keyword">Given</span> <span class="step val">'<span class="param">2</span>' cukes</span></div></li></ol></div></div><div class="feature"><h2><span class="val">Feature: undefined multiline args</span></h2><p class="narrative"></p><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">pystring</span></h3><ol><li class="step undefined" id="features_undefined_multiline_args_feature_4"><div><span class="keyword">Given</span> <span class="step val">a pystring</span></div><pre class="val"> example</pre></li></ol></div><div class="scenario"><h3><span class="keyword">Scenario:</span> <span class="val">table</span></h3><ol><li class="step undefined" id="features_undefined_multiline_args_feature_10"><div><span class="keyword">Given</span> <span class="step val">a table</span></div><table><tr id="row_11"><td class="val" id="row_11_0">table</td></tr><tr id="row_12"><td class="val" id="row_12_0">example</td></tr></table></li></ol></div></div><div class="duration">0m30.005s</div></div></body></html>