cucumber 0.8.5 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (181) hide show
  1. data/.rspec +1 -1
  2. data/LICENSE +1 -1
  3. data/Rakefile +5 -51
  4. data/bin/cucumber +7 -1
  5. data/cucumber.gemspec +463 -679
  6. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -1
  7. data/examples/i18n/he/features/step_definitons/calculator_steps.rb +1 -1
  8. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +4 -7
  9. data/examples/i18n/ru/features/division.feature +2 -2
  10. data/examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb +3 -3
  11. data/examples/sinatra/features/support/env.rb +2 -5
  12. data/examples/v8/features/fibonacci.feature +1 -1
  13. data/examples/watir/features/step_definitions/search_steps.rb +1 -1
  14. data/features/background.feature +284 -95
  15. data/features/custom_formatter.feature +3 -73
  16. data/features/json_formatter.feature +160 -245
  17. data/features/step_definitions/cucumber_steps.rb +7 -153
  18. data/features/support/env.rb +18 -140
  19. data/fixtures/junit/features/pending.feature +3 -1
  20. data/fixtures/self_test/features/support/env.rb +8 -0
  21. data/fixtures/tickets/features.html +1 -1
  22. data/gem_tasks/examples.rake +1 -1
  23. data/lib/cucumber.rb +12 -0
  24. data/lib/cucumber/ast.rb +1 -1
  25. data/lib/cucumber/ast/background.rb +21 -5
  26. data/lib/cucumber/ast/examples.rb +12 -4
  27. data/lib/cucumber/ast/feature.rb +13 -5
  28. data/lib/cucumber/ast/feature_element.rb +9 -4
  29. data/lib/cucumber/ast/outline_table.rb +4 -4
  30. data/lib/cucumber/ast/scenario.rb +7 -5
  31. data/lib/cucumber/ast/scenario_outline.rb +23 -15
  32. data/lib/cucumber/ast/step.rb +5 -0
  33. data/lib/cucumber/ast/step_invocation.rb +21 -15
  34. data/lib/cucumber/ast/table.rb +14 -8
  35. data/lib/cucumber/ast/tree_walker.rb +10 -48
  36. data/lib/cucumber/cli/configuration.rb +33 -8
  37. data/lib/cucumber/cli/main.rb +20 -35
  38. data/lib/cucumber/cli/options.rb +8 -7
  39. data/lib/cucumber/cli/profile_loader.rb +2 -0
  40. data/lib/cucumber/core_ext/proc.rb +2 -1
  41. data/lib/cucumber/feature_file.rb +47 -15
  42. data/lib/cucumber/formatter/ansicolor.rb +3 -5
  43. data/lib/cucumber/formatter/console.rb +27 -23
  44. data/lib/cucumber/formatter/cucumber.css +34 -17
  45. data/lib/cucumber/formatter/cucumber.sass +173 -182
  46. data/lib/cucumber/formatter/html.rb +46 -11
  47. data/lib/cucumber/formatter/io.rb +2 -4
  48. data/lib/cucumber/formatter/json.rb +15 -152
  49. data/lib/cucumber/formatter/json_pretty.rb +5 -6
  50. data/lib/cucumber/formatter/junit.rb +28 -22
  51. data/lib/cucumber/formatter/pdf.rb +6 -6
  52. data/lib/cucumber/formatter/pretty.rb +5 -5
  53. data/lib/cucumber/formatter/rerun.rb +22 -11
  54. data/lib/cucumber/formatter/unicode.rb +41 -20
  55. data/lib/cucumber/js_support/js_dsl.js +4 -4
  56. data/lib/cucumber/js_support/js_language.rb +9 -5
  57. data/lib/cucumber/js_support/js_snippets.rb +2 -2
  58. data/lib/cucumber/language_support.rb +2 -2
  59. data/lib/cucumber/parser/gherkin_builder.rb +35 -30
  60. data/lib/cucumber/platform.rb +8 -8
  61. data/lib/cucumber/py_support/py_language.rb +2 -2
  62. data/lib/cucumber/rake/task.rb +80 -31
  63. data/lib/cucumber/rb_support/rb_dsl.rb +1 -0
  64. data/lib/cucumber/rb_support/rb_language.rb +10 -8
  65. data/lib/cucumber/rb_support/rb_step_definition.rb +8 -0
  66. data/lib/cucumber/rb_support/rb_transform.rb +17 -0
  67. data/lib/cucumber/rb_support/rb_world.rb +26 -18
  68. data/lib/cucumber/rspec/doubles.rb +3 -3
  69. data/lib/cucumber/step_match.rb +6 -2
  70. data/lib/cucumber/step_mother.rb +6 -427
  71. data/lib/cucumber/wire_support/configuration.rb +4 -1
  72. data/lib/cucumber/wire_support/wire_language.rb +3 -10
  73. data/spec/cucumber/ast/background_spec.rb +68 -6
  74. data/spec/cucumber/ast/feature_factory.rb +5 -4
  75. data/spec/cucumber/ast/feature_spec.rb +4 -4
  76. data/spec/cucumber/ast/outline_table_spec.rb +1 -1
  77. data/spec/cucumber/ast/scenario_outline_spec.rb +15 -11
  78. data/spec/cucumber/ast/scenario_spec.rb +4 -4
  79. data/spec/cucumber/ast/step_spec.rb +3 -3
  80. data/spec/cucumber/ast/table_spec.rb +38 -2
  81. data/spec/cucumber/ast/tree_walker_spec.rb +2 -2
  82. data/spec/cucumber/broadcaster_spec.rb +1 -1
  83. data/spec/cucumber/cli/configuration_spec.rb +32 -6
  84. data/spec/cucumber/cli/drb_client_spec.rb +2 -3
  85. data/spec/cucumber/cli/main_spec.rb +43 -43
  86. data/spec/cucumber/cli/options_spec.rb +28 -1
  87. data/spec/cucumber/cli/profile_loader_spec.rb +1 -1
  88. data/spec/cucumber/core_ext/proc_spec.rb +1 -1
  89. data/spec/cucumber/formatter/ansicolor_spec.rb +1 -1
  90. data/spec/cucumber/formatter/duration_spec.rb +1 -1
  91. data/spec/cucumber/formatter/html_spec.rb +3 -5
  92. data/spec/cucumber/formatter/junit_spec.rb +16 -2
  93. data/spec/cucumber/formatter/progress_spec.rb +1 -1
  94. data/spec/cucumber/formatter/spec_helper.rb +11 -12
  95. data/spec/cucumber/rb_support/rb_language_spec.rb +241 -28
  96. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +33 -28
  97. data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +1 -1
  98. data/spec/cucumber/step_match_spec.rb +11 -9
  99. data/spec/cucumber/wire_support/configuration_spec.rb +1 -1
  100. data/spec/cucumber/wire_support/connection_spec.rb +1 -1
  101. data/spec/cucumber/wire_support/wire_exception_spec.rb +1 -1
  102. data/spec/cucumber/wire_support/wire_language_spec.rb +1 -1
  103. data/spec/cucumber/wire_support/wire_packet_spec.rb +1 -1
  104. data/spec/cucumber/wire_support/wire_step_definition_spec.rb +1 -1
  105. data/spec/cucumber/world/pending_spec.rb +2 -2
  106. data/spec/spec_helper.rb +13 -20
  107. metadata +11 -222
  108. data/.gitignore +0 -20
  109. data/Caliper.yml +0 -4
  110. data/History.txt +0 -1552
  111. data/README.rdoc +0 -26
  112. data/VERSION.yml +0 -5
  113. data/examples/i18n/ro/features/suma.feature +0 -11
  114. data/features/announce.feature +0 -164
  115. data/features/around_hooks.feature +0 -232
  116. data/features/bug_371.feature +0 -32
  117. data/features/bug_464.feature +0 -16
  118. data/features/bug_475.feature +0 -42
  119. data/features/bug_585_tab_indentation.feature +0 -22
  120. data/features/bug_600.feature +0 -67
  121. data/features/call_steps_from_stepdefs.feature +0 -154
  122. data/features/cucumber_cli.feature +0 -591
  123. data/features/cucumber_cli_outlines.feature +0 -117
  124. data/features/default_snippets.feature +0 -42
  125. data/features/diffing.feature +0 -25
  126. data/features/drb_server_integration.feature +0 -174
  127. data/features/exception_in_after_block.feature +0 -127
  128. data/features/exception_in_after_step_block.feature +0 -104
  129. data/features/exception_in_before_block.feature +0 -98
  130. data/features/exclude_files.feature +0 -20
  131. data/features/expand.feature +0 -60
  132. data/features/html_formatter.feature +0 -8
  133. data/features/html_formatter/a.html +0 -582
  134. data/features/junit_formatter.feature +0 -88
  135. data/features/language_from_header.feature +0 -30
  136. data/features/language_help.feature +0 -78
  137. data/features/listener_debugger_formatter.feature +0 -42
  138. data/features/multiline_names.feature +0 -44
  139. data/features/negative_tagged_hooks.feature +0 -60
  140. data/features/post_configuration_hook.feature +0 -37
  141. data/features/profiles.feature +0 -126
  142. data/features/rake_task.feature +0 -152
  143. data/features/report_called_undefined_steps.feature +0 -34
  144. data/features/rerun_formatter.feature +0 -45
  145. data/features/simplest.feature +0 -11
  146. data/features/snippet.feature +0 -23
  147. data/features/snippets_when_using_star_keyword.feature +0 -36
  148. data/features/step_definitions/extra_steps.rb +0 -2
  149. data/features/step_definitions/simplest_steps.rb +0 -3
  150. data/features/step_definitions/wire_steps.rb +0 -32
  151. data/features/support/env.rb.simplest +0 -7
  152. data/features/support/fake_wire_server.rb +0 -77
  153. data/features/table_diffing.feature +0 -45
  154. data/features/table_mapping.feature +0 -34
  155. data/features/tag_logic.feature +0 -258
  156. data/features/transform.feature +0 -245
  157. data/features/unicode_table.feature +0 -35
  158. data/features/usage_and_stepdefs_formatter.feature +0 -169
  159. data/features/wire_protocol.feature +0 -332
  160. data/features/wire_protocol_table_diffing.feature +0 -119
  161. data/features/wire_protocol_tags.feature +0 -87
  162. data/features/wire_protocol_timeouts.feature +0 -63
  163. data/features/work_in_progress.feature +0 -156
  164. data/fixtures/json/features/pystring.feature +0 -8
  165. data/fixtures/self_test/features/background/background_tagged_before_on_outline.feature +0 -12
  166. data/fixtures/self_test/features/background/background_with_name.feature +0 -7
  167. data/fixtures/self_test/features/background/failing_background.feature +0 -12
  168. data/fixtures/self_test/features/background/failing_background_after_success.feature +0 -11
  169. data/fixtures/self_test/features/background/multiline_args_background.feature +0 -32
  170. data/fixtures/self_test/features/background/passing_background.feature +0 -10
  171. data/fixtures/self_test/features/background/pending_background.feature +0 -10
  172. data/fixtures/self_test/features/background/scenario_outline_failing_background.feature +0 -16
  173. data/fixtures/self_test/features/background/scenario_outline_passing_background.feature +0 -16
  174. data/gem_tasks/features.rake +0 -14
  175. data/gem_tasks/sdoc.rake +0 -12
  176. data/lib/cucumber/ast/py_string.rb +0 -80
  177. data/lib/cucumber/formatter/color_io.rb +0 -23
  178. data/lib/cucumber/formatter/tag_cloud.rb +0 -35
  179. data/spec/cucumber/ast/py_string_spec.rb +0 -40
  180. data/spec/cucumber/formatter/color_io_spec.rb +0 -29
  181. data/spec/cucumber/step_mother_spec.rb +0 -302
@@ -1,16 +0,0 @@
1
- Feature: https://rspec.lighthouseapp.com/projects/16211/tickets/464
2
- Scenario: Limiting with tags which do not exist in the features
3
- Given a standard Cucumber project directory structure
4
- And a file named "features/f.feature" with:
5
- """
6
- Feature: Test
7
- In order to test
8
- As a tester
9
- I want to test
10
-
11
- @tag
12
- Scenario: Testing
13
- Given I'm a test
14
- """
15
- When I run cucumber -q features/f.feature --tag @i_dont_exist
16
- Then it should pass
@@ -1,42 +0,0 @@
1
- Feature: https://rspec.lighthouseapp.com/projects/16211/tickets/475
2
- Scenario: error on pystring in scenario outline with pretty formatter
3
- Given a standard Cucumber project directory structure
4
- And a file named "features/f.feature" with:
5
- """
6
- Feature: F
7
- Scenario Outline: S
8
- Given a multiline string:
9
- \"\"\"
10
- hello <who>
11
- \"\"\"
12
- Examples:
13
- | who |
14
- | aslak |
15
- | david |
16
- """
17
- And a file named "features/step_definitions/steps.rb" with:
18
- """
19
- Given /a multiline string:/ do |s| s.should =~ /hello (\w+)/
20
- end
21
- """
22
- When I run cucumber features/f.feature
23
- Then STDERR should be empty
24
- And it should pass with
25
- """
26
- Feature: F
27
-
28
- Scenario Outline: S # features/f.feature:2
29
- Given a multiline string: # features/step_definitions/steps.rb:1
30
- \"\"\"
31
- hello <who>
32
- \"\"\"
33
-
34
- Examples:
35
- | who |
36
- | aslak |
37
- | david |
38
-
39
- 2 scenarios (2 passed)
40
- 2 steps (2 passed)
41
-
42
- """
@@ -1,22 +0,0 @@
1
- # Make sure tab indentation is preserved in this feature!
2
- Feature: https://rspec.lighthouseapp.com/projects/16211/tickets/585
3
- Scenario: Tab indentation should work
4
- Given a standard Cucumber project directory structure
5
- And a file named "features/f.feature" with:
6
- """
7
- Feature: developer creates a skeleton Ruby application
8
- Scenario: create a new application
9
- Given a tab indented pystring:
10
- \"\"\"
11
- I'm tab
12
- and space indented
13
- \"\"\"
14
- And a file named "features/step_definitions/steps.rb" with:
15
- \"\"\"
16
- Given /a tab indented pystring:/ do |s| s.should == "I'm tab\n and space indented"
17
- end
18
- \"\"\"
19
- """
20
- When I run cucumber features/f.feature
21
- Then STDERR should be empty
22
- And it should pass
@@ -1,67 +0,0 @@
1
- Feature: http://rspec.lighthouseapp.com/projects/16211/tickets/600-inconsistent-order-of-execution-background-and-before-in-070beta2
2
-
3
- Scenario: Background executed twice when scenario follows scenario outline
4
- Given a standard Cucumber project directory structure
5
- And a file named "features/t.feature" with:
6
- """
7
- Feature: test
8
- Background:
9
- Given I am in the background
10
-
11
- Scenario Outline: test 1
12
- Given I am a step
13
-
14
- Examples:
15
- | a |
16
- | 1 |
17
-
18
- Scenario: test 2
19
- """
20
- And a file named "features/step_definitions/t_steps.rb" with:
21
- """
22
- Given "I am in the background" do
23
- puts "Within background"
24
- end
25
-
26
- Given "I am a step" do
27
- # no-op
28
- end
29
- """
30
- And a file named "features/support/env.rb" with:
31
- """
32
- module TestWorld
33
- def before_scenario
34
- puts "Before scenario"
35
- end
36
-
37
- def after_scenario
38
- puts "After scenario"
39
- end
40
- end
41
-
42
- World(TestWorld)
43
-
44
- Before do
45
- before_scenario
46
- end
47
-
48
- After do
49
- after_scenario
50
- end
51
- """
52
- When I run cucumber -f progress features/t.feature
53
- Then it should pass with
54
- """
55
- Before scenario
56
- Within background
57
- .--After scenario
58
- Before scenario
59
- Within background
60
- .After scenario
61
-
62
-
63
- 2 scenarios (2 passed)
64
- 3 steps (3 passed)
65
-
66
- """
67
-
@@ -1,154 +0,0 @@
1
- Feature: http://gist.github.com/221223
2
- In order to make it easier to extract several steps from
3
- a feature file to a step definition I want to be able to
4
- copy and paste.
5
-
6
- Background:
7
- Given a standard Cucumber project directory structure
8
- And a file named "features/f.feature" with:
9
- """
10
- Feature: Test
11
-
12
- Scenario: Multiline string
13
- Given a multiline string:
14
- \"\"\"
15
- hello
16
- world
17
- \"\"\"
18
-
19
- Scenario: Call a multiline string
20
- Given I call a multiline string with MAMA
21
-
22
- Scenario: Call a table
23
- Given I call a table with MAMA
24
-
25
- Scenario: Call a multiline string using keyword
26
- Given I use keyword to call a multiline string with BANG
27
- """
28
- And a file named "features/step_definitions/steps.rb" with:
29
- """
30
- And /^a multiline string:$/ do |s| x=1
31
- raise "I got multiline:\n#{s}"
32
- end
33
-
34
- Given /^a table:$/ do |t| x=1
35
- raise "I got table:\n#{t.raw.inspect}"
36
- end
37
-
38
- Given /^I call a multiline string with (.*)$/ do |s| x=1
39
- steps %Q{
40
- And a multiline string:
41
- \"\"\"
42
- hello
43
- #{s}
44
- \"\"\"
45
- }
46
- end
47
-
48
- Given /^I use keyword to call a multiline string with (.*)$/ do |s| x=1
49
- Given 'a multiline string:', "Hello\n#{s}"
50
- end
51
-
52
- Given /^I call a table with (.*)$/ do |s| x=1
53
- steps %Q{
54
- Given a table:
55
- |a|b|
56
- |c|#{s}|
57
- }
58
- end
59
- """
60
-
61
- Scenario: Multiline string
62
- When I run cucumber features/f.feature:3
63
- Then STDERR should be empty
64
- And it should fail with
65
- """
66
- Feature: Test
67
-
68
- Scenario: Multiline string # features/f.feature:3
69
- Given a multiline string: # features/step_definitions/steps.rb:1
70
- \"\"\"
71
- hello
72
- world
73
- \"\"\"
74
- I got multiline:
75
- hello
76
- world (RuntimeError)
77
- ./features/step_definitions/steps.rb:2:in `/^a multiline string:$/'
78
- features/f.feature:4:in `Given a multiline string:'
79
-
80
- Failing Scenarios:
81
- cucumber features/f.feature:3 # Scenario: Multiline string
82
-
83
- 1 scenario (1 failed)
84
- 1 step (1 failed)
85
-
86
- """
87
-
88
- Scenario: Call multiline string
89
- When I run cucumber features/f.feature:10
90
- Then STDERR should be empty
91
- And it should fail with
92
- """
93
- Feature: Test
94
-
95
- Scenario: Call a multiline string # features/f.feature:10
96
- Given I call a multiline string with MAMA # features/step_definitions/steps.rb:9
97
- I got multiline:
98
- hello
99
- MAMA (RuntimeError)
100
- ./features/step_definitions/steps.rb:2:in `/^a multiline string:$/'
101
- features/f.feature:11:in `Given I call a multiline string with MAMA'
102
-
103
- Failing Scenarios:
104
- cucumber features/f.feature:10 # Scenario: Call a multiline string
105
-
106
- 1 scenario (1 failed)
107
- 1 step (1 failed)
108
-
109
- """
110
-
111
- Scenario: Call table
112
- When I run cucumber features/f.feature:13
113
- Then STDERR should be empty
114
- And it should fail with
115
- """
116
- Feature: Test
117
-
118
- Scenario: Call a table # features/f.feature:13
119
- Given I call a table with MAMA # features/step_definitions/steps.rb:23
120
- I got table:
121
- [["a", "b"], ["c", "MAMA"]] (RuntimeError)
122
- ./features/step_definitions/steps.rb:6:in `/^a table:$/'
123
- features/f.feature:14:in `Given I call a table with MAMA'
124
-
125
- Failing Scenarios:
126
- cucumber features/f.feature:13 # Scenario: Call a table
127
-
128
- 1 scenario (1 failed)
129
- 1 step (1 failed)
130
-
131
- """
132
-
133
- Scenario: Call multiline string with keyword
134
- When I run cucumber features/f.feature:16
135
- Then STDERR should be empty
136
- And it should fail with
137
- """
138
- Feature: Test
139
-
140
- Scenario: Call a multiline string using keyword # features/f.feature:16
141
- Given I use keyword to call a multiline string with BANG # features/step_definitions/steps.rb:19
142
- I got multiline:
143
- Hello
144
- BANG (RuntimeError)
145
- ./features/step_definitions/steps.rb:2:in `/^a multiline string:$/'
146
- features/f.feature:17:in `Given I use keyword to call a multiline string with BANG'
147
-
148
- Failing Scenarios:
149
- cucumber features/f.feature:16 # Scenario: Call a multiline string using keyword
150
-
151
- 1 scenario (1 failed)
152
- 1 step (1 failed)
153
-
154
- """
@@ -1,591 +0,0 @@
1
- Feature: Cucumber command line
2
- In order to write better software
3
- Developers should be able to execute requirements as tests
4
-
5
- Scenario: Run single scenario with missing step definition
6
- When I run cucumber -q features/sample.feature:5
7
- Then it should pass with
8
- """
9
- # Feature comment
10
- @one
11
- Feature: Sample
12
-
13
- @two @three
14
- Scenario: Missing
15
- Given missing
16
-
17
- 1 scenario (1 undefined)
18
- 1 step (1 undefined)
19
-
20
- """
21
-
22
- Scenario: Fail with --strict
23
- When I run cucumber -q features/sample.feature:5 --strict
24
- Then it should fail with
25
- """
26
- # Feature comment
27
- @one
28
- Feature: Sample
29
-
30
- @two @three
31
- Scenario: Missing
32
- Given missing
33
- Undefined step: "missing" (Cucumber::Undefined)
34
- features/sample.feature:7:in `Given missing'
35
-
36
- 1 scenario (1 undefined)
37
- 1 step (1 undefined)
38
-
39
- """
40
-
41
- Scenario: Succeed with --strict
42
- When I run cucumber -q features/sample.feature:10 --strict
43
- Then it should pass with
44
- """
45
- # Feature comment
46
- @one
47
- Feature: Sample
48
-
49
- # Scenario comment
50
- @three
51
- Scenario: Passing
52
- Given passing
53
- | a | b |
54
- | c | d |
55
-
56
- 1 scenario (1 passed)
57
- 1 step (1 passed)
58
-
59
- """
60
-
61
- Scenario: Specify 2 line numbers where one is a tag
62
- When I run cucumber -q features/sample.feature:5:16
63
- Then it should fail with
64
- """
65
- # Feature comment
66
- @one
67
- Feature: Sample
68
-
69
- @two @three
70
- Scenario: Missing
71
- Given missing
72
-
73
- @four
74
- Scenario: Failing
75
- Given failing
76
- \"\"\"
77
- hello
78
- \"\"\"
79
- FAIL (RuntimeError)
80
- ./features/step_definitions/sample_steps.rb:2:in `flunker'
81
- ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
82
- features/sample.feature:18:in `Given failing'
83
-
84
- Failing Scenarios:
85
- cucumber features/sample.feature:17 # Scenario: Failing
86
-
87
- 2 scenarios (1 failed, 1 undefined)
88
- 2 steps (1 failed, 1 undefined)
89
-
90
- """
91
-
92
- Scenario: Require missing step definition from elsewhere
93
- When I run cucumber -q -r ../../features/step_definitions/extra_steps.rb features/sample.feature:5
94
- Then it should pass with
95
- """
96
- # Feature comment
97
- @one
98
- Feature: Sample
99
-
100
- @two @three
101
- Scenario: Missing
102
- Given missing
103
-
104
- 1 scenario (1 passed)
105
- 1 step (1 passed)
106
-
107
- """
108
-
109
- Scenario: Specify the line number of a row
110
- When I run cucumber -q features/sample.feature:12
111
- Then it should pass with
112
- """
113
- # Feature comment
114
- @one
115
- Feature: Sample
116
-
117
- # Scenario comment
118
- @three
119
- Scenario: Passing
120
- Given passing
121
- | a | b |
122
- | c | d |
123
-
124
- 1 scenario (1 passed)
125
- 1 step (1 passed)
126
-
127
- """
128
-
129
- Scenario: Use @-notation to specify a file containing feature file list
130
- When I run cucumber -q @list-of-features.txt
131
- Then it should pass with
132
- """
133
- # Feature comment
134
- @one
135
- Feature: Sample
136
-
137
- # Scenario comment
138
- @three
139
- Scenario: Passing
140
- Given passing
141
- | a | b |
142
- | c | d |
143
-
144
- 1 scenario (1 passed)
145
- 1 step (1 passed)
146
-
147
- """
148
-
149
- Scenario: Run all with progress formatter
150
- When I run cucumber -q --format progress features/sample.feature
151
- Then it should fail with
152
- """
153
- U.F
154
-
155
- (::) failed steps (::)
156
-
157
- FAIL (RuntimeError)
158
- ./features/step_definitions/sample_steps.rb:2:in `flunker'
159
- ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
160
- features/sample.feature:18:in `Given failing'
161
-
162
- Failing Scenarios:
163
- cucumber features/sample.feature:17 # Scenario: Failing
164
-
165
- 3 scenarios (1 failed, 1 undefined, 1 passed)
166
- 3 steps (1 failed, 1 undefined, 1 passed)
167
-
168
- """
169
-
170
- Scenario: --dry-run
171
- When I run cucumber --dry-run --no-source features/*.feature --tags ~@lots
172
- Then it should pass with
173
- """
174
- Feature: Calling undefined step
175
-
176
- Scenario: Call directly
177
- Given a step definition that calls an undefined step
178
-
179
- Scenario: Call via another
180
- Given call step "a step definition that calls an undefined step"
181
-
182
- Feature: Failing expectation
183
-
184
- Scenario: Failing expectation
185
- Given failing expectation
186
-
187
- Feature: Lots of undefined
188
-
189
- Scenario: Implement me
190
- Given it snows in Sahara
191
- Given it's 40 degrees in Norway
192
- And it's 40 degrees in Norway
193
- When I stop procrastinating
194
- And there is world peace
195
-
196
- Feature: multiline
197
-
198
- Background: I'm a multiline name
199
- which goes on and on and on for three lines
200
- yawn
201
- Given passing without a table
202
-
203
- Scenario: I'm a multiline name
204
- which goes on and on and on for three lines
205
- yawn
206
- Given passing without a table
207
-
208
- Scenario Outline: I'm a multiline name
209
- which goes on and on and on for three lines
210
- yawn
211
- Given <state> without a table
212
-
213
- Examples:
214
- | state |
215
- | passing |
216
-
217
- Scenario Outline: name
218
- Given <state> without a table
219
-
220
- Examples: I'm a multiline name
221
- which goes on and on and on for three lines
222
- yawn
223
- | state |
224
- | passing |
225
-
226
- Feature: Outline Sample
227
-
228
- Scenario: I have no steps
229
-
230
- Scenario Outline: Test state
231
- Given <state> without a table
232
- Given <other_state> without a table
233
-
234
- Examples: Rainbow colours
235
- | state | other_state |
236
- | missing | passing |
237
- | passing | passing |
238
- | failing | passing |
239
-
240
- Examples: Only passing
241
- | state | other_state |
242
- | passing | passing |
243
-
244
- # Feature comment
245
- @one
246
- Feature: Sample
247
-
248
- @two @three
249
- Scenario: Missing
250
- Given missing
251
-
252
- # Scenario comment
253
- @three
254
- Scenario: Passing
255
- Given passing
256
- | a | b |
257
- | c | d |
258
-
259
- @four
260
- Scenario: Failing
261
- Given failing
262
- \"\"\"
263
- hello
264
- \"\"\"
265
-
266
- Feature: search examples
267
-
268
- Background: Hantu Pisang background match
269
- Given passing without a table
270
-
271
- Scenario: should match Hantu Pisang
272
- Given passing without a table
273
-
274
- Scenario: Ignore me
275
- Given failing without a table
276
-
277
- Scenario Outline: Ignore me
278
- Given <state> without a table
279
-
280
- Examples:
281
- | state |
282
- | failing |
283
-
284
- Scenario Outline: Hantu Pisang match
285
- Given <state> without a table
286
-
287
- Examples:
288
- | state |
289
- | passing |
290
-
291
- Scenario Outline: no match in name but in examples
292
- Given <state> without a table
293
-
294
- Examples: Hantu Pisang
295
- | state |
296
- | passing |
297
-
298
- Examples: Ignore me
299
- | state |
300
- | failing |
301
-
302
- @sample_one
303
- Feature: Tag samples
304
-
305
- @sample_two @sample_four
306
- Scenario: Passing
307
- Given missing
308
-
309
- @sample_three
310
- Scenario Outline:
311
- Given <state>
312
-
313
- Examples:
314
- | state |
315
- | missing |
316
-
317
- @sample_three @sample_four
318
- Scenario: Skipped
319
- Given missing
320
-
321
- Feature: undefined multiline args
322
-
323
- Scenario: pystring
324
- Given a pystring
325
- \"\"\"
326
- example
327
- \"\"\"
328
-
329
- Scenario: table
330
- Given a table
331
- | table |
332
- | example |
333
-
334
- 26 scenarios (17 skipped, 8 undefined, 1 passed)
335
- 42 steps (30 skipped, 12 undefined)
336
-
337
- """
338
-
339
- Scenario: Multiple formatters and outputs
340
- When I run cucumber --format progress --out tmp/progress.txt --format pretty --out tmp/pretty.txt --no-source --dry-run features/lots_of_undefined.feature
341
- Then STDERR should be empty
342
- Then "fixtures/self_test/tmp/progress.txt" should contain
343
- """
344
- UUUUU
345
-
346
- 1 scenario (1 undefined)
347
- 5 steps (5 undefined)
348
-
349
- """
350
- And "fixtures/self_test/tmp/pretty.txt" should contain
351
- """
352
- Feature: Lots of undefined
353
-
354
- Scenario: Implement me
355
- Given it snows in Sahara
356
- Given it's 40 degrees in Norway
357
- And it's 40 degrees in Norway
358
- When I stop procrastinating
359
- And there is world peace
360
-
361
- 1 scenario (1 undefined)
362
- 5 steps (5 undefined)
363
-
364
- """
365
-
366
- Scenario: Run feature elements which matches a name using --name
367
- When I run cucumber --name Pisang -q features/
368
- Then it should pass with
369
- """
370
- Feature: search examples
371
-
372
- Background: Hantu Pisang background match
373
- Given passing without a table
374
-
375
- Scenario: should match Hantu Pisang
376
- Given passing without a table
377
-
378
- Scenario Outline: Hantu Pisang match
379
- Given <state> without a table
380
-
381
- Examples:
382
- | state |
383
- | passing |
384
-
385
- Scenario Outline: no match in name but in examples
386
- Given <state> without a table
387
-
388
- Examples: Hantu Pisang
389
- | state |
390
- | passing |
391
-
392
- 3 scenarios (3 passed)
393
- 6 steps (6 passed)
394
-
395
- """
396
-
397
- Scenario: Run a single background which matches a name using --name (Useful if there is an error in it)
398
- When I run cucumber --name 'Hantu Pisang background' -q features/
399
- Then it should pass with
400
- """
401
- Feature: search examples
402
-
403
- Background: Hantu Pisang background match
404
- Given passing without a table
405
-
406
- 0 scenarios
407
- 1 step (1 passed)
408
-
409
- """
410
-
411
-
412
- Scenario: Run with a tag that exists on 2 scenarios
413
- When I run cucumber -q features --tags @three
414
- Then it should pass with
415
- """
416
- # Feature comment
417
- @one
418
- Feature: Sample
419
-
420
- @two @three
421
- Scenario: Missing
422
- Given missing
423
-
424
- # Scenario comment
425
- @three
426
- Scenario: Passing
427
- Given passing
428
- | a | b |
429
- | c | d |
430
-
431
- 2 scenarios (1 undefined, 1 passed)
432
- 2 steps (1 undefined, 1 passed)
433
-
434
- """
435
-
436
- Scenario: Run with a tag that exists on 1 feature
437
- When I run cucumber -q features --tags @one
438
- Then it should fail with
439
- """
440
- # Feature comment
441
- @one
442
- Feature: Sample
443
-
444
- @two @three
445
- Scenario: Missing
446
- Given missing
447
-
448
- # Scenario comment
449
- @three
450
- Scenario: Passing
451
- Given passing
452
- | a | b |
453
- | c | d |
454
-
455
- @four
456
- Scenario: Failing
457
- Given failing
458
- \"\"\"
459
- hello
460
- \"\"\"
461
- FAIL (RuntimeError)
462
- ./features/step_definitions/sample_steps.rb:2:in `flunker'
463
- ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
464
- features/sample.feature:18:in `Given failing'
465
-
466
- Failing Scenarios:
467
- cucumber features/sample.feature:17 # Scenario: Failing
468
-
469
- 3 scenarios (1 failed, 1 undefined, 1 passed)
470
- 3 steps (1 failed, 1 undefined, 1 passed)
471
-
472
- """
473
-
474
- Scenario: Run with a negative tag
475
- When I run cucumber -q features/sample.feature --no-source --dry-run --tags ~@four
476
- Then it should pass with
477
- """
478
- # Feature comment
479
- @one
480
- Feature: Sample
481
-
482
- @two @three
483
- Scenario: Missing
484
- Given missing
485
-
486
- # Scenario comment
487
- @three
488
- Scenario: Passing
489
- Given passing
490
- | a | b |
491
- | c | d |
492
-
493
- 2 scenarios (1 skipped, 1 undefined)
494
- 2 steps (1 skipped, 1 undefined)
495
-
496
- """
497
-
498
- Scenario: Run with limited tag count, blowing it on scenario
499
- When I run cucumber -q features/tags_sample.feature --no-source --dry-run --tags @sample_three:1
500
- Then it should fail with
501
- """
502
- @sample_three occurred 2 times, but the limit was set to 1
503
- features/tags_sample.feature:11
504
- features/tags_sample.feature:16
505
- """
506
-
507
- Scenario: Run with limited tag count, blowing it via feature inheritance
508
- When I run cucumber -q features/tags_sample.feature --no-source --dry-run --tags @sample_one:1
509
- Then it should fail with
510
- """
511
- @sample_one occurred 3 times, but the limit was set to 1
512
- features/tags_sample.feature:5
513
- features/tags_sample.feature:11
514
- features/tags_sample.feature:16
515
- """
516
-
517
- Scenario: Run with limited tag count using negative tag, blowing it via a tag that is not run
518
- When I run cucumber -q features/tags_sample.feature --no-source --dry-run --tags ~@sample_one:1
519
- Then it should fail with
520
- """
521
- @sample_one occurred 3 times, but the limit was set to 1
522
- """
523
-
524
- Scenario: Reformat files with --autoformat
525
- When I run cucumber --autoformat tmp/formatted features
526
- Then STDERR should be empty
527
- Then "fixtures/self_test/tmp/formatted/features/sample.feature" should contain
528
- """
529
- # Feature comment
530
- @one
531
- Feature: Sample
532
-
533
- @two @three
534
- Scenario: Missing
535
- Given missing
536
-
537
- # Scenario comment
538
- @three
539
- Scenario: Passing
540
- Given passing
541
- | a | b |
542
- | c | d |
543
-
544
- @four
545
- Scenario: Failing
546
- Given failing
547
- \"\"\"
548
- hello
549
- \"\"\"
550
-
551
-
552
- """
553
-
554
- # Fails on 1.9 because of encoding issues.
555
- @fails_on_1_9
556
- Scenario: Generate PDF with pdf formatter
557
- When I run cucumber --format pdf --out tmp/sample.pdf --dry-run features/sample.feature
558
- Then STDERR should be empty
559
- Then "fixtures/self_test/tmp/sample.pdf" should match "Pages 2"
560
-
561
- Scenario: Run feature elements which match a name using -n
562
- When I run cucumber -n Pisang -q features/
563
- Then STDERR should be empty
564
- Then it should pass with
565
- """
566
- Feature: search examples
567
-
568
- Background: Hantu Pisang background match
569
- Given passing without a table
570
-
571
- Scenario: should match Hantu Pisang
572
- Given passing without a table
573
-
574
- Scenario Outline: Hantu Pisang match
575
- Given <state> without a table
576
-
577
- Examples:
578
- | state |
579
- | passing |
580
-
581
- Scenario Outline: no match in name but in examples
582
- Given <state> without a table
583
-
584
- Examples: Hantu Pisang
585
- | state |
586
- | passing |
587
-
588
- 3 scenarios (3 passed)
589
- 6 steps (6 passed)
590
-
591
- """