engineyard-cucumber 0.3.101

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 (454) hide show
  1. data/History.txt +1073 -0
  2. data/License.txt +22 -0
  3. data/Manifest.txt +453 -0
  4. data/README.txt +4 -0
  5. data/Rakefile +9 -0
  6. data/bin/cucumber +17 -0
  7. data/config/hoe.rb +78 -0
  8. data/config/requirements.rb +15 -0
  9. data/cucumber.yml +2 -0
  10. data/examples/cs/README.textile +1 -0
  11. data/examples/cs/Rakefile +12 -0
  12. data/examples/cs/compile.bat +1 -0
  13. data/examples/cs/features/addition.feature +16 -0
  14. data/examples/cs/features/step_definitons/calculator_steps.rb +19 -0
  15. data/examples/cs/src/demo/Calculator.cs +20 -0
  16. data/examples/dos_line_endings/Rakefile +6 -0
  17. data/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
  18. data/examples/i18n/README.textile +18 -0
  19. data/examples/i18n/Rakefile +32 -0
  20. data/examples/i18n/ar/Rakefile +6 -0
  21. data/examples/i18n/ar/features/addition.feature +17 -0
  22. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +24 -0
  23. data/examples/i18n/ar/lib/calculator.rb +11 -0
  24. data/examples/i18n/bg/Rakefile +6 -0
  25. data/examples/i18n/bg/features/addition.feature +12 -0
  26. data/examples/i18n/bg/features/consecutive_calculations.feature +19 -0
  27. data/examples/i18n/bg/features/division.feature +17 -0
  28. data/examples/i18n/bg/features/step_definitons/calculator_steps.rb +24 -0
  29. data/examples/i18n/bg/features/support/env.rb +6 -0
  30. data/examples/i18n/bg/features/support/world.rb +8 -0
  31. data/examples/i18n/bg/lib/calculator.rb +24 -0
  32. data/examples/i18n/cat/Rakefile +6 -0
  33. data/examples/i18n/cat/features/step_definitons/calculator_steps.rb +21 -0
  34. data/examples/i18n/cat/features/suma.feature +17 -0
  35. data/examples/i18n/cat/lib/calculadora.rb +16 -0
  36. data/examples/i18n/da/Rakefile +6 -0
  37. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +24 -0
  38. data/examples/i18n/da/features/summering.feature +18 -0
  39. data/examples/i18n/da/lib/kalkulator.rb +11 -0
  40. data/examples/i18n/de/Rakefile +6 -0
  41. data/examples/i18n/de/features/addition.feature +17 -0
  42. data/examples/i18n/de/features/division.feature +10 -0
  43. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +24 -0
  44. data/examples/i18n/de/lib/calculator.rb +14 -0
  45. data/examples/i18n/en-lol/Rakefile +6 -0
  46. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
  47. data/examples/i18n/en-lol/features/stuffing.feature +8 -0
  48. data/examples/i18n/en-lol/features/support/env.rb +8 -0
  49. data/examples/i18n/en-lol/lib/basket.rb +12 -0
  50. data/examples/i18n/en-lol/lib/belly.rb +11 -0
  51. data/examples/i18n/en/Rakefile +6 -0
  52. data/examples/i18n/en/features/addition.feature +17 -0
  53. data/examples/i18n/en/features/division.feature +10 -0
  54. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +24 -0
  55. data/examples/i18n/en/lib/calculator.rb +14 -0
  56. data/examples/i18n/es/Rakefile +6 -0
  57. data/examples/i18n/es/features/adicion.feature +17 -0
  58. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +21 -0
  59. data/examples/i18n/es/lib/calculador.rb +14 -0
  60. data/examples/i18n/et/Rakefile +6 -0
  61. data/examples/i18n/et/features/jagamine.feature +10 -0
  62. data/examples/i18n/et/features/liitmine.feature +17 -0
  63. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +24 -0
  64. data/examples/i18n/et/lib/kalkulaator.rb +14 -0
  65. data/examples/i18n/fi/Rakefile +6 -0
  66. data/examples/i18n/fi/features/jakolasku.feature +10 -0
  67. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
  68. data/examples/i18n/fi/features/yhteenlasku.feature +17 -0
  69. data/examples/i18n/fi/lib/laskin.rb +14 -0
  70. data/examples/i18n/fr/Rakefile +6 -0
  71. data/examples/i18n/fr/features/addition.feature +18 -0
  72. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +25 -0
  73. data/examples/i18n/fr/lib/calculatrice.rb +10 -0
  74. data/examples/i18n/he/Rakefile +6 -0
  75. data/examples/i18n/he/features/addition.feature +17 -0
  76. data/examples/i18n/he/features/division.feature +10 -0
  77. data/examples/i18n/he/features/step_definitons/calculator_steps.rb +24 -0
  78. data/examples/i18n/he/lib/calculator.rb +14 -0
  79. data/examples/i18n/hu/Rakefile +6 -0
  80. data/examples/i18n/hu/features/addition.feature +17 -0
  81. data/examples/i18n/hu/features/division.feature +10 -0
  82. data/examples/i18n/hu/features/step_definitons/calculator_steps.rb +25 -0
  83. data/examples/i18n/hu/lib/calculator.rb +14 -0
  84. data/examples/i18n/id/Rakefile +6 -0
  85. data/examples/i18n/id/features/addition.feature +17 -0
  86. data/examples/i18n/id/features/division.feature +10 -0
  87. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +24 -0
  88. data/examples/i18n/id/lib/calculator.rb +14 -0
  89. data/examples/i18n/it/Rakefile +6 -0
  90. data/examples/i18n/it/features/somma.feature +11 -0
  91. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +24 -0
  92. data/examples/i18n/it/lib/calcolatrice.rb +11 -0
  93. data/examples/i18n/ja/Rakefile +6 -0
  94. data/examples/i18n/ja/features/addition.feature +17 -0
  95. data/examples/i18n/ja/features/division.feature +10 -0
  96. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +24 -0
  97. data/examples/i18n/ja/lib/calculator.rb +14 -0
  98. data/examples/i18n/ko/Rakefile +6 -0
  99. data/examples/i18n/ko/features/addition.feature +17 -0
  100. data/examples/i18n/ko/features/division.feature +11 -0
  101. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +24 -0
  102. data/examples/i18n/ko/lib/calculator.rb +14 -0
  103. data/examples/i18n/lt/Rakefile +6 -0
  104. data/examples/i18n/lt/features/addition.feature +17 -0
  105. data/examples/i18n/lt/features/division.feature +10 -0
  106. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +24 -0
  107. data/examples/i18n/lt/lib/calculator.rb +14 -0
  108. data/examples/i18n/lv/Rakefile +6 -0
  109. data/examples/i18n/lv/features/addition.feature +17 -0
  110. data/examples/i18n/lv/features/division.feature +10 -0
  111. data/examples/i18n/lv/features/step_definitons/calculator_steps.rb +24 -0
  112. data/examples/i18n/lv/lib/calculator.rb +14 -0
  113. data/examples/i18n/no/Rakefile +6 -0
  114. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +17 -0
  115. data/examples/i18n/no/features/summering.feature +19 -0
  116. data/examples/i18n/no/features/support/env.rb +6 -0
  117. data/examples/i18n/no/lib/kalkulator.rb +11 -0
  118. data/examples/i18n/pl/Rakefile +6 -0
  119. data/examples/i18n/pl/features/addition.feature +17 -0
  120. data/examples/i18n/pl/features/division.feature +10 -0
  121. data/examples/i18n/pl/features/step_definitons/calculator_steps.rb +24 -0
  122. data/examples/i18n/pl/features/support/env.rb +6 -0
  123. data/examples/i18n/pl/lib/calculator.rb +14 -0
  124. data/examples/i18n/pt/Rakefile +6 -0
  125. data/examples/i18n/pt/features/adicao.feature +11 -0
  126. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +20 -0
  127. data/examples/i18n/pt/features/support/env.rb +6 -0
  128. data/examples/i18n/pt/lib/calculadora.rb +10 -0
  129. data/examples/i18n/ro/Rakefile +6 -0
  130. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +24 -0
  131. data/examples/i18n/ro/features/suma.feature +11 -0
  132. data/examples/i18n/ro/lib/calculator.rb +11 -0
  133. data/examples/i18n/ru/Rakefile +6 -0
  134. data/examples/i18n/ru/features/addition.feature +11 -0
  135. data/examples/i18n/ru/features/consecutive_calculations.feature +17 -0
  136. data/examples/i18n/ru/features/division.feature +16 -0
  137. data/examples/i18n/ru/features/step_definitons/calculator_steps.rb +19 -0
  138. data/examples/i18n/ru/features/support/env.rb +6 -0
  139. data/examples/i18n/ru/features/support/world.rb +8 -0
  140. data/examples/i18n/ru/lib/calculator.rb +24 -0
  141. data/examples/i18n/se/Rakefile +6 -0
  142. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +24 -0
  143. data/examples/i18n/se/features/summering.feature +18 -0
  144. data/examples/i18n/se/lib/kalkulator.rb +11 -0
  145. data/examples/i18n/sk/Rakefile +6 -0
  146. data/examples/i18n/sk/features/addition.feature +17 -0
  147. data/examples/i18n/sk/features/division.feature +10 -0
  148. data/examples/i18n/sk/features/step_definitons/calculator_steps.rb +24 -0
  149. data/examples/i18n/sk/lib/calculator.rb +14 -0
  150. data/examples/i18n/uz/Rakefile +6 -0
  151. data/examples/i18n/uz/features/addition.feature +10 -0
  152. data/examples/i18n/uz/features/consecutive_calculations.feature +17 -0
  153. data/examples/i18n/uz/features/division.feature +17 -0
  154. data/examples/i18n/uz/features/step_definitons/calculator_steps.rb +19 -0
  155. data/examples/i18n/uz/features/support/env.rb +6 -0
  156. data/examples/i18n/uz/features/support/world.rb +8 -0
  157. data/examples/i18n/uz/lib/calculator.rb +24 -0
  158. data/examples/i18n/zh-CN/Rakefile +6 -0
  159. data/examples/i18n/zh-CN/features/addition.feature +18 -0
  160. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +26 -0
  161. data/examples/i18n/zh-CN/lib/calculator.rb +10 -0
  162. data/examples/i18n/zh-TW/Rakefile +6 -0
  163. data/examples/i18n/zh-TW/features/addition.feature +17 -0
  164. data/examples/i18n/zh-TW/features/division.feature +11 -0
  165. data/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +24 -0
  166. data/examples/i18n/zh-TW/lib/calculator.rb +14 -0
  167. data/examples/java/README.textile +18 -0
  168. data/examples/java/build.xml +33 -0
  169. data/examples/java/features/hello.feature +11 -0
  170. data/examples/java/features/step_definitons/hello_steps.rb +23 -0
  171. data/examples/java/features/step_definitons/tree_steps.rb +14 -0
  172. data/examples/java/features/tree.feature +9 -0
  173. data/examples/java/src/cucumber/demo/Hello.java +16 -0
  174. data/examples/junit/features/one_passing_one_failing.feature +8 -0
  175. data/examples/junit/features/pending.feature +5 -0
  176. data/examples/junit/features/step_definitions/steps.rb +11 -0
  177. data/examples/pure_java/README.textile +5 -0
  178. data/examples/python/features/fibonacci.feature +19 -0
  179. data/examples/python/features/step_definitions/fib_steps.py +3 -0
  180. data/examples/python/features/step_definitions/fib_steps.rb +7 -0
  181. data/examples/python/features/support/env.rb +21 -0
  182. data/examples/python/lib/fib.py +7 -0
  183. data/examples/selenium/Rakefile +6 -0
  184. data/examples/selenium/features/search.feature +9 -0
  185. data/examples/selenium/features/step_definitons/search_steps.rb +13 -0
  186. data/examples/selenium/features/support/env.rb +19 -0
  187. data/examples/selenium_webrat/Rakefile +6 -0
  188. data/examples/selenium_webrat/config.ru +0 -0
  189. data/examples/selenium_webrat/features/search.feature +9 -0
  190. data/examples/selenium_webrat/features/step_definitons/search_steps.rb +13 -0
  191. data/examples/selenium_webrat/features/support/env.rb +45 -0
  192. data/examples/self_test/README.textile +6 -0
  193. data/examples/self_test/Rakefile +6 -0
  194. data/examples/self_test/features/background/background_tagged_before_on_outline.feature +12 -0
  195. data/examples/self_test/features/background/background_with_name.feature +7 -0
  196. data/examples/self_test/features/background/failing_background.feature +12 -0
  197. data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  198. data/examples/self_test/features/background/multiline_args_background.feature +32 -0
  199. data/examples/self_test/features/background/passing_background.feature +10 -0
  200. data/examples/self_test/features/background/pending_background.feature +10 -0
  201. data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  202. data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  203. data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  204. data/examples/self_test/features/failing_expectation.feature +4 -0
  205. data/examples/self_test/features/lots_of_undefined.feature +8 -0
  206. data/examples/self_test/features/multiline_name.feature +27 -0
  207. data/examples/self_test/features/outline_sample.feature +15 -0
  208. data/examples/self_test/features/sample.feature +21 -0
  209. data/examples/self_test/features/search_sample.feature +32 -0
  210. data/examples/self_test/features/step_definitions/sample_steps.rb +93 -0
  211. data/examples/self_test/features/support/env.rb +24 -0
  212. data/examples/self_test/features/tags_sample.feature +17 -0
  213. data/examples/self_test/features/tons_of_cukes.feature +52 -0
  214. data/examples/self_test/features/transform_sample.feature +10 -0
  215. data/examples/self_test/features/undefined_multiline_args.feature +12 -0
  216. data/examples/self_test/list-of-features.txt +1 -0
  217. data/examples/sinatra/README.textile +13 -0
  218. data/examples/sinatra/Rakefile +6 -0
  219. data/examples/sinatra/app.rb +14 -0
  220. data/examples/sinatra/features/add.feature +11 -0
  221. data/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
  222. data/examples/sinatra/features/support/env.rb +32 -0
  223. data/examples/sinatra/views/add.erb +5 -0
  224. data/examples/sinatra/views/layout.erb +8 -0
  225. data/examples/steps_library/features/step_definitions/steps_lib1.rb +8 -0
  226. data/examples/steps_library/features/step_definitions/steps_lib2.rb +8 -0
  227. data/examples/test_unit/Rakefile +6 -0
  228. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +23 -0
  229. data/examples/test_unit/features/test_unit.feature +9 -0
  230. data/examples/tickets/Rakefile +16 -0
  231. data/examples/tickets/features/172.feature +28 -0
  232. data/examples/tickets/features/177/1.feature +29 -0
  233. data/examples/tickets/features/177/2.feature +21 -0
  234. data/examples/tickets/features/177/3.feature +18 -0
  235. data/examples/tickets/features/180.feature +7 -0
  236. data/examples/tickets/features/229/tagged_hooks.feature +8 -0
  237. data/examples/tickets/features/229/tagged_hooks.rb +14 -0
  238. data/examples/tickets/features/236.feature +13 -0
  239. data/examples/tickets/features/241.feature +13 -0
  240. data/examples/tickets/features/246.feature +4 -0
  241. data/examples/tickets/features/248.feature +11 -0
  242. data/examples/tickets/features/270/back.feature +14 -0
  243. data/examples/tickets/features/270/back.steps.rb +14 -0
  244. data/examples/tickets/features/272/hooks.feature +26 -0
  245. data/examples/tickets/features/272/hooks_steps.rb +53 -0
  246. data/examples/tickets/features/279/py_string_indent.feature +25 -0
  247. data/examples/tickets/features/279/py_string_indent.steps.rb +12 -0
  248. data/examples/tickets/features/279/wrong.feature_ +11 -0
  249. data/examples/tickets/features/301/filter_background_tagged_hooks.feature +6 -0
  250. data/examples/tickets/features/301/filter_background_tagged_hooks_steps.rb +12 -0
  251. data/examples/tickets/features/306/only_background.feature +4 -0
  252. data/examples/tickets/features/lib/eatting_machine.rb +18 -0
  253. data/examples/tickets/features/lib/pantry.rb +20 -0
  254. data/examples/tickets/features/scenario_outline.feature +95 -0
  255. data/examples/tickets/features/step_definitons/246_steps.rb +3 -0
  256. data/examples/tickets/features/step_definitons/248_steps.rb +15 -0
  257. data/examples/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
  258. data/examples/tickets/features/step_definitons/tickets_steps.rb +81 -0
  259. data/examples/tickets/features/table_diffing.feature +13 -0
  260. data/examples/tickets/features/tickets.feature +28 -0
  261. data/examples/watir/README.textile +16 -0
  262. data/examples/watir/Rakefile +6 -0
  263. data/examples/watir/features/search.feature +12 -0
  264. data/examples/watir/features/step_definitons/search_steps.rb +26 -0
  265. data/examples/watir/features/support/env.rb +32 -0
  266. data/features/background.feature +311 -0
  267. data/features/bug_371.feature +32 -0
  268. data/features/cucumber_cli.feature +667 -0
  269. data/features/cucumber_cli_diff_disabled.feature +54 -0
  270. data/features/cucumber_cli_outlines.feature +109 -0
  271. data/features/custom_formatter.feature +11 -0
  272. data/features/drb_server_integration.feature +173 -0
  273. data/features/exception_in_after_block.feature +102 -0
  274. data/features/exception_in_after_step_block.feature +104 -0
  275. data/features/exception_in_before_block.feature +47 -0
  276. data/features/exclude_files.feature +20 -0
  277. data/features/expand.feature +49 -0
  278. data/features/html_formatter.feature +7 -0
  279. data/features/html_formatter/a.html +183 -0
  280. data/features/junit_formatter.feature +89 -0
  281. data/features/language_from_header.feature +30 -0
  282. data/features/multiline_names.feature +43 -0
  283. data/features/post_configuration_hook.feature +37 -0
  284. data/features/profiles.feature +112 -0
  285. data/features/rake_task.feature +178 -0
  286. data/features/report_called_undefined_steps.feature +35 -0
  287. data/features/snippet.feature +22 -0
  288. data/features/step_definitions/cucumber_steps.rb +154 -0
  289. data/features/step_definitions/extra_steps.rb +2 -0
  290. data/features/steps_formatter.feature +25 -0
  291. data/features/support/env.rb +139 -0
  292. data/features/table_diffing.feature +45 -0
  293. data/features/transform.feature +24 -0
  294. data/features/unicode_table.feature +35 -0
  295. data/features/usage.feature +132 -0
  296. data/features/work_in_progress.feature +158 -0
  297. data/gem_tasks/contributors.rake +12 -0
  298. data/gem_tasks/deployment.rake +11 -0
  299. data/gem_tasks/environment.rake +7 -0
  300. data/gem_tasks/features.rake +11 -0
  301. data/gem_tasks/fix_cr_lf.rake +10 -0
  302. data/gem_tasks/flog.rake +4 -0
  303. data/gem_tasks/gemspec.rake +10 -0
  304. data/gem_tasks/rspec.rake +45 -0
  305. data/gem_tasks/sass.rake +4 -0
  306. data/gem_tasks/sdoc.rake +7 -0
  307. data/lib/README.rdoc +12 -0
  308. data/lib/autotest/cucumber.rb +6 -0
  309. data/lib/autotest/cucumber_mixin.rb +125 -0
  310. data/lib/autotest/cucumber_rails.rb +6 -0
  311. data/lib/autotest/cucumber_rails_rspec.rb +6 -0
  312. data/lib/autotest/cucumber_rspec.rb +6 -0
  313. data/lib/autotest/discover.rb +9 -0
  314. data/lib/cucumber.rb +10 -0
  315. data/lib/cucumber/ast.rb +29 -0
  316. data/lib/cucumber/ast/background.rb +63 -0
  317. data/lib/cucumber/ast/comment.rb +31 -0
  318. data/lib/cucumber/ast/examples.rb +32 -0
  319. data/lib/cucumber/ast/feature.rb +81 -0
  320. data/lib/cucumber/ast/feature_element.rb +61 -0
  321. data/lib/cucumber/ast/features.rb +40 -0
  322. data/lib/cucumber/ast/outline_table.rb +146 -0
  323. data/lib/cucumber/ast/py_string.rb +57 -0
  324. data/lib/cucumber/ast/scenario.rb +108 -0
  325. data/lib/cucumber/ast/scenario_outline.rb +96 -0
  326. data/lib/cucumber/ast/step.rb +116 -0
  327. data/lib/cucumber/ast/step_collection.rb +76 -0
  328. data/lib/cucumber/ast/step_invocation.rb +166 -0
  329. data/lib/cucumber/ast/table.rb +626 -0
  330. data/lib/cucumber/ast/tags.rb +44 -0
  331. data/lib/cucumber/ast/visitor.rb +115 -0
  332. data/lib/cucumber/broadcaster.rb +13 -0
  333. data/lib/cucumber/cli/configuration.rb +190 -0
  334. data/lib/cucumber/cli/drb_client.rb +26 -0
  335. data/lib/cucumber/cli/language_help_formatter.rb +61 -0
  336. data/lib/cucumber/cli/main.rb +116 -0
  337. data/lib/cucumber/cli/options.rb +394 -0
  338. data/lib/cucumber/cli/profile_loader.rb +70 -0
  339. data/lib/cucumber/constantize.rb +28 -0
  340. data/lib/cucumber/core_ext/instance_exec.rb +93 -0
  341. data/lib/cucumber/core_ext/proc.rb +29 -0
  342. data/lib/cucumber/core_ext/string.rb +48 -0
  343. data/lib/cucumber/feature_file.rb +54 -0
  344. data/lib/cucumber/filter.rb +52 -0
  345. data/lib/cucumber/formatter/ansicolor.rb +143 -0
  346. data/lib/cucumber/formatter/color_io.rb +23 -0
  347. data/lib/cucumber/formatter/console.rb +185 -0
  348. data/lib/cucumber/formatter/cucumber.css +132 -0
  349. data/lib/cucumber/formatter/cucumber.sass +139 -0
  350. data/lib/cucumber/formatter/duration.rb +13 -0
  351. data/lib/cucumber/formatter/html.rb +261 -0
  352. data/lib/cucumber/formatter/junit.rb +121 -0
  353. data/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
  354. data/lib/cucumber/formatter/pdf.rb +217 -0
  355. data/lib/cucumber/formatter/pretty.rb +222 -0
  356. data/lib/cucumber/formatter/profile.rb +78 -0
  357. data/lib/cucumber/formatter/progress.rb +67 -0
  358. data/lib/cucumber/formatter/rerun.rb +46 -0
  359. data/lib/cucumber/formatter/steps.rb +50 -0
  360. data/lib/cucumber/formatter/tag_cloud.rb +29 -0
  361. data/lib/cucumber/formatter/unicode.rb +35 -0
  362. data/lib/cucumber/formatter/usage.rb +86 -0
  363. data/lib/cucumber/formatters/unicode.rb +7 -0
  364. data/lib/cucumber/language_support.rb +30 -0
  365. data/lib/cucumber/language_support/language_methods.rb +75 -0
  366. data/lib/cucumber/language_support/step_definition_methods.rb +46 -0
  367. data/lib/cucumber/languages.yml +561 -0
  368. data/lib/cucumber/parser.rb +6 -0
  369. data/lib/cucumber/parser/feature.rb +1838 -0
  370. data/lib/cucumber/parser/feature.tt +351 -0
  371. data/lib/cucumber/parser/i18n.tt +42 -0
  372. data/lib/cucumber/parser/natural_language.rb +72 -0
  373. data/lib/cucumber/parser/table.rb +417 -0
  374. data/lib/cucumber/parser/table.tt +71 -0
  375. data/lib/cucumber/parser/treetop_ext.rb +53 -0
  376. data/lib/cucumber/platform.rb +27 -0
  377. data/lib/cucumber/py_support/py_dsl.py +8 -0
  378. data/lib/cucumber/py_support/py_language.py +2 -0
  379. data/lib/cucumber/py_support/py_language.rb +68 -0
  380. data/lib/cucumber/rails/rspec.rb +10 -0
  381. data/lib/cucumber/rails/world.rb +100 -0
  382. data/lib/cucumber/rake/task.rb +241 -0
  383. data/lib/cucumber/rb_support/rb_dsl.rb +100 -0
  384. data/lib/cucumber/rb_support/rb_hook.rb +18 -0
  385. data/lib/cucumber/rb_support/rb_language.rb +153 -0
  386. data/lib/cucumber/rb_support/rb_step_definition.rb +60 -0
  387. data/lib/cucumber/rb_support/rb_world.rb +93 -0
  388. data/lib/cucumber/rspec_neuter.rb +23 -0
  389. data/lib/cucumber/step_match.rb +61 -0
  390. data/lib/cucumber/step_mother.rb +307 -0
  391. data/lib/cucumber/version.rb +10 -0
  392. data/lib/cucumber/webrat/element_locator.rb +87 -0
  393. data/lib/cucumber/webrat/table_locator.rb +1 -0
  394. data/rails_generators/cucumber/USAGE +11 -0
  395. data/rails_generators/cucumber/cucumber_generator.rb +70 -0
  396. data/rails_generators/cucumber/templates/cucumber +9 -0
  397. data/rails_generators/cucumber/templates/cucumber.rake +36 -0
  398. data/rails_generators/cucumber/templates/cucumber_environment.rb +26 -0
  399. data/rails_generators/cucumber/templates/env.rb +27 -0
  400. data/rails_generators/cucumber/templates/paths.rb +27 -0
  401. data/rails_generators/cucumber/templates/spork_env.rb +35 -0
  402. data/rails_generators/cucumber/templates/webrat_steps.rb +236 -0
  403. data/rails_generators/feature/USAGE +12 -0
  404. data/rails_generators/feature/feature_generator.rb +40 -0
  405. data/rails_generators/feature/templates/feature.erb +31 -0
  406. data/rails_generators/feature/templates/steps.erb +14 -0
  407. data/spec/cucumber/ast/background_spec.rb +60 -0
  408. data/spec/cucumber/ast/feature_element_spec.rb +40 -0
  409. data/spec/cucumber/ast/feature_factory.rb +62 -0
  410. data/spec/cucumber/ast/feature_spec.rb +44 -0
  411. data/spec/cucumber/ast/py_string_spec.rb +51 -0
  412. data/spec/cucumber/ast/scenario_outline_spec.rb +72 -0
  413. data/spec/cucumber/ast/scenario_spec.rb +43 -0
  414. data/spec/cucumber/ast/step_collection_spec.rb +17 -0
  415. data/spec/cucumber/ast/step_spec.rb +66 -0
  416. data/spec/cucumber/ast/table_spec.rb +394 -0
  417. data/spec/cucumber/broadcaster_spec.rb +15 -0
  418. data/spec/cucumber/cli/configuration_spec.rb +396 -0
  419. data/spec/cucumber/cli/drb_client_spec.rb +77 -0
  420. data/spec/cucumber/cli/main_spec.rb +172 -0
  421. data/spec/cucumber/cli/options_spec.rb +331 -0
  422. data/spec/cucumber/cli/profile_loader_spec.rb +10 -0
  423. data/spec/cucumber/core_ext/proc_spec.rb +68 -0
  424. data/spec/cucumber/core_ext/string_spec.rb +43 -0
  425. data/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
  426. data/spec/cucumber/formatter/color_io_spec.rb +27 -0
  427. data/spec/cucumber/formatter/duration_spec.rb +22 -0
  428. data/spec/cucumber/formatter/html_spec.rb +18 -0
  429. data/spec/cucumber/formatter/progress_spec.rb +33 -0
  430. data/spec/cucumber/parser/feature_parser_spec.rb +396 -0
  431. data/spec/cucumber/parser/table_parser_spec.rb +52 -0
  432. data/spec/cucumber/rails/stubs/mini_rails.rb +18 -0
  433. data/spec/cucumber/rails/stubs/test_help.rb +1 -0
  434. data/spec/cucumber/rails/world_spec.rb +16 -0
  435. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +123 -0
  436. data/spec/cucumber/sell_cucumbers.feature +19 -0
  437. data/spec/cucumber/step_mother_spec.rb +282 -0
  438. data/spec/cucumber/treetop_parser/empty_feature.feature +4 -0
  439. data/spec/cucumber/treetop_parser/empty_scenario.feature +9 -0
  440. data/spec/cucumber/treetop_parser/empty_scenario_outline.feature +3 -0
  441. data/spec/cucumber/treetop_parser/fit_scenario.feature +8 -0
  442. data/spec/cucumber/treetop_parser/given_scenario.feature +9 -0
  443. data/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +7 -0
  444. data/spec/cucumber/treetop_parser/multiline_steps.feature +17 -0
  445. data/spec/cucumber/treetop_parser/multiple_tables.feature +27 -0
  446. data/spec/cucumber/treetop_parser/scenario_outline.feature +16 -0
  447. data/spec/cucumber/treetop_parser/spaces.feature +12 -0
  448. data/spec/cucumber/treetop_parser/test_dos.feature +25 -0
  449. data/spec/cucumber/treetop_parser/with_comments.feature +23 -0
  450. data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  451. data/spec/cucumber/world/pending_spec.rb +46 -0
  452. data/spec/spec.opts +4 -0
  453. data/spec/spec_helper.rb +18 -0
  454. metadata +561 -0
@@ -0,0 +1,311 @@
1
+ Feature: backgrounds
2
+ In order to provide a context to my scenarios within a feature
3
+ As a feature editor
4
+ I want to write a background section in my features.
5
+
6
+ Scenario: run a specific scenario with a background
7
+ When I run cucumber -q features/background/passing_background.feature:9 --require features
8
+ Then it should pass with
9
+ """
10
+ Feature: Passing background sample
11
+
12
+ Background:
13
+ Given '10' cukes
14
+
15
+ Scenario: another passing background
16
+ Then I should have '10' cukes
17
+
18
+ 1 scenario (1 passed)
19
+ 2 steps (2 passed)
20
+
21
+ """
22
+
23
+ Scenario: run a feature with a background that passes
24
+ When I run cucumber -q features/background/passing_background.feature --require features
25
+ Then it should pass with
26
+ """
27
+ Feature: Passing background sample
28
+
29
+ Background:
30
+ Given '10' cukes
31
+
32
+ Scenario: passing background
33
+ Then I should have '10' cukes
34
+
35
+ Scenario: another passing background
36
+ Then I should have '10' cukes
37
+
38
+ 2 scenarios (2 passed)
39
+ 4 steps (4 passed)
40
+
41
+ """
42
+
43
+ Scenario: run a feature with scenario outlines that has a background that passes
44
+ When I run cucumber -q features/background/scenario_outline_passing_background.feature --require features
45
+ Then it should pass with
46
+ """
47
+ Feature: Passing background with scenario outlines sample
48
+
49
+ Background:
50
+ Given '10' cukes
51
+
52
+ Scenario Outline: passing background
53
+ Then I should have '<count>' cukes
54
+
55
+ Examples:
56
+ | count |
57
+ | 10 |
58
+
59
+ Scenario Outline: another passing background
60
+ Then I should have '<count>' cukes
61
+
62
+ Examples:
63
+ | count |
64
+ | 10 |
65
+
66
+ 2 scenarios (2 passed)
67
+ 4 steps (4 passed)
68
+
69
+ """
70
+
71
+ Scenario: run a feature with scenario outlines that has a background that passes
72
+ When I run cucumber -q features/background/background_tagged_before_on_outline.feature --require features
73
+ Then it should pass with
74
+ """
75
+ @background_tagged_before_on_outline
76
+ Feature: Background tagged Before on Outline
77
+
78
+ Background:
79
+ Given passing without a table
80
+
81
+ Scenario Outline: passing background
82
+ Then I should have '<count>' cukes
83
+
84
+ Examples:
85
+ | count |
86
+ | 888 |
87
+
88
+ 1 scenario (1 passed)
89
+ 2 steps (2 passed)
90
+
91
+ """
92
+
93
+ @mri186
94
+ Scenario: run a feature with a background that fails
95
+ When I run cucumber -q features/background/failing_background.feature --require features
96
+ Then it should fail with
97
+ """
98
+ @after_file
99
+ Feature: Failing background sample
100
+
101
+ Background:
102
+ Given failing without a table
103
+ FAIL (RuntimeError)
104
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
105
+ ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
106
+ features/background/failing_background.feature:5:in `Given failing without a table'
107
+ And '10' cukes
108
+
109
+ Scenario: failing background
110
+ Then I should have '10' cukes
111
+
112
+ Scenario: another failing background
113
+ Then I should have '10' cukes
114
+
115
+ Failing Scenarios:
116
+ cucumber features/background/failing_background.feature:8 # Scenario: failing background
117
+
118
+ 2 scenarios (1 failed, 1 skipped)
119
+ 6 steps (1 failed, 5 skipped)
120
+
121
+ """
122
+ And "examples/self_test/tmp/after.txt" should exist
123
+
124
+ @mri186
125
+ Scenario: run a feature with scenario outlines that has a background that fails
126
+ When I run cucumber -q features/background/scenario_outline_failing_background.feature --require features
127
+ Then it should fail with
128
+ """
129
+ Feature: Failing background with scenario outlines sample
130
+
131
+ Background:
132
+ Given failing without a table
133
+ FAIL (RuntimeError)
134
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
135
+ ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
136
+ features/background/scenario_outline_failing_background.feature:4:in `Given failing without a table'
137
+
138
+ Scenario Outline: failing background
139
+ Then I should have '<count>' cukes
140
+
141
+ Examples:
142
+ | count |
143
+ | 10 |
144
+
145
+ Scenario Outline: another failing background
146
+ Then I should have '<count>' cukes
147
+
148
+ Examples:
149
+ | count |
150
+ | 10 |
151
+
152
+ 2 scenarios (1 failed, 1 skipped)
153
+ 4 steps (1 failed, 3 skipped)
154
+
155
+ """
156
+
157
+ Scenario: run a feature with a background that is pending
158
+ When I run cucumber -q features/background/pending_background.feature --require features
159
+ Then it should pass with
160
+ """
161
+ Feature: Pending background sample
162
+
163
+ Background:
164
+ Given pending
165
+
166
+ Scenario: pending background
167
+ Then I should have '10' cukes
168
+
169
+ Scenario: another pending background
170
+ Then I should have '10' cukes
171
+
172
+ 2 scenarios (2 undefined)
173
+ 4 steps (2 skipped, 2 undefined)
174
+
175
+ """
176
+
177
+ @mri186
178
+ Scenario: background passes with first scenario but fails with second
179
+ When I run cucumber -q features/background/failing_background_after_success.feature --require features
180
+ Then it should fail with
181
+ """
182
+ Feature: Failing background after previously successful background sample
183
+
184
+ Background:
185
+ Given passing without a table
186
+ And '10' global cukes
187
+
188
+ Scenario: passing background
189
+ Then I should have '10' global cukes
190
+
191
+ Scenario: failing background
192
+ And '10' global cukes
193
+ FAIL (RuntimeError)
194
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
195
+ ./features/step_definitions/sample_steps.rb:37:in `/^'(.+)' global cukes$/'
196
+ features/background/failing_background_after_success.feature:5:in `And '10' global cukes'
197
+ Then I should have '10' global cukes
198
+
199
+ Failing Scenarios:
200
+ cucumber features/background/failing_background_after_success.feature:10 # Scenario: failing background
201
+
202
+ 2 scenarios (1 failed, 1 passed)
203
+ 6 steps (1 failed, 1 skipped, 4 passed)
204
+
205
+ """
206
+
207
+ Scenario: background with multline args
208
+ When I run cucumber -q features/background/multiline_args_background.feature --require features
209
+ Then it should pass with
210
+ """
211
+ Feature: Passing background with multiline args
212
+
213
+ Background:
214
+ Given table
215
+ | a | b |
216
+ | c | d |
217
+ And multiline string
218
+ \"\"\"
219
+ I'm a cucumber and I'm okay.
220
+ I sleep all night and I test all day
221
+ \"\"\"
222
+
223
+ Scenario: passing background
224
+ Then the table should be
225
+ | a | b |
226
+ | c | d |
227
+ Then the multiline string should be
228
+ \"\"\"
229
+ I'm a cucumber and I'm okay.
230
+ I sleep all night and I test all day
231
+ \"\"\"
232
+
233
+ Scenario: another passing background
234
+ Then the table should be
235
+ | a | b |
236
+ | c | d |
237
+ Then the multiline string should be
238
+ \"\"\"
239
+ I'm a cucumber and I'm okay.
240
+ I sleep all night and I test all day
241
+ \"\"\"
242
+
243
+ 2 scenarios (2 passed)
244
+ 8 steps (8 passed)
245
+
246
+ """
247
+
248
+ Scenario: background with name
249
+ When I run cucumber -q features/background/background_with_name.feature --require features
250
+ Then it should pass with
251
+ """
252
+ Feature: background with name
253
+
254
+ Background: I'm a background and I'm ok
255
+ Given '10' cukes
256
+
257
+ Scenario: example
258
+ Then I should have '10' cukes
259
+
260
+ 1 scenario (1 passed)
261
+ 2 steps (2 passed)
262
+
263
+ """
264
+
265
+ Scenario: https://rspec.lighthouseapp.com/projects/16211/tickets/329
266
+ Given a standard Cucumber project directory structure
267
+ And a file named "features/only_background_and_hooks.feature" with:
268
+ """
269
+ Feature: woo yeah
270
+
271
+ Background:
272
+ Given whatever
273
+
274
+ """
275
+ And a file named "features/only_background_and_hooks_steps.rb" with:
276
+ """
277
+ require 'spec/expectations'
278
+
279
+ Before do
280
+ $before = true
281
+ end
282
+
283
+ After do
284
+ $after = true
285
+ end
286
+
287
+ Given /^whatever$/ do
288
+ $before.should == true
289
+ $step = true
290
+ end
291
+
292
+ at_exit do
293
+ $before.should == true
294
+ $step.should == true
295
+ $after.should == true
296
+ end
297
+ """
298
+ When I run cucumber features/only_background_and_hooks.feature
299
+ Then it should pass
300
+ And the output should be
301
+ """
302
+ Feature: woo yeah
303
+
304
+ Background: # features/only_background_and_hooks.feature:3
305
+ Given whatever # features/only_background_and_hooks_steps.rb:11
306
+
307
+ 0 scenarios
308
+ 1 step (1 passed)
309
+
310
+ """
311
+ And STDERR should be empty
@@ -0,0 +1,32 @@
1
+ Feature: https://rspec.lighthouseapp.com/projects/16211/tickets/371
2
+ Scenario: Before runs once
3
+ Given a standard Cucumber project directory structure
4
+ And a file named "features/f.feature" with:
5
+ """
6
+ Feature: F
7
+ Scenario: S
8
+ Given G
9
+ """
10
+ And a file named "features/step_definitions/steps.rb" with:
11
+ """
12
+ Before do
13
+ puts "B"
14
+ end
15
+ Given /G/ do
16
+ puts "G"
17
+ end
18
+ """
19
+ When I run cucumber -q --format pretty --format progress --out progress.txt features/f.feature
20
+ Then it should pass with
21
+ """
22
+ Feature: F
23
+
24
+ Scenario: S
25
+ B
26
+ G
27
+ Given G
28
+
29
+ 1 scenario (1 passed)
30
+ 1 step (1 passed)
31
+
32
+ """
@@ -0,0 +1,667 @@
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
+ @mri186
62
+ Scenario: Specify 2 line numbers where one is a tag
63
+ When I run cucumber -q features/sample.feature:5:16
64
+ Then it should fail with
65
+ """
66
+ # Feature comment
67
+ @one
68
+ Feature: Sample
69
+
70
+ @two @three
71
+ Scenario: Missing
72
+ Given missing
73
+
74
+ @four
75
+ Scenario: Failing
76
+ Given failing
77
+ \"\"\"
78
+ hello
79
+ \"\"\"
80
+ FAIL (RuntimeError)
81
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
82
+ ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
83
+ features/sample.feature:18:in `Given failing'
84
+
85
+ Failing Scenarios:
86
+ cucumber features/sample.feature:17 # Scenario: Failing
87
+
88
+ 2 scenarios (1 failed, 1 undefined)
89
+ 2 steps (1 failed, 1 undefined)
90
+
91
+ """
92
+
93
+ Scenario: Require missing step definition from elsewhere
94
+ When I run cucumber -q -r ../../features/step_definitions/extra_steps.rb features/sample.feature:5
95
+ Then it should pass with
96
+ """
97
+ # Feature comment
98
+ @one
99
+ Feature: Sample
100
+
101
+ @two @three
102
+ Scenario: Missing
103
+ Given missing
104
+
105
+ 1 scenario (1 passed)
106
+ 1 step (1 passed)
107
+
108
+ """
109
+
110
+ Scenario: Specify the line number of a row
111
+ When I run cucumber -q features/sample.feature:12
112
+ Then it should pass with
113
+ """
114
+ # Feature comment
115
+ @one
116
+ Feature: Sample
117
+
118
+ # Scenario comment
119
+ @three
120
+ Scenario: Passing
121
+ Given passing
122
+ | a | b |
123
+ | c | d |
124
+
125
+ 1 scenario (1 passed)
126
+ 1 step (1 passed)
127
+
128
+ """
129
+
130
+ Scenario: Use @-notation to specify a file containing feature file list
131
+ When I run cucumber -q @list-of-features.txt
132
+ Then it should pass with
133
+ """
134
+ # Feature comment
135
+ @one
136
+ Feature: Sample
137
+
138
+ # Scenario comment
139
+ @three
140
+ Scenario: Passing
141
+ Given passing
142
+ | a | b |
143
+ | c | d |
144
+
145
+ 1 scenario (1 passed)
146
+ 1 step (1 passed)
147
+
148
+ """
149
+
150
+ @mri186
151
+ Scenario: Run all with progress formatter
152
+ When I run cucumber -q --format progress features/sample.feature
153
+ Then it should fail with
154
+ """
155
+ U.F
156
+
157
+ (::) failed steps (::)
158
+
159
+ FAIL (RuntimeError)
160
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
161
+ ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
162
+ features/sample.feature:18:in `Given failing'
163
+
164
+ Failing Scenarios:
165
+ cucumber features/sample.feature:17 # Scenario: Failing
166
+
167
+ 3 scenarios (1 failed, 1 undefined, 1 passed)
168
+ 3 steps (1 failed, 1 undefined, 1 passed)
169
+
170
+ """
171
+
172
+ Scenario: Run Norwegian
173
+ Given I am in i18n/no
174
+ When I run cucumber -q --language no features
175
+ Then STDERR should be empty
176
+ Then it should pass with
177
+ """
178
+ # language: no
179
+ Egenskap: Summering
180
+ For å slippe å gjøre dumme feil
181
+ Som en regnskapsfører
182
+ Vil jeg kunne legge sammen
183
+
184
+ Scenario: to tall
185
+ Gitt at jeg har tastet inn 5
186
+ Og at jeg har tastet inn 7
187
+ Når jeg summerer
188
+ Så skal resultatet være 12
189
+
190
+ @iterasjon3
191
+ Scenario: tre tall
192
+ Gitt at jeg har tastet inn 5
193
+ Og at jeg har tastet inn 7
194
+ Og at jeg har tastet inn 1
195
+ Når jeg summerer
196
+ Så skal resultatet være 13
197
+
198
+ 2 scenarios (2 passed)
199
+ 9 steps (9 passed)
200
+
201
+ """
202
+
203
+ Scenario: --dry-run
204
+ When I run cucumber --dry-run --no-snippets features/*.feature --tags ~@lots
205
+ Then it should pass with
206
+ """
207
+ Feature: Calling undefined step
208
+
209
+ Scenario: Call directly
210
+ Given a step definition that calls an undefined step
211
+
212
+ Scenario: Call via another
213
+ Given call step "a step definition that calls an undefined step"
214
+
215
+ Feature: Failing expectation
216
+
217
+ Scenario: Failing expectation
218
+ Given failing expectation
219
+
220
+ Feature: Lots of undefined
221
+
222
+ Scenario: Implement me
223
+ Given it snows in Sahara
224
+ Given it's 40 degrees in Norway
225
+ And it's 40 degrees in Norway
226
+ When I stop procrastinating
227
+ And there is world peace
228
+
229
+ Feature: multiline
230
+
231
+ Background: I'm a multiline name
232
+ which goes on and on and on for three lines
233
+ yawn
234
+ Given passing without a table
235
+
236
+ Scenario: I'm a multiline name
237
+ which goes on and on and on for three lines
238
+ yawn
239
+ Given passing without a table
240
+
241
+ Scenario Outline: I'm a multiline name
242
+ which goes on and on and on for three lines
243
+ yawn
244
+ Given <state> without a table
245
+
246
+ Examples:
247
+ | state |
248
+ | passing |
249
+
250
+ Scenario Outline: name
251
+ Given <state> without a table
252
+
253
+ Examples: I'm a multiline name
254
+ which goes on and on and on for three lines
255
+ yawn
256
+ | state |
257
+ | passing |
258
+
259
+ Feature: Outline Sample
260
+
261
+ Scenario: I have no steps
262
+
263
+ Scenario Outline: Test state
264
+ Given <state> without a table
265
+ Given <other_state> without a table
266
+
267
+ Examples: Rainbow colours
268
+ | state | other_state |
269
+ | missing | passing |
270
+ | passing | passing |
271
+ | failing | passing |
272
+
273
+ Examples: Only passing
274
+ | state | other_state |
275
+ | passing | passing |
276
+
277
+ # Feature comment
278
+ @one
279
+ Feature: Sample
280
+
281
+ @two @three
282
+ Scenario: Missing
283
+ Given missing
284
+
285
+ # Scenario comment
286
+ @three
287
+ Scenario: Passing
288
+ Given passing
289
+ | a | b |
290
+ | c | d |
291
+
292
+ @four
293
+ Scenario: Failing
294
+ Given failing
295
+ \"\"\"
296
+ hello
297
+ \"\"\"
298
+
299
+ Feature: search examples
300
+
301
+ Background: Hantu Pisang background match
302
+ Given passing without a table
303
+
304
+ Scenario: should match Hantu Pisang
305
+ Given passing without a table
306
+
307
+ Scenario: Ignore me
308
+ Given failing without a table
309
+
310
+ Scenario Outline: Ignore me
311
+ Given <state> without a table
312
+
313
+ Examples:
314
+ | state |
315
+ | failing |
316
+
317
+ Scenario Outline: Hantu Pisang match
318
+ Given <state> without a table
319
+
320
+ Examples:
321
+ | state |
322
+ | passing |
323
+
324
+ Scenario Outline: no match in name but in examples
325
+ Given <state> without a table
326
+
327
+ Examples: Hantu Pisang
328
+ | state |
329
+ | passing |
330
+
331
+ Examples: Ignore me
332
+ | state |
333
+ | failing |
334
+
335
+ @sample_one
336
+ Feature: Tag samples
337
+
338
+ @sample_two @sample_four
339
+ Scenario: Passing
340
+ Given missing
341
+
342
+ @sample_three
343
+ Scenario Outline:
344
+ Given <state>
345
+
346
+ Examples:
347
+ | state |
348
+ | missing |
349
+
350
+ @sample_three @sample_four
351
+ Scenario: Skipped
352
+ Given missing
353
+
354
+ Feature: Step argument transformations
355
+
356
+ Scenario: transform with matches
357
+ Then I should transform '10' to an Integer
358
+
359
+ Scenario: transform with matches that capture
360
+ Then I should transform 'abc' to a Symbol
361
+
362
+ Scenario: transform without matches
363
+ Then I should not transform '10' to an Integer
364
+
365
+ Feature: undefined multiline args
366
+
367
+ Scenario: pystring
368
+ Given a pystring
369
+ \"\"\"
370
+ example
371
+ \"\"\"
372
+
373
+ Scenario: table
374
+ Given a table
375
+ | table |
376
+ | example |
377
+
378
+ 29 scenarios (20 skipped, 8 undefined, 1 passed)
379
+ 45 steps (33 skipped, 12 undefined)
380
+
381
+ """
382
+
383
+ Scenario: Multiple formatters and outputs
384
+ When I run cucumber --format progress --out tmp/progress.txt --format pretty --out tmp/pretty.txt --dry-run features/lots_of_undefined.feature
385
+ And "examples/self_test/tmp/progress.txt" should contain
386
+ """
387
+ UUUUU
388
+
389
+ 1 scenario (1 undefined)
390
+ 5 steps (5 undefined)
391
+
392
+ """
393
+ And "examples/self_test/tmp/pretty.txt" should contain
394
+ """
395
+ Feature: Lots of undefined
396
+
397
+ Scenario: Implement me
398
+ Given it snows in Sahara
399
+ Given it's 40 degrees in Norway
400
+ And it's 40 degrees in Norway
401
+ When I stop procrastinating
402
+ And there is world peace
403
+
404
+ 1 scenario (1 undefined)
405
+ 5 steps (5 undefined)
406
+
407
+ """
408
+
409
+ Scenario: Run feature elements which matches a name using --name
410
+ When I run cucumber --name Pisang -q features/
411
+ Then it should pass with
412
+ """
413
+ Feature: search examples
414
+
415
+ Background: Hantu Pisang background match
416
+ Given passing without a table
417
+
418
+ Scenario: should match Hantu Pisang
419
+ Given passing without a table
420
+
421
+ Scenario Outline: Hantu Pisang match
422
+ Given <state> without a table
423
+
424
+ Examples:
425
+ | state |
426
+ | passing |
427
+
428
+ Scenario Outline: no match in name but in examples
429
+ Given <state> without a table
430
+
431
+ Examples: Hantu Pisang
432
+ | state |
433
+ | passing |
434
+
435
+ 3 scenarios (3 passed)
436
+ 6 steps (6 passed)
437
+
438
+ """
439
+
440
+ Scenario: Run a single background which matches a name using --name (Useful if there is an error in it)
441
+ When I run cucumber --name 'Hantu Pisang background' -q features/
442
+ Then it should pass with
443
+ """
444
+ Feature: search examples
445
+
446
+ Background: Hantu Pisang background match
447
+ Given passing without a table
448
+
449
+ 0 scenarios
450
+ 1 step (1 passed)
451
+
452
+ """
453
+
454
+
455
+ Scenario: Run with a tag that exists on 2 scenarios
456
+ When I run cucumber -q features --tags three
457
+ Then it should pass with
458
+ """
459
+ # Feature comment
460
+ @one
461
+ Feature: Sample
462
+
463
+ @two @three
464
+ Scenario: Missing
465
+ Given missing
466
+
467
+ # Scenario comment
468
+ @three
469
+ Scenario: Passing
470
+ Given passing
471
+ | a | b |
472
+ | c | d |
473
+
474
+ 2 scenarios (1 undefined, 1 passed)
475
+ 2 steps (1 undefined, 1 passed)
476
+
477
+ """
478
+
479
+ @mri186
480
+ Scenario: Run with a tag that exists on 1 feature
481
+ When I run cucumber -q features --tags one
482
+ Then it should fail with
483
+ """
484
+ # Feature comment
485
+ @one
486
+ Feature: Sample
487
+
488
+ @two @three
489
+ Scenario: Missing
490
+ Given missing
491
+
492
+ # Scenario comment
493
+ @three
494
+ Scenario: Passing
495
+ Given passing
496
+ | a | b |
497
+ | c | d |
498
+
499
+ @four
500
+ Scenario: Failing
501
+ Given failing
502
+ \"\"\"
503
+ hello
504
+ \"\"\"
505
+ FAIL (RuntimeError)
506
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
507
+ ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
508
+ features/sample.feature:18:in `Given failing'
509
+
510
+ Failing Scenarios:
511
+ cucumber features/sample.feature:17 # Scenario: Failing
512
+
513
+ 3 scenarios (1 failed, 1 undefined, 1 passed)
514
+ 3 steps (1 failed, 1 undefined, 1 passed)
515
+
516
+ """
517
+
518
+ Scenario: Run with a negative tag
519
+ When I run cucumber -q features/sample.feature --dry-run -t ~four
520
+ Then it should pass with
521
+ """
522
+ # Feature comment
523
+ @one
524
+ Feature: Sample
525
+
526
+ @two @three
527
+ Scenario: Missing
528
+ Given missing
529
+
530
+ # Scenario comment
531
+ @three
532
+ Scenario: Passing
533
+ Given passing
534
+ | a | b |
535
+ | c | d |
536
+
537
+ 2 scenarios (1 skipped, 1 undefined)
538
+ 2 steps (1 skipped, 1 undefined)
539
+
540
+ """
541
+
542
+ Scenario: Run with limited tag number
543
+ When I run cucumber -q features/tags_sample.feature --dry-run -t sample_three:1
544
+ Then it should fail with
545
+ """
546
+ @sample_one
547
+ Feature: Tag samples
548
+
549
+ @sample_three
550
+ Scenario Outline:
551
+ Given <state>
552
+
553
+ Examples:
554
+ | state |
555
+ | missing |
556
+
557
+ @sample_three @sample_four
558
+ Scenario: Skipped
559
+ Given missing
560
+
561
+ 2 scenarios (2 undefined)
562
+ 2 steps (2 undefined)
563
+
564
+ Failed due to exceeding the tag limit
565
+ @sample_three occurred:2 limit:1
566
+ features/tags_sample.feature:9
567
+ features/tags_sample.feature:16
568
+
569
+ """
570
+
571
+ Scenario: Run with a feature tag which has a limit
572
+ When I run cucumber -q features/tags_sample.feature --dry-run -t sample_one:1
573
+ Then it should fail with
574
+ """
575
+ @sample_one
576
+ Feature: Tag samples
577
+
578
+ @sample_two @sample_four
579
+ Scenario: Passing
580
+ Given missing
581
+
582
+ @sample_three
583
+ Scenario Outline:
584
+ Given <state>
585
+
586
+ Examples:
587
+ | state |
588
+ | missing |
589
+
590
+ @sample_three @sample_four
591
+ Scenario: Skipped
592
+ Given missing
593
+
594
+ 3 scenarios (3 undefined)
595
+ 3 steps (3 undefined)
596
+
597
+ Failed due to exceeding the tag limit
598
+ @sample_one occurred:3 limit:1
599
+ features/tags_sample.feature:5
600
+ features/tags_sample.feature:9
601
+ features/tags_sample.feature:16
602
+
603
+ """
604
+
605
+ Scenario: Reformat files with --autoformat
606
+ When I run cucumber --autoformat tmp/formatted features
607
+ Then "examples/self_test/tmp/formatted/features/sample.feature" should contain
608
+ """
609
+ # Feature comment
610
+ @one
611
+ Feature: Sample
612
+
613
+ @two @three
614
+ Scenario: Missing
615
+ Given missing
616
+
617
+ # Scenario comment
618
+ @three
619
+ Scenario: Passing
620
+ Given passing
621
+ | a | b |
622
+ | c | d |
623
+
624
+ @four
625
+ Scenario: Failing
626
+ Given failing
627
+ \"\"\"
628
+ hello
629
+ \"\"\"
630
+
631
+
632
+ """
633
+
634
+ Scenario: Generate PDF with pdf formatter
635
+ When I run cucumber --format pdf --out tmp/sample.pdf --dry-run features/sample.feature
636
+ Then "examples/self_test/tmp/sample.pdf" should match "Pages 2"
637
+
638
+ Scenario: Run feature elements which match a name using -n
639
+ When I run cucumber -n Pisang -q features/
640
+ Then it should pass with
641
+ """
642
+ Feature: search examples
643
+
644
+ Background: Hantu Pisang background match
645
+ Given passing without a table
646
+
647
+ Scenario: should match Hantu Pisang
648
+ Given passing without a table
649
+
650
+ Scenario Outline: Hantu Pisang match
651
+ Given <state> without a table
652
+
653
+ Examples:
654
+ | state |
655
+ | passing |
656
+
657
+ Scenario Outline: no match in name but in examples
658
+ Given <state> without a table
659
+
660
+ Examples: Hantu Pisang
661
+ | state |
662
+ | passing |
663
+
664
+ 3 scenarios (3 passed)
665
+ 6 steps (6 passed)
666
+
667
+ """