cucumber 3.0.0.pre.1 → 3.0.0.pre.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/.cucumberproignore +6 -0
  3. data/.rubocop.yml +13 -0
  4. data/.rubocop_todo.yml +1075 -0
  5. data/.travis.yml +42 -8
  6. data/CONTRIBUTING.md +8 -1
  7. data/Gemfile +16 -10
  8. data/History.md +96 -36
  9. data/README.md +12 -3
  10. data/Rakefile +12 -2
  11. data/appveyor.yml +26 -0
  12. data/cucumber.gemspec +15 -10
  13. data/cucumber.yml +9 -10
  14. data/examples/i18n/Rakefile +1 -1
  15. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +2 -2
  16. data/examples/i18n/ar/lib/calculator.rb +2 -2
  17. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +6 -6
  18. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +4 -4
  19. data/examples/i18n/ca/lib/calculadora.rb +2 -2
  20. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +4 -4
  21. data/examples/i18n/cs/lib/calculator.rb +3 -3
  22. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +4 -4
  23. data/examples/i18n/da/lib/lommeregner.rb +2 -2
  24. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +4 -4
  25. data/examples/i18n/de/lib/calculator.rb +2 -2
  26. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +5 -5
  27. data/examples/i18n/el/lib/calculator.rb +2 -2
  28. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +4 -4
  29. data/examples/i18n/en-lol/lib/basket.rb +2 -2
  30. data/examples/i18n/en-lol/lib/belly.rb +2 -2
  31. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +4 -4
  32. data/examples/i18n/en/lib/calculator.rb +2 -2
  33. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +4 -4
  34. data/examples/i18n/eo/lib/calculator.rb +2 -2
  35. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +5 -5
  36. data/examples/i18n/es/lib/calculador.rb +2 -2
  37. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +4 -4
  38. data/examples/i18n/et/lib/kalkulaator.rb +3 -3
  39. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +3 -3
  40. data/examples/i18n/fi/lib/laskin.rb +1 -1
  41. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +8 -8
  42. data/examples/i18n/fr/features/support/env.rb +1 -1
  43. data/examples/i18n/fr/lib/calculatrice.rb +2 -2
  44. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +4 -4
  45. data/examples/i18n/he/lib/calculator.rb +1 -1
  46. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +3 -3
  47. data/examples/i18n/hi/lib/calculator.rb +1 -1
  48. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +4 -4
  49. data/examples/i18n/ht/lib/kalkilatris.rb +2 -2
  50. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +4 -4
  51. data/examples/i18n/hu/lib/calculator.rb +1 -1
  52. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +4 -4
  53. data/examples/i18n/id/lib/calculator.rb +2 -2
  54. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +4 -4
  55. data/examples/i18n/it/lib/calcolatrice.rb +3 -3
  56. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +3 -3
  57. data/examples/i18n/ja/features/support/env.rb +1 -1
  58. data/examples/i18n/ja/lib/calculator.rb +2 -2
  59. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +4 -4
  60. data/examples/i18n/ko/lib/calculator.rb +2 -2
  61. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +4 -4
  62. data/examples/i18n/lt/lib/calculator.rb +2 -2
  63. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +4 -4
  64. data/examples/i18n/lv/lib/calculator.rb +2 -2
  65. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +3 -3
  66. data/examples/i18n/no/features/support/env.rb +1 -1
  67. data/examples/i18n/no/lib/kalkulator.rb +2 -2
  68. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +4 -4
  69. data/examples/i18n/pl/lib/calculator.rb +2 -2
  70. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +3 -3
  71. data/examples/i18n/pt/features/support/env.rb +1 -1
  72. data/examples/i18n/pt/lib/calculadora.rb +1 -1
  73. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +5 -5
  74. data/examples/i18n/ro/lib/calculator.rb +1 -1
  75. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +5 -5
  76. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +4 -4
  77. data/examples/i18n/sk/lib/calculator.rb +2 -2
  78. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +3 -3
  79. data/examples/i18n/sr-Cyrl/features/support/env.rb +1 -1
  80. data/examples/i18n/sr-Cyrl/lib/calculator.rb +2 -2
  81. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +4 -4
  82. data/examples/i18n/sr-Latn/lib/calculator.rb +2 -2
  83. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +3 -3
  84. data/examples/i18n/sv/lib/kalkulator.rb +2 -2
  85. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +4 -4
  86. data/examples/i18n/tr/lib/hesap_makinesi.rb +2 -2
  87. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +4 -4
  88. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +4 -4
  89. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +5 -5
  90. data/examples/i18n/zh-CN/lib/calculator.rb +2 -2
  91. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +4 -4
  92. data/examples/i18n/zh-TW/lib/calculator.rb +2 -2
  93. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +3 -3
  94. data/examples/sinatra/features/step_definitions/add_steps.rb +4 -4
  95. data/examples/tcl/features/step_definitions/fib_steps.rb +2 -2
  96. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +4 -4
  97. data/examples/watir/features/step_definitions/search_steps.rb +3 -3
  98. data/examples/watir/features/support/screenshots.rb +5 -5
  99. data/features/docs/api/list_step_defs_as_json.feature +21 -7
  100. data/features/docs/api/listen_for_events.feature +1 -1
  101. data/features/docs/api/run_cli_main_with_existing_runtime.feature +1 -0
  102. data/features/docs/cli/dry_run.feature +3 -0
  103. data/features/docs/cli/execute_with_tag_filter.feature +4 -4
  104. data/features/docs/cli/fail_fast.feature +2 -0
  105. data/features/docs/{gherkin/language_help.feature → cli/i18n.feature} +6 -6
  106. data/features/docs/cli/randomize.feature +2 -2
  107. data/features/docs/cli/retry_failing_tests.feature +28 -3
  108. data/features/docs/cli/run_scenarios_matching_name.feature +1 -0
  109. data/features/docs/cli/specifying_multiple_formatters.feature +3 -0
  110. data/features/docs/cli/strict_mode.feature +6 -0
  111. data/features/docs/defining_steps/nested_steps.feature +5 -1
  112. data/features/docs/defining_steps/nested_steps_i18n.feature +1 -0
  113. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +2 -0
  114. data/features/docs/defining_steps/printing_messages.feature +1 -1
  115. data/features/docs/defining_steps/skip_scenario.feature +1 -0
  116. data/features/docs/defining_steps/snippets.feature +18 -18
  117. data/features/docs/events/gherkin_source_read_event.feature +43 -0
  118. data/features/docs/events/step_activated_event.feature +36 -0
  119. data/features/docs/events/step_definition_registered_event.feature +29 -0
  120. data/features/docs/events/test_case_finished_event.feature +35 -0
  121. data/features/docs/events/test_case_starting_event.feature +54 -0
  122. data/features/docs/events/test_run_finished_event.feature +40 -0
  123. data/features/docs/events/test_run_starting_event.feature +41 -0
  124. data/features/docs/events/test_step_finished_event.feature +47 -0
  125. data/features/docs/events/test_step_starting_event.feature +43 -0
  126. data/features/docs/exception_in_after_hook.feature +3 -2
  127. data/features/docs/exception_in_after_step_hook.feature +2 -0
  128. data/features/docs/exception_in_around_hook.feature +2 -0
  129. data/features/docs/exception_in_before_hook.feature +3 -1
  130. data/features/docs/extending_cucumber/custom_formatter.feature +21 -1
  131. data/features/docs/formatters/json_formatter.feature +4 -4
  132. data/features/docs/formatters/junit_formatter.feature +7 -6
  133. data/features/docs/formatters/pretty_formatter.feature +1 -0
  134. data/features/docs/formatters/progress_formatter.feature +1 -0
  135. data/features/docs/formatters/rerun_formatter.feature +2 -0
  136. data/features/docs/formatters/summary_formatter.feature +1 -0
  137. data/features/docs/formatters/usage_formatter.feature +3 -0
  138. data/features/docs/getting_started.feature +2 -1
  139. data/features/docs/gherkin/background.feature +5 -5
  140. data/features/docs/gherkin/doc_strings.feature +2 -0
  141. data/features/docs/gherkin/expand_option_for_outlines.feature +1 -0
  142. data/features/docs/gherkin/outlines.feature +4 -0
  143. data/features/docs/gherkin/unicode_table.feature +1 -0
  144. data/features/docs/gherkin/using_descriptions.feature +1 -0
  145. data/features/docs/gherkin/using_star_notation.feature +1 -1
  146. data/features/docs/post_configuration_hook.feature +1 -1
  147. data/features/docs/rake_task.feature +5 -0
  148. data/features/docs/raketask.feature +3 -1
  149. data/features/docs/work_in_progress.feature +5 -2
  150. data/features/docs/writing_support_code/after_step_hooks.feature +3 -1
  151. data/features/docs/writing_support_code/around_hooks.feature +6 -0
  152. data/features/docs/writing_support_code/before_hook.feature +1 -0
  153. data/features/docs/writing_support_code/hook_order.feature +3 -1
  154. data/features/docs/writing_support_code/parameter_types.feature +75 -0
  155. data/features/docs/writing_support_code/tagged_hooks.feature +1 -1
  156. data/features/lib/step_definitions/aruba_steps.rb +4 -10
  157. data/features/lib/step_definitions/cli_steps.rb +2 -2
  158. data/features/lib/step_definitions/cucumber_steps.rb +8 -12
  159. data/features/lib/step_definitions/iso-8859-1_steps.rb +2 -2
  160. data/features/lib/step_definitions/json_steps.rb +1 -1
  161. data/features/lib/step_definitions/junit_steps.rb +1 -1
  162. data/features/lib/step_definitions/language_steps.rb +2 -2
  163. data/features/lib/step_definitions/profile_steps.rb +6 -6
  164. data/features/lib/step_definitions/retry_steps.rb +3 -3
  165. data/features/lib/step_definitions/ruby_steps.rb +1 -1
  166. data/features/lib/support/env.rb +1 -1
  167. data/features/lib/support/fake_wire_server.rb +7 -2
  168. data/features/lib/support/feature_factory.rb +1 -1
  169. data/features/lib/support/normalise_output.rb +13 -12
  170. data/features/lib/support/parameter_types.rb +8 -0
  171. data/gem_tasks/contributors.rake +9 -6
  172. data/gem_tasks/environment.rake +1 -5
  173. data/gem_tasks/examples.rake +1 -1
  174. data/gem_tasks/fix_cr_lf.rake +1 -1
  175. data/gem_tasks/flog.rake +2 -2
  176. data/gem_tasks/rspec.rake +1 -1
  177. data/lib/autotest/cucumber_mixin.rb +15 -15
  178. data/lib/autotest/discover.rb +2 -2
  179. data/lib/cucumber/cli/configuration.rb +7 -13
  180. data/lib/cucumber/cli/main.rb +6 -6
  181. data/lib/cucumber/cli/options.rb +163 -126
  182. data/lib/cucumber/cli/profile_loader.rb +24 -20
  183. data/lib/cucumber/configuration.rb +12 -17
  184. data/lib/cucumber/constantize.rb +1 -1
  185. data/lib/cucumber/core_ext/string.rb +1 -1
  186. data/lib/cucumber/deprecate.rb +1 -1
  187. data/lib/cucumber/events.rb +11 -1
  188. data/lib/cucumber/events/gherkin_source_read.rb +17 -0
  189. data/lib/cucumber/events/{step_match.rb → step_activated.rb} +2 -2
  190. data/lib/cucumber/events/step_definition_registered.rb +1 -1
  191. data/lib/cucumber/events/test_case_finished.rb +18 -0
  192. data/lib/cucumber/events/test_case_starting.rb +15 -0
  193. data/lib/cucumber/events/test_run_starting.rb +16 -0
  194. data/lib/cucumber/events/test_step_finished.rb +20 -0
  195. data/lib/cucumber/events/test_step_starting.rb +17 -0
  196. data/lib/cucumber/filters.rb +1 -0
  197. data/lib/cucumber/filters/activate_steps.rb +1 -1
  198. data/lib/cucumber/filters/broadcast_test_run_starting_event.rb +27 -0
  199. data/lib/cucumber/filters/retry.rb +1 -1
  200. data/lib/cucumber/filters/tag_limits.rb +3 -3
  201. data/lib/cucumber/filters/tag_limits/verifier.rb +1 -1
  202. data/lib/cucumber/formatter/ansicolor.rb +8 -11
  203. data/lib/cucumber/formatter/backtrace_filter.rb +19 -7
  204. data/lib/cucumber/formatter/console.rb +16 -19
  205. data/lib/cucumber/formatter/console_counts.rb +8 -21
  206. data/lib/cucumber/formatter/console_issues.rb +30 -9
  207. data/lib/cucumber/formatter/duration.rb +1 -1
  208. data/lib/cucumber/formatter/fail_fast.rb +1 -1
  209. data/lib/cucumber/formatter/html.rb +168 -242
  210. data/lib/cucumber/formatter/html_builder.rb +110 -0
  211. data/lib/cucumber/formatter/inline-js.js +30 -0
  212. data/lib/cucumber/formatter/interceptor.rb +2 -2
  213. data/lib/cucumber/formatter/json.rb +12 -12
  214. data/lib/cucumber/formatter/junit.rb +11 -11
  215. data/lib/cucumber/formatter/legacy_api/adapter.rb +27 -27
  216. data/lib/cucumber/formatter/legacy_api/ast.rb +16 -20
  217. data/lib/cucumber/formatter/legacy_api/results.rb +6 -8
  218. data/lib/cucumber/formatter/pretty.rb +17 -17
  219. data/lib/cucumber/formatter/progress.rb +11 -12
  220. data/lib/cucumber/formatter/rerun.rb +1 -1
  221. data/lib/cucumber/formatter/steps.rb +1 -1
  222. data/lib/cucumber/formatter/unicode.rb +1 -1
  223. data/lib/cucumber/formatter/usage.rb +12 -12
  224. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +1 -1
  225. data/lib/cucumber/gherkin/formatter/escaping.rb +1 -1
  226. data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +44 -17
  227. data/lib/cucumber/glue/hook.rb +43 -0
  228. data/lib/cucumber/glue/invoke_in_world.rb +70 -0
  229. data/lib/cucumber/glue/proto_world.rb +225 -0
  230. data/lib/cucumber/{rb_support/rb_language.rb → glue/registry_and_more.rb} +45 -86
  231. data/lib/cucumber/{rb_support → glue}/snippet.rb +62 -25
  232. data/lib/cucumber/glue/step_definition.rb +143 -0
  233. data/lib/cucumber/glue/world_factory.rb +23 -0
  234. data/lib/cucumber/hooks.rb +4 -4
  235. data/lib/cucumber/multiline_argument.rb +2 -2
  236. data/lib/cucumber/multiline_argument/data_table.rb +40 -178
  237. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +158 -0
  238. data/lib/cucumber/platform.rb +3 -5
  239. data/lib/cucumber/rake/task.rb +11 -11
  240. data/lib/cucumber/rspec/disable_option_parser.rb +1 -1
  241. data/lib/cucumber/rspec/doubles.rb +1 -1
  242. data/lib/cucumber/running_test_case.rb +2 -2
  243. data/lib/cucumber/runtime.rb +46 -34
  244. data/lib/cucumber/runtime/after_hooks.rb +1 -1
  245. data/lib/cucumber/runtime/for_programming_languages.rb +1 -36
  246. data/lib/cucumber/runtime/support_code.rb +19 -15
  247. data/lib/cucumber/runtime/user_interface.rb +4 -11
  248. data/lib/cucumber/step_argument.rb +0 -2
  249. data/lib/cucumber/step_definition_light.rb +1 -0
  250. data/lib/cucumber/step_match.rb +16 -15
  251. data/lib/cucumber/step_match_search.rb +2 -3
  252. data/lib/cucumber/term/ansicolor.rb +1 -1
  253. data/lib/cucumber/version +1 -1
  254. data/lib/simplecov_setup.rb +1 -1
  255. data/scripts/invite-collaborator +40 -0
  256. data/scripts/update-history +83 -0
  257. data/spec/cucumber/cli/configuration_spec.rb +95 -97
  258. data/spec/cucumber/cli/main_spec.rb +7 -7
  259. data/spec/cucumber/cli/options_spec.rb +112 -78
  260. data/spec/cucumber/cli/profile_loader_spec.rb +24 -5
  261. data/spec/cucumber/cli/rerun_spec.rb +20 -20
  262. data/spec/cucumber/configuration_spec.rb +47 -47
  263. data/spec/cucumber/constantize_spec.rb +2 -2
  264. data/spec/cucumber/events_spec.rb +9 -0
  265. data/spec/cucumber/file_specs_spec.rb +25 -25
  266. data/spec/cucumber/filters/activate_steps_spec.rb +16 -16
  267. data/spec/cucumber/filters/gated_receiver_spec.rb +6 -6
  268. data/spec/cucumber/filters/retry_spec.rb +22 -9
  269. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +11 -11
  270. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +14 -14
  271. data/spec/cucumber/filters/tag_limits_spec.rb +8 -8
  272. data/spec/cucumber/formatter/ansicolor_spec.rb +9 -9
  273. data/spec/cucumber/formatter/backtrace_filter_spec.rb +32 -0
  274. data/spec/cucumber/formatter/console_counts_spec.rb +1 -1
  275. data/spec/cucumber/formatter/duration_spec.rb +3 -3
  276. data/spec/cucumber/formatter/fail_fast_spec.rb +21 -21
  277. data/spec/cucumber/formatter/html_spec.rb +58 -58
  278. data/spec/cucumber/formatter/json_spec.rb +44 -46
  279. data/spec/cucumber/formatter/junit_spec.rb +43 -45
  280. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +43 -43
  281. data/spec/cucumber/formatter/pretty_spec.rb +107 -107
  282. data/spec/cucumber/formatter/progress_spec.rb +20 -20
  283. data/spec/cucumber/formatter/rerun_spec.rb +1 -1
  284. data/spec/cucumber/formatter/spec_helper.rb +6 -5
  285. data/spec/cucumber/{rb_support/rb_world_spec.rb → glue/proto_world_spec.rb} +20 -5
  286. data/spec/cucumber/glue/registry_and_more_spec.rb +213 -0
  287. data/spec/cucumber/{rb_support → glue}/snippet_spec.rb +61 -25
  288. data/spec/cucumber/glue/step_definition_spec.rb +207 -0
  289. data/spec/cucumber/hooks_spec.rb +3 -3
  290. data/spec/cucumber/multiline_argument/data_table_spec.rb +177 -133
  291. data/spec/cucumber/project_initializer_spec.rb +10 -10
  292. data/spec/cucumber/rake/forked_spec.rb +10 -10
  293. data/spec/cucumber/rake/task_spec.rb +20 -20
  294. data/spec/cucumber/running_test_case_spec.rb +35 -35
  295. data/spec/cucumber/runtime/for_programming_languages_spec.rb +1 -30
  296. data/spec/cucumber/runtime_spec.rb +2 -2
  297. data/spec/cucumber/step_argument_spec.rb +5 -5
  298. data/spec/cucumber/step_match_search_spec.rb +31 -41
  299. data/spec/cucumber/step_match_spec.rb +33 -33
  300. data/spec/cucumber/world/pending_spec.rb +10 -10
  301. metadata +117 -47
  302. data/features/docs/formatters/debug_formatter.feature +0 -47
  303. data/features/docs/writing_support_code/transforms.feature +0 -98
  304. data/features/lib/step_definitions/wire_steps.rb +0 -59
  305. data/gem_tasks/cucumber.rake +0 -26
  306. data/lib/cucumber/core_ext/instance_exec.rb +0 -71
  307. data/lib/cucumber/formatter/debug.rb +0 -36
  308. data/lib/cucumber/rb_support/rb_hook.rb +0 -20
  309. data/lib/cucumber/rb_support/rb_step_definition.rb +0 -132
  310. data/lib/cucumber/rb_support/rb_transform.rb +0 -60
  311. data/lib/cucumber/rb_support/rb_world.rb +0 -171
  312. data/spec/cucumber/core_ext/instance_exec_spec.rb +0 -5
  313. data/spec/cucumber/formatter/debug_spec.rb +0 -65
  314. data/spec/cucumber/rb_support/rb_language_spec.rb +0 -321
  315. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -200
  316. data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -47
data/Rakefile CHANGED
@@ -6,7 +6,15 @@ Bundler::GemHelper.install_tasks
6
6
  $:.unshift(File.dirname(__FILE__) + '/lib')
7
7
  Dir['gem_tasks/**/*.rake'].each { |rake| load rake }
8
8
 
9
- task :default => [:spec, :cucumber]
9
+ require 'rubocop/rake_task'
10
+ RuboCop::RakeTask.new
11
+
12
+ require 'cucumber/rake/task'
13
+ Cucumber::Rake::Task.new do |t|
14
+ t.profile = 'ruby' if Cucumber::RUBY
15
+ end
16
+
17
+ default_tasks = [:spec, :rubocop, :cucumber]
10
18
 
11
19
  if ENV['TRAVIS']
12
20
  ENV['SIMPLECOV'] = 'ci'
@@ -15,8 +23,10 @@ if ENV['TRAVIS']
15
23
  require 'coveralls/rake/task'
16
24
  Coveralls::RakeTask.new
17
25
 
18
- task :default => [:spec, :cucumber, 'coveralls:push']
26
+ default_tasks << 'coveralls:push'
19
27
  end
20
28
 
29
+ task :default => default_tasks
30
+
21
31
  require 'rake/clean'
22
32
  CLEAN.include %w(**/*.{log,pyc,rbc,tgz} doc)
@@ -0,0 +1,26 @@
1
+ version: '1.0.{build}'
2
+
3
+ environment:
4
+ matrix:
5
+ - RUBY_VERSION: 23
6
+ - RUBY_VERSION: 23-x64
7
+
8
+
9
+ install:
10
+ - set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
11
+ - bundle install
12
+
13
+ build: off
14
+
15
+ before_test:
16
+ - ruby -v
17
+ - gem -v
18
+ - bundle -v
19
+
20
+ test_script:
21
+ - bundle exec rake
22
+
23
+ notifications:
24
+ - provider: Slack
25
+ incoming_webhook:
26
+ secure: https://hooks.slack.com/services/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
@@ -1,25 +1,26 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'cucumber'
4
- s.version = File.read(File.expand_path("../lib/cucumber/version", __FILE__))
5
- s.authors = ["Aslak Hellesøy", "Matt Wynne", "Steve Tooke"]
4
+ s.version = File.read(File.expand_path('../lib/cucumber/version', __FILE__))
5
+ s.authors = ["Aslak Hellesøy", 'Matt Wynne', 'Steve Tooke']
6
6
  s.description = 'Behaviour Driven Development with elegance and joy'
7
7
  s.summary = "cucumber-#{s.version}"
8
8
  s.email = 'cukes@googlegroups.com'
9
9
  s.license = 'MIT'
10
- s.homepage = "https://cucumber.io/"
10
+ s.homepage = 'https://cucumber.io/'
11
11
  s.platform = Gem::Platform::RUBY
12
- s.required_ruby_version = ">= 1.9.3"
13
- s.add_dependency 'cucumber-core', '~> 2.0'
12
+ s.required_ruby_version = '>= 1.9.3'
13
+ s.add_dependency 'cucumber-core', '3.0.0.pre.2'
14
14
  s.add_dependency 'builder', '>= 2.1.2'
15
- s.add_dependency 'diff-lcs', '>= 1.1.3'
15
+ s.add_dependency 'diff-lcs', '~> 1.3'
16
16
  s.add_dependency 'gherkin', '~> 4.0'
17
17
  s.add_dependency 'multi_json', '>= 1.7.5', '< 2.0'
18
18
  s.add_dependency 'multi_test', '>= 0.1.2'
19
19
  s.add_dependency 'cucumber-wire', '~> 0.0.1'
20
+ s.add_dependency 'cucumber-expressions', '~> 4.0.3'
20
21
 
21
22
  s.add_development_dependency 'aruba', '~> 0.6.1'
22
- s.add_development_dependency 'json', '~> 1.7'
23
+ s.add_development_dependency 'json', '~> 1.8.6'
23
24
  s.add_development_dependency 'nokogiri', '~> 1.5'
24
25
  s.add_development_dependency 'rake', '>= 0.9.2'
25
26
  s.add_development_dependency 'rspec', '>= 3.0'
@@ -27,6 +28,10 @@ Gem::Specification.new do |s|
27
28
  s.add_development_dependency 'coveralls', '~> 0.7'
28
29
  s.add_development_dependency 'syntax', '>= 1.0.0'
29
30
  s.add_development_dependency 'pry'
31
+ s.add_development_dependency 'rubocop', '~> 0.40.0'
32
+
33
+ # For maintainer scripts
34
+ s.add_development_dependency 'octokit'
30
35
 
31
36
  # For Documentation:
32
37
  s.add_development_dependency 'bcat', '~> 0.6.2'
@@ -38,10 +43,10 @@ Gem::Specification.new do |s|
38
43
  s.add_development_dependency 'rack-test', '>= 0.6.1'
39
44
  s.add_development_dependency 'sinatra', '>= 1.3.2'
40
45
 
41
- s.rubygems_version = ">= 1.6.1"
46
+ s.rubygems_version = '>= 1.6.1'
42
47
  s.files = `git ls-files`.split("\n").reject {|path| path =~ /\.gitignore$/ }
43
48
  s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
44
49
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
45
- s.rdoc_options = ["--charset=UTF-8"]
46
- s.require_path = "lib"
50
+ s.rdoc_options = ['--charset=UTF-8']
51
+ s.require_path = 'lib'
47
52
  end
@@ -5,16 +5,15 @@ rerun_opts = rerun.to_s.strip.empty? ? "--format progress features" : "--format
5
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"
9
- wip_opts << ",@wip-jruby" if defined?(JRUBY_VERSION)
8
+ wip_opts = "--color -r features"
9
+ wip_opts << " --tags @wip" if !defined?(JRUBY_VERSION)
10
+ wip_opts << " --tags @wip,@wip-jruby" if defined?(JRUBY_VERSION)
10
11
  %>
11
- default: <%= std_opts %> --tags ~@jruby
12
- jruby: <%= std_opts %> --tags ~@wire
13
- jruby_win: <%= std_opts %> --tags ~@wire CUCUMBER_FORWARD_SLASH_PATHS=true
14
- windows_mri: <%= std_opts %> --tags ~@jruby --tags ~@wire --tags ~@needs-many-fonts CUCUMBER_FORWARD_SLASH_PATHS=true
15
- ruby_1_9: <%= std_opts %> --tags ~@jruby
16
- ruby_2_0: <%= std_opts %> --tags ~@jruby
17
- ruby_2_1: <%= std_opts %> --tags ~@jruby
12
+ default: <%= std_opts %> --tags "not @jruby"
13
+ jruby: <%= std_opts %> --tags "not @wire"
14
+ jruby_win: <%= std_opts %> --tags "not @wire" CUCUMBER_FORWARD_SLASH_PATHS=true
15
+ windows_mri: <%= std_opts %> --tags "not @jruby" --tags "not @wire" --tags "not @needs-many-fonts" --tags "not @todo-windows" CUCUMBER_FORWARD_SLASH_PATHS=true
16
+ ruby: <%= std_opts %> --tags "not @todo-windows" --tags "not @jruby"
18
17
  wip: --wip <%= wip_opts %> features <%= cucumber_pro_opts %>
19
18
  none: --format pretty --format Cucumber::Pro --out /dev/null
20
- rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tag ~@wip-new-core <%= cucumber_pro_opts %>
19
+ rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags "not @wip-new-core" <%= cucumber_pro_opts %>
@@ -7,7 +7,7 @@ task :cucumber do
7
7
  if examples_working?(lang)
8
8
  Dir.chdir(f) do
9
9
  puts "DIR: #{f}"
10
- rake("cucumber")
10
+ rake('cucumber')
11
11
  end
12
12
  else
13
13
  STDERR.puts %{
@@ -15,10 +15,10 @@ Given "كتابة $n في الآلة الحاسبة" 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
 
22
- Then /يظهر (.*) على الشاشة/ do |result|
22
+ Then(/يظهر (.*) على الشاشة/) do |result|
23
23
  @result.should == result.to_f
24
24
  end
@@ -4,8 +4,8 @@ class Calculator
4
4
  @args ||= []
5
5
  @args << n
6
6
  end
7
-
7
+
8
8
  def جمع
9
- @args.inject(0){|n,sum| sum+=n}
9
+ @args.inject(0){|n,sum| sum + n}
10
10
  end
11
11
  end
@@ -1,24 +1,24 @@
1
1
  # encoding: utf-8
2
2
 
3
- Дадено /въвел (\d+)/ do |x|
3
+ Дадено(/въвел (\d+)/) do |x|
4
4
  calc.push x.to_i
5
5
  end
6
6
 
7
- Когато /^въведа (\d+)/ do |x|
7
+ Когато(/^въведа (\d+)/) do |x|
8
8
  calc.push x.to_i
9
9
  end
10
10
 
11
- Когато /натисна "(.*)"/ do |op|
11
+ Когато(/натисна "(.*)"/) do |op|
12
12
  calc.send op
13
13
  end
14
14
 
15
- То /резултата трябва да е равен на (\d+)/ do |result|
15
+ То(/резултата трябва да е равен на (\d+)/) do |result|
16
16
  calc.result.should == result.to_f
17
17
  end
18
18
 
19
- Дадено /събрал (\d+) и (\d+)/ do |x, y|
19
+ Дадено(/събрал (\d+) и (\d+)/) do |x, y|
20
20
  Дадено %{въвел #{x}}
21
- Дадено %{въвел #{y}}
21
+ Дадено %{въвел #{y}}
22
22
  Дадено %{натисна "+"}
23
23
  end
24
24
 
@@ -1,21 +1,21 @@
1
1
  # encoding: utf-8
2
2
  begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
3
3
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
5
  require 'calculadora'
6
6
 
7
7
  Before do
8
8
  @calc = Calculadora.new
9
9
  end
10
10
 
11
- Donat /que he introduït (\d+) a la calculadora/ do |n|
11
+ Donat(/que he introduït (\d+) a la calculadora/) do |n|
12
12
  @calc.push n.to_i
13
13
  end
14
14
 
15
- Quan /premo el (\w+)/ do |op|
15
+ Quan(/premo el (\w+)/) do |op|
16
16
  @result = @calc.send op
17
17
  end
18
18
 
19
- Aleshores /el resultat ha de ser (\d+) a la pantalla/ do |result|
19
+ Aleshores(/el resultat ha de ser (\d+) a la pantalla/) do |result|
20
20
  @result.should == result.to_f
21
21
  end
@@ -6,11 +6,11 @@ class Calculadora
6
6
  end
7
7
 
8
8
  def add
9
- @args.inject(0){|n,sum| sum+=n}
9
+ @args.inject(0){|n,sum| sum + n}
10
10
  end
11
11
 
12
12
  def divide
13
13
  @args[0].to_f / @args[1].to_f
14
14
  end
15
15
 
16
- end
16
+ end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
3
3
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
5
  require 'calculator'
6
6
 
7
7
  Before do
@@ -11,14 +11,14 @@ end
11
11
  After do
12
12
  end
13
13
 
14
- Given /Zadám číslo (\d+) do kalkulačky/ do |n|
14
+ Given(/Zadám číslo (\d+) do kalkulačky/) do |n|
15
15
  @calc.push n.to_i
16
16
  end
17
17
 
18
- When /Stisknu (\w+)/ do |op|
18
+ When(/Stisknu (\w+)/) do |op|
19
19
  @result = @calc.send op
20
20
  end
21
21
 
22
- Then /Výsledek by měl být (.*)/ do |result|
22
+ Then(/Výsledek by měl být (.*)/) do |result|
23
23
  @result.should == result.to_f
24
24
  end
@@ -3,12 +3,12 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
12
12
  @args[0].to_f / @args[1].to_f
13
13
  end
14
- end
14
+ end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
3
3
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
5
  require 'lommeregner'
6
6
 
7
7
  Before do
@@ -11,14 +11,14 @@ end
11
11
  After do
12
12
  end
13
13
 
14
- Given /at jeg har indtastet (\d+)/ do |n|
14
+ Given(/at jeg har indtastet (\d+)/) do |n|
15
15
  @calc.push n.to_i
16
16
  end
17
17
 
18
- When 'jeg lægger sammen' do
18
+ When('jeg lægger sammen') do
19
19
  @result = @calc.add
20
20
  end
21
21
 
22
- Then /skal resultatet være (\d*)/ do |result|
22
+ Then(/skal resultatet være (\d*)/) do |result|
23
23
  @result.should == result.to_i
24
24
  end
@@ -3,9 +3,9 @@ class Lommeregner
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
8
  #@args[0] + @args[1]
9
- @args.inject(0){|n,sum| sum+=n}
9
+ @args.inject(0){|n,sum| sum + n}
10
10
  end
11
11
  end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
3
3
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
5
  require 'calculator'
6
6
 
7
7
  Before do
@@ -11,14 +11,14 @@ end
11
11
  After do
12
12
  end
13
13
 
14
- Angenommen /ich habe (\d+) in den Taschenrechner eingegeben/ do |n|
14
+ Angenommen(/ich habe (\d+) in den Taschenrechner eingegeben/) do |n|
15
15
  @calc.push n.to_i
16
16
  end
17
17
 
18
- Wenn /ich (\w+) drücke/ do |op|
18
+ Wenn(/ich (\w+) drücke/) do |op|
19
19
  @result = @calc.send op
20
20
  end
21
21
 
22
- Dann /sollte das Ergebniss auf dem Bildschirm (.*) sein/ do |result|
22
+ Dann(/sollte das Ergebniss auf dem Bildschirm (.*) sein/) do |result|
23
23
  @result.should == result.to_f
24
24
  end
@@ -3,9 +3,9 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
3
3
  require 'cucumber/formatter/unicode'
4
4
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
5
  require 'calculator'
@@ -11,14 +11,14 @@ end
11
11
  After do
12
12
  end
13
13
 
14
- Δεδομένου ότι /έχω εισάγει (\d+) στην αριθμομηχανή/ do |n|
14
+ Δεδομένου ότι(/έχω εισάγει (\d+) στην αριθμομηχανή/) do |n|
15
15
  @calc.push n.to_i
16
16
  end
17
17
 
18
- Όταν /πατάω (\w+)/ do |op|
18
+ Όταν(/πατάω (\w+)/) do |op|
19
19
  @result = @calc.send op
20
20
  end
21
21
 
22
- Τότε /το αποτέλεσμα στην οθόνη πρέπει να είναι (.*)/ do |result|
22
+ Τότε(/το αποτέλεσμα στην οθόνη πρέπει να είναι (.*)/) do |result|
23
23
  @result.should == result.to_f
24
- end
24
+ end
@@ -3,9 +3,9 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
@@ -1,16 +1,16 @@
1
- ICANHAZ /^IN TEH BEGINNIN (\d+) CUCUMBRZ$/ do |n|
1
+ ICANHAZ(/^IN TEH BEGINNIN (\d+) CUCUMBRZ$/) do |n|
2
2
  @basket = Basket.new(n.to_i)
3
3
  end
4
4
 
5
- WEN /^I EAT (\d+) CUCUMBRZ$/ do |n|
5
+ WEN(/^I EAT (\d+) CUCUMBRZ$/) do |n|
6
6
  @belly = Belly.new
7
7
  @belly.eat(@basket.take(n.to_i))
8
8
  end
9
9
 
10
- DEN /^I HAS (\d+) CUCUMBERZ IN MAH BELLY$/ do |n|
10
+ DEN(/^I HAS (\d+) CUCUMBERZ IN MAH BELLY$/) do |n|
11
11
  @belly.cukes.should == n.to_i
12
12
  end
13
13
 
14
- DEN /^IN TEH END (\d+) CUCUMBRZ KTHXBAI$/ do |n|
14
+ DEN(/^IN TEH END (\d+) CUCUMBRZ KTHXBAI$/) do |n|
15
15
  @basket.cukes.should == n.to_i
16
16
  end
@@ -1,10 +1,10 @@
1
1
  class Basket
2
2
  attr_reader :cukes
3
-
3
+
4
4
  def initialize(cukes)
5
5
  @cukes = cukes
6
6
  end
7
-
7
+
8
8
  def take(cukes)
9
9
  @cukes -= cukes
10
10
  cukes