cucumber 2.99.0 → 3.0.0.pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +22 -10
  3. data/CONTRIBUTING.md +13 -0
  4. data/Gemfile +11 -4
  5. data/History.md +19 -1
  6. data/README.md +1 -1
  7. data/cucumber.gemspec +2 -2
  8. data/cucumber.yml +2 -2
  9. data/features/docs/api/listen_for_events.feature +7 -6
  10. data/features/docs/cli/help.feature +8 -0
  11. data/features/docs/cli/retry_failing_tests.feature +51 -16
  12. data/features/docs/defining_steps/nested_steps_i18n.feature +2 -0
  13. data/features/docs/defining_steps/printing_messages.feature +0 -1
  14. data/features/docs/defining_steps/skip_scenario.feature +0 -34
  15. data/features/docs/extending_cucumber/custom_formatter.feature +2 -30
  16. data/features/docs/formatters/summary_formatter.feature +34 -0
  17. data/features/docs/gherkin/unicode_table.feature +1 -1
  18. data/features/docs/post_configuration_hook.feature +0 -16
  19. data/features/docs/writing_support_code/world.feature +129 -0
  20. data/features/lib/step_definitions/aruba_steps.rb +1 -0
  21. data/features/lib/step_definitions/cli_steps.rb +4 -0
  22. data/features/lib/step_definitions/cucumber_steps.rb +1 -0
  23. data/features/lib/step_definitions/iso-8859-1_steps.rb +1 -0
  24. data/features/lib/step_definitions/json_steps.rb +1 -0
  25. data/features/lib/step_definitions/junit_steps.rb +1 -0
  26. data/features/lib/step_definitions/language_steps.rb +1 -0
  27. data/features/lib/step_definitions/profile_steps.rb +1 -0
  28. data/features/lib/step_definitions/retry_steps.rb +32 -12
  29. data/features/lib/step_definitions/ruby_steps.rb +1 -0
  30. data/features/lib/step_definitions/wire_steps.rb +1 -0
  31. data/features/lib/support/env.rb +2 -1
  32. data/features/lib/support/fake_wire_server.rb +1 -0
  33. data/features/lib/support/feature_factory.rb +1 -0
  34. data/features/lib/support/normalise_output.rb +1 -0
  35. data/gem_tasks/contributors.rake +1 -0
  36. data/gem_tasks/cov.rake +1 -0
  37. data/gem_tasks/cucumber.rake +1 -0
  38. data/gem_tasks/downloads.rb +1 -0
  39. data/gem_tasks/environment.rake +1 -0
  40. data/gem_tasks/examples.rake +2 -1
  41. data/gem_tasks/fix_cr_lf.rake +2 -1
  42. data/gem_tasks/flog.rake +2 -1
  43. data/gem_tasks/rspec.rake +1 -0
  44. data/gem_tasks/sass.rake +2 -1
  45. data/lib/autotest/cucumber.rb +1 -0
  46. data/lib/autotest/cucumber_mixin.rb +1 -0
  47. data/lib/autotest/cucumber_rails.rb +1 -0
  48. data/lib/autotest/cucumber_rails_rspec.rb +1 -0
  49. data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
  50. data/lib/autotest/cucumber_rspec.rb +1 -0
  51. data/lib/autotest/cucumber_rspec2.rb +1 -0
  52. data/lib/autotest/discover.rb +1 -0
  53. data/lib/cucumber.rb +1 -13
  54. data/lib/cucumber/cli/configuration.rb +3 -6
  55. data/lib/cucumber/cli/main.rb +2 -1
  56. data/lib/cucumber/cli/options.rb +239 -173
  57. data/lib/cucumber/cli/profile_loader.rb +1 -0
  58. data/lib/cucumber/cli/rerun_file.rb +1 -0
  59. data/lib/cucumber/configuration.rb +40 -19
  60. data/lib/cucumber/constantize.rb +1 -0
  61. data/lib/cucumber/core_ext/instance_exec.rb +1 -0
  62. data/lib/cucumber/core_ext/string.rb +1 -0
  63. data/lib/cucumber/deprecate.rb +1 -0
  64. data/lib/cucumber/encoding.rb +1 -0
  65. data/lib/cucumber/errors.rb +3 -1
  66. data/lib/cucumber/events.rb +13 -3
  67. data/lib/cucumber/events/step_definition_registered.rb +24 -0
  68. data/lib/cucumber/events/step_match.rb +4 -1
  69. data/lib/cucumber/events/test_run_finished.rb +12 -0
  70. data/lib/cucumber/file_specs.rb +1 -0
  71. data/lib/cucumber/filters.rb +2 -0
  72. data/lib/cucumber/filters/activate_steps.rb +2 -1
  73. data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
  74. data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
  75. data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
  76. data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
  77. data/lib/cucumber/filters/gated_receiver.rb +1 -0
  78. data/lib/cucumber/filters/prepare_world.rb +1 -0
  79. data/lib/cucumber/filters/quit.rb +1 -0
  80. data/lib/cucumber/filters/randomizer.rb +1 -0
  81. data/lib/cucumber/filters/retry.rb +3 -3
  82. data/lib/cucumber/filters/tag_limits.rb +1 -0
  83. data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -0
  84. data/lib/cucumber/filters/tag_limits/verifier.rb +1 -0
  85. data/lib/cucumber/formatter/ansicolor.rb +1 -0
  86. data/lib/cucumber/formatter/backtrace_filter.rb +3 -2
  87. data/lib/cucumber/formatter/console.rb +61 -52
  88. data/lib/cucumber/formatter/console_counts.rb +57 -0
  89. data/lib/cucumber/formatter/console_issues.rb +37 -0
  90. data/lib/cucumber/formatter/debug.rb +1 -0
  91. data/lib/cucumber/formatter/duration.rb +1 -0
  92. data/lib/cucumber/formatter/duration_extractor.rb +1 -0
  93. data/lib/cucumber/formatter/fail_fast.rb +4 -2
  94. data/lib/cucumber/formatter/fanout.rb +1 -0
  95. data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
  96. data/lib/cucumber/formatter/html.rb +6 -5
  97. data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -0
  98. data/lib/cucumber/formatter/interceptor.rb +1 -0
  99. data/lib/cucumber/formatter/io.rb +1 -0
  100. data/lib/cucumber/formatter/json.rb +15 -13
  101. data/lib/cucumber/formatter/json_pretty.rb +1 -0
  102. data/lib/cucumber/formatter/junit.rb +13 -11
  103. data/lib/cucumber/formatter/legacy_api/adapter.rb +28 -32
  104. data/lib/cucumber/formatter/legacy_api/ast.rb +1 -0
  105. data/lib/cucumber/formatter/legacy_api/results.rb +1 -0
  106. data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +1 -0
  107. data/lib/cucumber/formatter/pretty.rb +7 -1
  108. data/lib/cucumber/formatter/progress.rb +56 -13
  109. data/lib/cucumber/formatter/rerun.rb +15 -18
  110. data/lib/cucumber/formatter/stepdefs.rb +1 -0
  111. data/lib/cucumber/formatter/steps.rb +1 -0
  112. data/lib/cucumber/formatter/summary.rb +43 -20
  113. data/lib/cucumber/formatter/unicode.rb +1 -0
  114. data/lib/cucumber/formatter/usage.rb +26 -21
  115. data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
  116. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +1 -0
  117. data/lib/cucumber/gherkin/formatter/escaping.rb +1 -0
  118. data/lib/cucumber/gherkin/i18n.rb +1 -0
  119. data/lib/cucumber/gherkin/steps_parser.rb +1 -0
  120. data/lib/cucumber/hooks.rb +1 -0
  121. data/lib/cucumber/load_path.rb +1 -0
  122. data/lib/cucumber/multiline_argument.rb +1 -2
  123. data/lib/cucumber/multiline_argument/data_table.rb +3 -1
  124. data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
  125. data/lib/cucumber/platform.rb +1 -0
  126. data/lib/cucumber/project_initializer.rb +2 -1
  127. data/lib/cucumber/rake/task.rb +1 -0
  128. data/lib/cucumber/rb_support/rb_dsl.rb +11 -9
  129. data/lib/cucumber/rb_support/rb_hook.rb +1 -0
  130. data/lib/cucumber/rb_support/rb_language.rb +19 -8
  131. data/lib/cucumber/rb_support/rb_step_definition.rb +1 -0
  132. data/lib/cucumber/rb_support/rb_transform.rb +1 -0
  133. data/lib/cucumber/rb_support/rb_world.rb +42 -20
  134. data/lib/cucumber/rb_support/snippet.rb +2 -1
  135. data/lib/cucumber/rspec/disable_option_parser.rb +1 -0
  136. data/lib/cucumber/rspec/doubles.rb +1 -0
  137. data/lib/cucumber/running_test_case.rb +1 -25
  138. data/lib/cucumber/runtime.rb +15 -10
  139. data/lib/cucumber/runtime/after_hooks.rb +1 -0
  140. data/lib/cucumber/runtime/before_hooks.rb +1 -0
  141. data/lib/cucumber/runtime/for_programming_languages.rb +1 -0
  142. data/lib/cucumber/runtime/step_hooks.rb +1 -0
  143. data/lib/cucumber/runtime/support_code.rb +1 -0
  144. data/lib/cucumber/runtime/user_interface.rb +1 -0
  145. data/lib/cucumber/step_argument.rb +1 -0
  146. data/lib/cucumber/step_definition_light.rb +1 -0
  147. data/lib/cucumber/step_definitions.rb +1 -0
  148. data/lib/cucumber/step_match.rb +1 -0
  149. data/lib/cucumber/step_match_search.rb +1 -0
  150. data/lib/cucumber/term/ansicolor.rb +1 -0
  151. data/lib/cucumber/unit.rb +1 -0
  152. data/lib/cucumber/version +1 -1
  153. data/lib/simplecov_setup.rb +1 -0
  154. data/spec/cucumber/cli/configuration_spec.rb +1 -0
  155. data/spec/cucumber/cli/main_spec.rb +1 -0
  156. data/spec/cucumber/cli/options_spec.rb +1 -0
  157. data/spec/cucumber/cli/profile_loader_spec.rb +1 -0
  158. data/spec/cucumber/cli/rerun_spec.rb +1 -0
  159. data/spec/cucumber/configuration_spec.rb +1 -0
  160. data/spec/cucumber/constantize_spec.rb +1 -0
  161. data/spec/cucumber/core_ext/instance_exec_spec.rb +1 -0
  162. data/spec/cucumber/file_specs_spec.rb +1 -0
  163. data/spec/cucumber/filters/activate_steps_spec.rb +9 -6
  164. data/spec/cucumber/filters/gated_receiver_spec.rb +1 -0
  165. data/spec/cucumber/filters/retry_spec.rb +27 -21
  166. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +1 -0
  167. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +1 -0
  168. data/spec/cucumber/filters/tag_limits_spec.rb +1 -0
  169. data/spec/cucumber/formatter/ansicolor_spec.rb +1 -0
  170. data/spec/cucumber/formatter/console_counts_spec.rb +14 -0
  171. data/spec/cucumber/formatter/debug_spec.rb +1 -0
  172. data/spec/cucumber/formatter/duration_spec.rb +1 -0
  173. data/spec/cucumber/formatter/fail_fast_spec.rb +5 -5
  174. data/spec/cucumber/formatter/html_spec.rb +6 -1
  175. data/spec/cucumber/formatter/interceptor_spec.rb +1 -0
  176. data/spec/cucumber/formatter/json_spec.rb +29 -28
  177. data/spec/cucumber/formatter/junit_spec.rb +1 -0
  178. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +8 -3
  179. data/spec/cucumber/formatter/pretty_spec.rb +1 -0
  180. data/spec/cucumber/formatter/progress_spec.rb +2 -1
  181. data/spec/cucumber/formatter/rerun_spec.rb +70 -64
  182. data/spec/cucumber/formatter/spec_helper.rb +8 -7
  183. data/spec/cucumber/hooks_spec.rb +1 -0
  184. data/spec/cucumber/multiline_argument/data_table_spec.rb +1 -0
  185. data/spec/cucumber/project_initializer_spec.rb +2 -1
  186. data/spec/cucumber/rake/forked_spec.rb +1 -0
  187. data/spec/cucumber/rake/task_spec.rb +1 -0
  188. data/spec/cucumber/rb_support/rb_language_spec.rb +81 -3
  189. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +1 -0
  190. data/spec/cucumber/rb_support/rb_transform_spec.rb +1 -0
  191. data/spec/cucumber/rb_support/rb_world_spec.rb +2 -1
  192. data/spec/cucumber/rb_support/snippet_spec.rb +1 -0
  193. data/spec/cucumber/running_test_case_spec.rb +1 -0
  194. data/spec/cucumber/runtime/for_programming_languages_spec.rb +1 -0
  195. data/spec/cucumber/runtime/support_code_spec.rb +1 -0
  196. data/spec/cucumber/runtime_spec.rb +1 -0
  197. data/spec/cucumber/step_argument_spec.rb +1 -0
  198. data/spec/cucumber/step_match_search_spec.rb +1 -0
  199. data/spec/cucumber/step_match_spec.rb +1 -0
  200. data/spec/cucumber/world/pending_spec.rb +1 -0
  201. data/spec/spec_helper.rb +1 -0
  202. data/spec/support/standard_step_actions.rb +1 -0
  203. metadata +24 -23
  204. data/lib/cucumber/ast.rb +0 -13
  205. data/lib/cucumber/events/after_test_case.rb +0 -25
  206. data/lib/cucumber/events/after_test_step.rb +0 -30
  207. data/lib/cucumber/events/before_test_case.rb +0 -18
  208. data/lib/cucumber/events/before_test_step.rb +0 -23
  209. data/lib/cucumber/events/bus.rb +0 -86
  210. data/lib/cucumber/events/finished_testing.rb +0 -9
  211. data/lib/cucumber/formatter/event_bus_report.rb +0 -38
  212. data/spec/cucumber/events/bus_spec.rb +0 -94
  213. data/spec/cucumber/formatter/event_bus_report_spec.rb +0 -88
  214. data/spec/cucumber_spec.rb +0 -39
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b563aacb88f892ac6bf48bb659f08a7f87f2675c
4
- data.tar.gz: 7ac2888d7273d03b14f95f95c4f986d59b628db0
3
+ metadata.gz: 7f5e472b2944bf6dadc1f272709c796c93dcceb5
4
+ data.tar.gz: c1a1751dbb2b0cd1d530304ae0e30bb229350374
5
5
  SHA512:
6
- metadata.gz: 1509f258488fbedd76f50dc308bba8c2877dc11a2373b4d4a9e00d31534723352c2c03bfd6d8ae5f7a5c19ba1732d53e1feadab46264c11381ce07d9ceafc91b
7
- data.tar.gz: ea511d05ced95a863349788293f738b9efb0fb8d1084b07d66d0c4f8bd023d3e93ab36eb55830fc2c9e75f0444b40ac7fdb57522aec01b7e4c09a9285288946e
6
+ metadata.gz: 2e6adc11f7c868ba3eff12b7774b1c2260de26bfd02df48644b577bbe0f76cd9946431376f4536b2f0ea5a1c1a1b86c61de7b5a4351f2467b55f0e43abe8cf29
7
+ data.tar.gz: 3e3be3a63d780965aa357ab93e3a34a6b95ff65c283ee6ad9af997c7c550ac4901a867d77e4cf84ff27f89e4a09f6859e95a939f75642faaf90607edf016830c
@@ -1,23 +1,35 @@
1
1
  sudo: false
2
2
 
3
- rvm:
4
- - 2.3.0
5
- - 2.2
6
- - 2.1
7
- - 2.0
8
- - 1.9.3
9
- - jruby-1.7.12
3
+ matrix:
4
+ include:
5
+ - rvm: 2.3.1
6
+ - rvm: 2.2
7
+ - rvm: 2.1
8
+ - rvm: 2.0
9
+ - rvm: jruby-9.1.2.0
10
+ env:
11
+ # Travis by default also have "-Dcext.enabled=false" set in
12
+ # JRUBY_OPTS, but JRuby 9 does not support C extensions at all
13
+ # so it issues warning that will mess up the sterr checks.
14
+ - JRUBY_OPTS="--server -Xcompile.invokedynamic=false"
15
+ # Somehow a "ASCII-8BIT to UTF-8 conversion error" appears for
16
+ # JRuby 9
17
+ - LC_ALL=en_US.UTF-8
18
+ - LANG=en_US.UTF-8
19
+ - LANGUAGE=en_US.UTF-8
10
20
 
11
21
  # whitelist
12
22
  branches:
13
23
  only:
14
24
  - master
15
- - resolve-issue-882
16
25
  - v1.3.x-bugfix
17
- - v2.x-bugfix
18
26
 
19
27
  before_install:
20
28
  - gem update bundler
21
29
 
22
30
  notifications:
23
- email: false
31
+ email:
32
+ - cukes-devs@googlegroups.com
33
+ webhooks:
34
+ urls: # gitter
35
+ - https://webhooks.gitter.im/e/dc010332f9d40fcc21c4
@@ -19,6 +19,19 @@ The rest of this document is a guide for those maintaining Cucumber, and others
19
19
 
20
20
  You can chat with the core team on https://gitter.im/cucumber/cucumber. We try to have office hours on Fridays.
21
21
 
22
+ ## Installing your own gems
23
+
24
+ A `Gemfile.local`-file can be used to have your own gems installed to support
25
+ your normal development workflow.
26
+
27
+ Example:
28
+
29
+ ~~~ruby
30
+ gem 'pry'
31
+ gem 'pry-byebug'
32
+ gem 'byebug'
33
+ ~~~
34
+
22
35
  ## Note on Patches/Pull Requests
23
36
 
24
37
  * Fork the project. Make a branch for your change.
data/Gemfile CHANGED
@@ -1,14 +1,21 @@
1
1
  gem "cucumber-pro", "0.0.13", :group => :test
2
2
  source "https://rubygems.org"
3
3
  gemspec
4
+ load File.expand_path('../Gemfile.local', __FILE__) if File.file? File.expand_path('../Gemfile.local', __FILE__)
5
+
4
6
  unless ENV['CUCUMBER_USE_RELEASED_CORE']
5
7
  core_path = File.expand_path("../../cucumber-ruby-core", __FILE__)
6
8
  wire_path = File.expand_path("../../cucumber-ruby-wire", __FILE__)
7
- if File.exist?(core_path) && !ENV['CUCUMBER_USE_GIT_CORE']
8
- gem 'cucumber-core', :path => core_path
9
- gem 'cucumber-wire', :path => wire_path
9
+ if File.exist?(core_path) && !ENV["cucumber_use_git_core"]
10
+ gem "cucumber-core", :path => core_path
11
+ else
12
+ gem "cucumber-core", :git => "https://github.com/cucumber/cucumber-ruby-core.git"
13
+ end
14
+
15
+ if File.exist?(wire_path) && !ENV["CUCUMBER_USE_GIT_CORE"]
16
+ gem "cucumber-wire", :path => wire_path
10
17
  else
11
- gem 'cucumber-core', :git => "https://github.com/cucumber/cucumber-ruby-core.git", :branch => 'v1.x-bugfix'
18
+ gem "cucumber-wire", :git => "https://github.com/cucumber/cucumber-ruby-wire.git"
12
19
  end
13
20
  end
14
21
 
data/History.md CHANGED
@@ -1,9 +1,27 @@
1
- ## [In Git](https://github.com/cucumber/cucumber-ruby/compare/v2.4.0...v2.x-bugfix)
1
+ ## [In Git](https://github.com/cucumber/cucumber-ruby/compare/v2.4.0...master)
2
+
3
+ ### Breaking changes
4
+
5
+ * Remove support for Ruby 1.9.3 ([#993](https://github.com/cucumber/cucumber-ruby/pull/993) @brasmusson)
2
6
 
3
7
  ### New Features
4
8
 
9
+ * Use the event bus in Cucumber-Ruby-Core ([#973](https://github.com/cucumber/cucumber-ruby/pull/973) @mattwynne)
10
+ * Add --retry option to retry failed tests as part of the same run ([#920](https://github.com/cucumber/cucumber-ruby/pull/920) @DanaScheider)
11
+ * Add a summary formatter ([#999](https://github.com/cucumber/cucumber-ruby/pull/999) @mattwynne)
12
+ * Namespaced World modules ([#1007](https://github.com/cucumber/cucumber-ruby/pull/1007) @nodo)
13
+
5
14
  ### Bugfixes
6
15
 
16
+ * Configure Gemfile to fetch cucumber-ruby-wire from git if the repo is not found locally ([#983](https://github.com/cucumber/cucumber-ruby/pulls/983), resolves [#961](https://github.com/cucumber/cucumber-ruby/issues/961))
17
+ * Fix regression displaying CLI help ([#991](https://github.com/cucumber/cucumber-ruby/pull/991) @mattwynne)
18
+ * with_filtered_backtrace called on Test::Result::Unknown with strange feature file ([#967](https://github.com/cucumber/cucumber-ruby/issues/967) @danascheider)
19
+ * fix HTML formatter backtrace duplicate line bug ([#965](https://gthub.com/cucumber/cucumber-ruby/pull/965) @josephks)
20
+
21
+ ### Refactoring
22
+
23
+ * Add frozen string literal magic comment to files and fix issues it causes ([#996](https://github.com/cucumber/cucumber-ruby/pull/996 @twalpole)
24
+
7
25
  ## [v2.4.0](https://github.com/cucumber/cucumber-ruby/compare/v2.3.3...v2.4.0)
8
26
 
9
27
  ### New Features
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Join the chat at https://gitter.im/cucumber/cucumber-ruby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cucumber/cucumber-ruby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2
- [![Build Status](https://secure.travis-ci.org/cucumber/cucumber-ruby.svg)](http://travis-ci.org/cucumber/cucumber-ruby)
2
+ [![Build Status](https://travis-ci.org/cucumber/cucumber-ruby.svg?branch=master)](https://travis-ci.org/cucumber/cucumber-ruby)
3
3
  [![Code Climate](https://codeclimate.com/github/cucumber/cucumber-ruby.svg)](https://codeclimate.com/github/cucumber/cucumber-ruby)
4
4
  [![Coverage Status](https://coveralls.io/repos/cucumber/cucumber-ruby/badge.svg?branch=master)](https://coveralls.io/r/cucumber/cucumber-ruby?branch=master)
5
5
  [![Dependency Status](https://gemnasium.com/cucumber/cucumber-ruby.svg)](https://gemnasium.com/cucumber/cucumber-ruby)
@@ -7,10 +7,10 @@ Gem::Specification.new do |s|
7
7
  s.summary = "cucumber-#{s.version}"
8
8
  s.email = 'cukes@googlegroups.com'
9
9
  s.license = 'MIT'
10
- s.homepage = "http://cukes.info"
10
+ s.homepage = "https://cucumber.io/"
11
11
  s.platform = Gem::Platform::RUBY
12
12
  s.required_ruby_version = ">= 1.9.3"
13
- s.add_dependency 'cucumber-core', '~> 1.5.0'
13
+ s.add_dependency 'cucumber-core', '~> 2.0'
14
14
  s.add_dependency 'builder', '>= 2.1.2'
15
15
  s.add_dependency 'diff-lcs', '>= 1.1.3'
16
16
  s.add_dependency 'gherkin', '~> 4.0'
@@ -2,10 +2,10 @@
2
2
  cucumber_pro_opts = ENV['ENABLE_CUCUMBER_PRO'] ? "--format Cucumber::Pro --out /dev/null" : ""
3
3
  rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
4
4
  rerun_opts = rerun.to_s.strip.empty? ? "--format progress features" : "--format pretty #{rerun}"
5
- std_opts = "--format progress features --tags ~@wip --tags ~@wip-new-core -r features --strict #{cucumber_pro_opts}"
5
+ std_opts = "--format progress features -r features --strict #{cucumber_pro_opts}"
6
6
  std_opts << " --tags ~@wip-jruby" if defined?(JRUBY_VERSION)
7
7
 
8
- wip_opts = "--color -r features --tags @wip,@wip-new-core"
8
+ wip_opts = "--color -r features --tags @wip"
9
9
  wip_opts << ",@wip-jruby" if defined?(JRUBY_VERSION)
10
10
  %>
11
11
  default: <%= std_opts %> --tags ~@jruby
@@ -1,5 +1,8 @@
1
1
  Feature: Listen for events
2
2
 
3
+ Cucumber's `config` object has an event bus that you can use to listen for
4
+ various events that happen during your test run.
5
+
3
6
  Scenario: Step Matched Event
4
7
  Given a file named "features/test.feature" with:
5
8
  """
@@ -16,9 +19,8 @@ Feature: Listen for events
16
19
  """
17
20
  AfterConfiguration do |config|
18
21
  io = config.out_stream
19
- config.on_event Cucumber::Events::StepMatch do |event|
22
+ config.on_event :step_match do |event|
20
23
  io.puts "Success!"
21
- io.puts "Event type: #{event.class}"
22
24
  io.puts "Step name: #{event.test_step.name}"
23
25
  io.puts "Source location: #{event.step_match.location}"
24
26
  end
@@ -28,7 +30,6 @@ Feature: Listen for events
28
30
  Then it should pass with:
29
31
  """
30
32
  Success!
31
- Event type: Cucumber::Events::StepMatch
32
33
  Step name: matching
33
34
  Source location: features/step_definitions/steps.rb:1
34
35
  """
@@ -45,14 +46,14 @@ Feature: Listen for events
45
46
  """
46
47
  AfterConfiguration do |config|
47
48
  io = config.out_stream
48
- config.on_event Cucumber::Events::AfterTestStep do |event|
49
- io.puts "YO"
49
+ config.on_event :test_step_finished do |event|
50
+ io.puts event.result.passed?
50
51
  end
51
52
  end
52
53
  """
53
54
  When I run `cucumber`
54
55
  Then it should pass with:
55
56
  """
56
- YO
57
+ true
57
58
  """
58
59
 
@@ -0,0 +1,8 @@
1
+ Feature: Help
2
+
3
+ Running `cucumber --help` shows you command-line options.
4
+
5
+ Scenario: Show help
6
+ When I run `cucumber --help`
7
+ Then it should pass
8
+ And I should see the CLI help
@@ -1,32 +1,67 @@
1
- @wip
2
1
  Feature: Retry failing tests
3
2
 
4
3
  Retry gives you a way to get through flaky tests that usually pass after a few runs.
5
4
  This gives a development team a way forward other than disabling a valuable test.
6
-
5
+
7
6
  - Specify max retry count in option
8
7
  - Output information to the screen
9
8
  - Output retry information in test report
10
-
9
+
11
10
  Questions:
12
11
  use a tag for flaky tests? Global option to retry any test that fails?
13
-
12
+
14
13
  Background:
15
- Given a scenario "Flakey" that fails once, then passes
16
- And a scenario "Shakey" that fails twice, then passes
14
+ Given a scenario "Fails-once" that fails once, then passes
15
+ And a scenario "Fails-twice" that fails twice, then passes
17
16
  And a scenario "Solid" that passes
18
- And a scenario "No Dice" that fails
19
-
20
- Scenario:
21
- When I run `cucumber -q --retry 1`
17
+ And a scenario "Fails-forever" that fails
18
+
19
+ Scenario: Retry once, so Fails-once starts to pass
20
+ When I run `cucumber -q --retry 1 --format summary`
21
+ Then it should fail with:
22
+ """
23
+ 7 scenarios (5 failed, 2 passed)
24
+ """
25
+ And it should fail with:
26
+ """
27
+ Fails-forever
28
+ Fails-forever ✗
29
+ Fails-forever ✗
30
+
31
+ Solid
32
+ Solid ✓
33
+
34
+ Fails-once feature
35
+ Fails-once ✗
36
+ Fails-once ✓
37
+
38
+ Fails-twice feature
39
+ Fails-twice ✗
40
+ Fails-twice ✗
41
+ """
42
+
43
+ Scenario: Retry twice, so Fails-twice starts to pass too
44
+ When I run `cucumber -q --retry 2 --format summary`
22
45
  Then it should fail with:
23
46
  """
24
- 4 scenarios (2 passed, 2 failed)
47
+ 9 scenarios (6 failed, 3 passed)
48
+ """
49
+ And it should fail with:
25
50
  """
51
+ Fails-forever
52
+ Fails-forever ✗
53
+ Fails-forever ✗
54
+ Fails-forever ✗
55
+
56
+ Solid
57
+ Solid ✓
58
+
59
+ Fails-once feature
60
+ Fails-once ✗
61
+ Fails-once ✓
26
62
 
27
- Scenario:
28
- When I run `cucumber -q --retry 2`
29
- Then it should pass with:
63
+ Fails-twice feature
64
+ Fails-twice
65
+ Fails-twice
66
+ Fails-twice ✓
30
67
  """
31
- 4 scenarios (3 passed, 1 failed)
32
- """
@@ -8,6 +8,7 @@ Feature: Nested Steps in I18n
8
8
  And a step definition that looks like this:
9
9
  """ruby
10
10
  # -*- coding: utf-8 -*-
11
+ # frozen_string_literal: true
11
12
  前提 /a turtle/ do
12
13
  puts "turtle!"
13
14
  end
@@ -17,6 +18,7 @@ Feature: Nested Steps in I18n
17
18
  Given a step definition that looks like this:
18
19
  """ruby
19
20
  # -*- coding: utf-8 -*-
21
+ # frozen_string_literal: true
20
22
  前提 /two turtles/ do
21
23
  steps %{
22
24
  前提 a turtle
@@ -135,7 +135,6 @@ Feature: Pretty formatter - Printing messages
135
135
  Multiple
136
136
 
137
137
  Announce
138
-
139
138
  Me
140
139
  ..UUU
141
140
  Announce with fail
@@ -28,37 +28,3 @@ Feature: Skip Scenario
28
28
  2 steps (2 skipped)
29
29
 
30
30
  """
31
-
32
- @spawn
33
- Scenario: Use (deprecated) legacy API
34
- Given a file named "features/test.feature" with:
35
- """
36
- Feature: test
37
- Scenario: test
38
- Given this step passes
39
- And this step passes
40
- """
41
- And the standard step definitions
42
- And a file named "features/support/hook.rb" with:
43
- """
44
- Before do |scenario|
45
- scenario.skip_invoke!
46
- end
47
- """
48
- When I run `cucumber -q`
49
- Then it should pass with:
50
- """
51
- Feature: test
52
-
53
- Scenario: test
54
- Given this step passes
55
- And this step passes
56
-
57
- 1 scenario (1 skipped)
58
- 2 steps (2 skipped)
59
-
60
- """
61
- And the stderr should contain:
62
- """
63
- deprecated
64
- """
@@ -19,7 +19,7 @@ Feature: Custom Formatter
19
19
  class Formatter
20
20
  def initialize(config)
21
21
  @io = config.out_stream
22
- config.on_event Cucumber::Events::BeforeTestCase do |event|
22
+ config.on_event :test_case_starting do |event|
23
23
  print_test_case_name(event.test_case)
24
24
  end
25
25
  end
@@ -41,34 +41,6 @@ Feature: Custom Formatter
41
41
 
42
42
  """
43
43
 
44
- Scenario: Implement v2.0 formatter methods
45
- Note that this method is likely to be deprecated in favour of events - see above.
46
-
47
- Given a file named "features/support/custom_formatter.rb" with:
48
- """
49
- module MyCustom
50
- class Formatter
51
- def initialize(config)
52
- @io = config.out_stream
53
- end
54
-
55
- def before_test_case(test_case)
56
- feature = test_case.source.first
57
- scenario = test_case.source.last
58
- @io.puts feature.short_name.upcase
59
- @io.puts " #{scenario.name.upcase}"
60
- end
61
- end
62
- end
63
- """
64
- When I run `cucumber features/f.feature --format MyCustom::Formatter`
65
- Then it should pass with exactly:
66
- """
67
- I'LL USE MY OWN
68
- JUST PRINT ME
69
-
70
- """
71
-
72
44
  Scenario: Use the legacy API
73
45
  This is deprecated and should no longer be used.
74
46
 
@@ -99,7 +71,7 @@ Feature: Custom Formatter
99
71
  """
100
72
 
101
73
  Scenario: Use both old and new
102
- You can use a specific shim to opt-in to both APIs at once.
74
+ You can both APIs at once, for now
103
75
 
104
76
  Given a file named "features/support/custom_mixed_formatter.rb" with:
105
77
  """
@@ -0,0 +1,34 @@
1
+ Feature: Spec formatter
2
+
3
+ This formatter mimics the output from tools like RSpec or Mocha, giving an
4
+ overview of each feature and scenario but omitting the steps.
5
+
6
+ Background:
7
+ Given the standard step definitions
8
+
9
+ Scenario: A couple of scenarios
10
+ Given a file named "features/test.feature" with:
11
+ """
12
+ Feature: Test
13
+ Scenario: Passing
14
+ Given this step passes
15
+
16
+ Scenario: Failing
17
+ Given this step fails
18
+ """
19
+ When I run `cucumber --format summary`
20
+ Then it should fail with exactly:
21
+ """
22
+ Test
23
+ Passing ✓
24
+ Failing ✗
25
+
26
+ Failing Scenarios:
27
+ cucumber features/test.feature:5 # Scenario: Failing
28
+
29
+ 2 scenarios (1 failed, 1 passed)
30
+ 2 steps (1 failed, 1 passed)
31
+ 0m0.012s
32
+
33
+ """
34
+