kbaum-cucumber 0.4.5.pre

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 (511) hide show
  1. data/.gitattributes +1 -0
  2. data/.gitignore +18 -0
  3. data/Caliper.yml +5 -0
  4. data/History.txt +1292 -0
  5. data/LICENSE +22 -0
  6. data/README.rdoc +26 -0
  7. data/Rakefile +63 -0
  8. data/VERSION.yml +5 -0
  9. data/bin/cucumber +16 -0
  10. data/cucumber.gemspec +741 -0
  11. data/cucumber.yml +10 -0
  12. data/examples/dos_line_endings/Rakefile +6 -0
  13. data/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
  14. data/examples/i18n/README.textile +18 -0
  15. data/examples/i18n/Rakefile +32 -0
  16. data/examples/i18n/ar/Rakefile +6 -0
  17. data/examples/i18n/ar/features/addition.feature +17 -0
  18. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +24 -0
  19. data/examples/i18n/ar/lib/calculator.rb +11 -0
  20. data/examples/i18n/bg/Rakefile +6 -0
  21. data/examples/i18n/bg/features/addition.feature +12 -0
  22. data/examples/i18n/bg/features/consecutive_calculations.feature +19 -0
  23. data/examples/i18n/bg/features/division.feature +17 -0
  24. data/examples/i18n/bg/features/step_definitons/calculator_steps.rb +24 -0
  25. data/examples/i18n/bg/features/support/env.rb +6 -0
  26. data/examples/i18n/bg/features/support/world.rb +8 -0
  27. data/examples/i18n/bg/lib/calculator.rb +24 -0
  28. data/examples/i18n/cat/Rakefile +6 -0
  29. data/examples/i18n/cat/features/step_definitons/calculator_steps.rb +21 -0
  30. data/examples/i18n/cat/features/suma.feature +17 -0
  31. data/examples/i18n/cat/lib/calculadora.rb +16 -0
  32. data/examples/i18n/da/Rakefile +6 -0
  33. data/examples/i18n/da/features/sammenlaegning.feature +18 -0
  34. data/examples/i18n/da/features/step_definitons/lommeregner_steps.rb +24 -0
  35. data/examples/i18n/da/lib/lommeregner.rb +11 -0
  36. data/examples/i18n/de/.gitignore +1 -0
  37. data/examples/i18n/de/Rakefile +6 -0
  38. data/examples/i18n/de/features/addition.feature +17 -0
  39. data/examples/i18n/de/features/division.feature +10 -0
  40. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +24 -0
  41. data/examples/i18n/de/lib/calculator.rb +14 -0
  42. data/examples/i18n/en-lol/Rakefile +4 -0
  43. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
  44. data/examples/i18n/en-lol/features/stuffing.feature +8 -0
  45. data/examples/i18n/en-lol/features/support/env.rb +8 -0
  46. data/examples/i18n/en-lol/lib/basket.rb +12 -0
  47. data/examples/i18n/en-lol/lib/belly.rb +11 -0
  48. data/examples/i18n/en/.gitignore +1 -0
  49. data/examples/i18n/en/Rakefile +6 -0
  50. data/examples/i18n/en/features/addition.feature +17 -0
  51. data/examples/i18n/en/features/division.feature +10 -0
  52. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +24 -0
  53. data/examples/i18n/en/lib/calculator.rb +14 -0
  54. data/examples/i18n/es/Rakefile +6 -0
  55. data/examples/i18n/es/features/adicion.feature +17 -0
  56. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +21 -0
  57. data/examples/i18n/es/lib/calculador.rb +14 -0
  58. data/examples/i18n/et/Rakefile +6 -0
  59. data/examples/i18n/et/features/jagamine.feature +10 -0
  60. data/examples/i18n/et/features/liitmine.feature +17 -0
  61. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +24 -0
  62. data/examples/i18n/et/lib/kalkulaator.rb +14 -0
  63. data/examples/i18n/fi/.gitignore +1 -0
  64. data/examples/i18n/fi/Rakefile +6 -0
  65. data/examples/i18n/fi/features/jakolasku.feature +10 -0
  66. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
  67. data/examples/i18n/fi/features/yhteenlasku.feature +17 -0
  68. data/examples/i18n/fi/lib/laskin.rb +14 -0
  69. data/examples/i18n/fr/Rakefile +6 -0
  70. data/examples/i18n/fr/features/addition.feature +18 -0
  71. data/examples/i18n/fr/features/addition2.feature +17 -0
  72. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +38 -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/.gitignore +1 -0
  80. data/examples/i18n/hu/Rakefile +6 -0
  81. data/examples/i18n/hu/features/addition.feature +17 -0
  82. data/examples/i18n/hu/features/division.feature +10 -0
  83. data/examples/i18n/hu/features/step_definitons/calculator_steps.rb +25 -0
  84. data/examples/i18n/hu/lib/calculator.rb +14 -0
  85. data/examples/i18n/id/.gitignore +1 -0
  86. data/examples/i18n/id/Rakefile +6 -0
  87. data/examples/i18n/id/features/addition.feature +17 -0
  88. data/examples/i18n/id/features/division.feature +10 -0
  89. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +24 -0
  90. data/examples/i18n/id/lib/calculator.rb +14 -0
  91. data/examples/i18n/it/Rakefile +6 -0
  92. data/examples/i18n/it/features/somma.feature +11 -0
  93. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +24 -0
  94. data/examples/i18n/it/lib/calcolatrice.rb +11 -0
  95. data/examples/i18n/ja/.gitignore +1 -0
  96. data/examples/i18n/ja/Rakefile +6 -0
  97. data/examples/i18n/ja/features/addition.feature +17 -0
  98. data/examples/i18n/ja/features/division.feature +10 -0
  99. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +24 -0
  100. data/examples/i18n/ja/lib/calculator.rb +14 -0
  101. data/examples/i18n/ko/.gitignore +1 -0
  102. data/examples/i18n/ko/Rakefile +6 -0
  103. data/examples/i18n/ko/features/addition.feature +17 -0
  104. data/examples/i18n/ko/features/division.feature +11 -0
  105. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +24 -0
  106. data/examples/i18n/ko/lib/calculator.rb +14 -0
  107. data/examples/i18n/lt/.gitignore +1 -0
  108. data/examples/i18n/lt/Rakefile +6 -0
  109. data/examples/i18n/lt/features/addition.feature +17 -0
  110. data/examples/i18n/lt/features/division.feature +10 -0
  111. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +24 -0
  112. data/examples/i18n/lt/lib/calculator.rb +14 -0
  113. data/examples/i18n/lv/Rakefile +6 -0
  114. data/examples/i18n/lv/features/addition.feature +17 -0
  115. data/examples/i18n/lv/features/division.feature +10 -0
  116. data/examples/i18n/lv/features/step_definitons/calculator_steps.rb +24 -0
  117. data/examples/i18n/lv/lib/calculator.rb +14 -0
  118. data/examples/i18n/no/Rakefile +6 -0
  119. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +17 -0
  120. data/examples/i18n/no/features/summering.feature +19 -0
  121. data/examples/i18n/no/features/support/env.rb +6 -0
  122. data/examples/i18n/no/lib/kalkulator.rb +11 -0
  123. data/examples/i18n/pl/.gitignore +1 -0
  124. data/examples/i18n/pl/Rakefile +6 -0
  125. data/examples/i18n/pl/features/addition.feature +17 -0
  126. data/examples/i18n/pl/features/division.feature +10 -0
  127. data/examples/i18n/pl/features/step_definitons/calculator_steps.rb +24 -0
  128. data/examples/i18n/pl/features/support/env.rb +6 -0
  129. data/examples/i18n/pl/lib/calculator.rb +14 -0
  130. data/examples/i18n/pt/Rakefile +6 -0
  131. data/examples/i18n/pt/features/adicao.feature +11 -0
  132. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +20 -0
  133. data/examples/i18n/pt/features/support/env.rb +6 -0
  134. data/examples/i18n/pt/lib/calculadora.rb +10 -0
  135. data/examples/i18n/ro/Rakefile +6 -0
  136. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +24 -0
  137. data/examples/i18n/ro/features/suma.feature +11 -0
  138. data/examples/i18n/ro/lib/calculator.rb +11 -0
  139. data/examples/i18n/ru/Rakefile +6 -0
  140. data/examples/i18n/ru/features/addition.feature +11 -0
  141. data/examples/i18n/ru/features/consecutive_calculations.feature +17 -0
  142. data/examples/i18n/ru/features/division.feature +16 -0
  143. data/examples/i18n/ru/features/step_definitons/calculator_steps.rb +19 -0
  144. data/examples/i18n/ru/features/support/env.rb +6 -0
  145. data/examples/i18n/ru/features/support/world.rb +8 -0
  146. data/examples/i18n/ru/lib/calculator.rb +24 -0
  147. data/examples/i18n/se/Rakefile +6 -0
  148. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +24 -0
  149. data/examples/i18n/se/features/summering.feature +18 -0
  150. data/examples/i18n/se/lib/kalkulator.rb +11 -0
  151. data/examples/i18n/sk/.gitignore +1 -0
  152. data/examples/i18n/sk/Rakefile +6 -0
  153. data/examples/i18n/sk/features/addition.feature +17 -0
  154. data/examples/i18n/sk/features/division.feature +10 -0
  155. data/examples/i18n/sk/features/step_definitons/calculator_steps.rb +24 -0
  156. data/examples/i18n/sk/lib/calculator.rb +14 -0
  157. data/examples/i18n/sr-latn/Rakefile +6 -0
  158. data/examples/i18n/sr-latn/features/sabiranje.feature +18 -0
  159. data/examples/i18n/sr-latn/features/step_definitons/calculator_steps.rb +24 -0
  160. data/examples/i18n/sr-latn/lib/calculator.rb +12 -0
  161. data/examples/i18n/sr/Rakefile +6 -0
  162. data/examples/i18n/sr/features/sabiranje.feature +18 -0
  163. data/examples/i18n/sr/features/step_definitons/calculator_steps.rb +24 -0
  164. data/examples/i18n/sr/lib/calculator.rb +12 -0
  165. data/examples/i18n/tr/.gitignore +1 -0
  166. data/examples/i18n/tr/Rakefile +6 -0
  167. data/examples/i18n/tr/features/bolme.feature +10 -0
  168. data/examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb +24 -0
  169. data/examples/i18n/tr/features/toplama.feature +18 -0
  170. data/examples/i18n/tr/lib/hesap_makinesi.rb +15 -0
  171. data/examples/i18n/uz/Rakefile +6 -0
  172. data/examples/i18n/uz/features/addition.feature +10 -0
  173. data/examples/i18n/uz/features/consecutive_calculations.feature +17 -0
  174. data/examples/i18n/uz/features/division.feature +17 -0
  175. data/examples/i18n/uz/features/step_definitons/calculator_steps.rb +19 -0
  176. data/examples/i18n/uz/features/support/env.rb +6 -0
  177. data/examples/i18n/uz/features/support/world.rb +8 -0
  178. data/examples/i18n/uz/lib/calculator.rb +24 -0
  179. data/examples/i18n/zh-CN/Rakefile +4 -0
  180. data/examples/i18n/zh-CN/features/addition.feature +18 -0
  181. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +26 -0
  182. data/examples/i18n/zh-CN/lib/calculator.rb +10 -0
  183. data/examples/i18n/zh-TW/.gitignore +1 -0
  184. data/examples/i18n/zh-TW/Rakefile +4 -0
  185. data/examples/i18n/zh-TW/features/addition.feature +17 -0
  186. data/examples/i18n/zh-TW/features/division.feature +11 -0
  187. data/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +24 -0
  188. data/examples/i18n/zh-TW/lib/calculator.rb +14 -0
  189. data/examples/junit/features/one_passing_one_failing.feature +8 -0
  190. data/examples/junit/features/pending.feature +5 -0
  191. data/examples/junit/features/step_definitions/steps.rb +11 -0
  192. data/examples/python/features/fibonacci.feature +19 -0
  193. data/examples/python/features/step_definitions/fib_steps.py +11 -0
  194. data/examples/python/lib/.gitignore +1 -0
  195. data/examples/python/lib/fib.py +7 -0
  196. data/examples/ramaze/README.textile +7 -0
  197. data/examples/ramaze/Rakefile +6 -0
  198. data/examples/ramaze/app.rb +21 -0
  199. data/examples/ramaze/features/add.feature +11 -0
  200. data/examples/ramaze/features/step_definitions/add_steps.rb +15 -0
  201. data/examples/ramaze/features/support/env.rb +32 -0
  202. data/examples/ramaze/layout/default.html.erb +8 -0
  203. data/examples/ramaze/view/index.html.erb +5 -0
  204. data/examples/ruby2python/features/fibonacci.feature +19 -0
  205. data/examples/ruby2python/features/step_definitions/fib_steps.rb +7 -0
  206. data/examples/ruby2python/features/support/env.rb +21 -0
  207. data/examples/ruby2python/lib/.gitignore +1 -0
  208. data/examples/ruby2python/lib/fib.py +7 -0
  209. data/examples/selenium/Rakefile +6 -0
  210. data/examples/selenium/features/search.feature +9 -0
  211. data/examples/selenium/features/step_definitons/search_steps.rb +13 -0
  212. data/examples/selenium/features/support/env.rb +19 -0
  213. data/examples/selenium_webrat/Rakefile +6 -0
  214. data/examples/selenium_webrat/config.ru +0 -0
  215. data/examples/selenium_webrat/features/search.feature +9 -0
  216. data/examples/selenium_webrat/features/step_definitons/search_steps.rb +13 -0
  217. data/examples/selenium_webrat/features/support/env.rb +45 -0
  218. data/examples/self_test/.gitignore +1 -0
  219. data/examples/self_test/README.textile +6 -0
  220. data/examples/self_test/Rakefile +6 -0
  221. data/examples/self_test/features/background/background_tagged_before_on_outline.feature +12 -0
  222. data/examples/self_test/features/background/background_with_name.feature +7 -0
  223. data/examples/self_test/features/background/failing_background.feature +12 -0
  224. data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  225. data/examples/self_test/features/background/multiline_args_background.feature +32 -0
  226. data/examples/self_test/features/background/passing_background.feature +10 -0
  227. data/examples/self_test/features/background/pending_background.feature +10 -0
  228. data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  229. data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  230. data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  231. data/examples/self_test/features/failing_expectation.feature +4 -0
  232. data/examples/self_test/features/lots_of_undefined.feature +8 -0
  233. data/examples/self_test/features/multiline_name.feature +27 -0
  234. data/examples/self_test/features/outline_sample.feature +15 -0
  235. data/examples/self_test/features/sample.feature +21 -0
  236. data/examples/self_test/features/search_sample.feature +32 -0
  237. data/examples/self_test/features/step_definitions/sample_steps.rb +81 -0
  238. data/examples/self_test/features/support/env.rb +18 -0
  239. data/examples/self_test/features/tags_sample.feature +17 -0
  240. data/examples/self_test/features/tons_of_cukes.feature +52 -0
  241. data/examples/self_test/features/undefined_multiline_args.feature +12 -0
  242. data/examples/self_test/list-of-features.txt +1 -0
  243. data/examples/sinatra/README.textile +13 -0
  244. data/examples/sinatra/Rakefile +6 -0
  245. data/examples/sinatra/app.rb +14 -0
  246. data/examples/sinatra/features/add.feature +11 -0
  247. data/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
  248. data/examples/sinatra/features/support/env.rb +30 -0
  249. data/examples/sinatra/views/add.erb +5 -0
  250. data/examples/sinatra/views/layout.erb +8 -0
  251. data/examples/steps_library/features/step_definitions/steps_lib1.rb +8 -0
  252. data/examples/steps_library/features/step_definitions/steps_lib2.rb +8 -0
  253. data/examples/tcl/README.textile +11 -0
  254. data/examples/tcl/Rakefile +6 -0
  255. data/examples/tcl/features/fibonnacci.feature +17 -0
  256. data/examples/tcl/features/step_definitions/fib_steps.rb +7 -0
  257. data/examples/tcl/features/support/env.rb +6 -0
  258. data/examples/tcl/src/fib.tcl +3 -0
  259. data/examples/test_unit/Rakefile +6 -0
  260. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +23 -0
  261. data/examples/test_unit/features/test_unit.feature +9 -0
  262. data/examples/tickets/Rakefile +20 -0
  263. data/examples/tickets/features.html +138 -0
  264. data/examples/tickets/features/172.feature +28 -0
  265. data/examples/tickets/features/177/1.feature +28 -0
  266. data/examples/tickets/features/177/2.feature +20 -0
  267. data/examples/tickets/features/177/3.feature +18 -0
  268. data/examples/tickets/features/180.feature +7 -0
  269. data/examples/tickets/features/229/tagged_hooks.feature +8 -0
  270. data/examples/tickets/features/229/tagged_hooks.rb +14 -0
  271. data/examples/tickets/features/236.feature +13 -0
  272. data/examples/tickets/features/241.feature +12 -0
  273. data/examples/tickets/features/246.feature +4 -0
  274. data/examples/tickets/features/248.feature +11 -0
  275. data/examples/tickets/features/270/back.feature +14 -0
  276. data/examples/tickets/features/270/back.steps.rb +14 -0
  277. data/examples/tickets/features/272/hooks.feature +26 -0
  278. data/examples/tickets/features/272/hooks_steps.rb +53 -0
  279. data/examples/tickets/features/279/py_string_indent.feature +25 -0
  280. data/examples/tickets/features/279/py_string_indent.steps.rb +12 -0
  281. data/examples/tickets/features/279/wrong.feature_ +11 -0
  282. data/examples/tickets/features/301/filter_background_tagged_hooks.feature +6 -0
  283. data/examples/tickets/features/301/filter_background_tagged_hooks_steps.rb +12 -0
  284. data/examples/tickets/features/306/only_background.feature +4 -0
  285. data/examples/tickets/features/lib/eatting_machine.rb +18 -0
  286. data/examples/tickets/features/lib/pantry.rb +20 -0
  287. data/examples/tickets/features/scenario_outline.feature +95 -0
  288. data/examples/tickets/features/step_definitons/246_steps.rb +3 -0
  289. data/examples/tickets/features/step_definitons/248_steps.rb +15 -0
  290. data/examples/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
  291. data/examples/tickets/features/step_definitons/tickets_steps.rb +81 -0
  292. data/examples/tickets/features/table_diffing.feature +13 -0
  293. data/examples/tickets/features/tickets.feature +28 -0
  294. data/examples/watir/README.textile +16 -0
  295. data/examples/watir/Rakefile +10 -0
  296. data/examples/watir/features/search.feature +12 -0
  297. data/examples/watir/features/step_definitions/search_steps.rb +26 -0
  298. data/examples/watir/features/support/env.rb +32 -0
  299. data/examples/watir/features/support/screenshots.rb +44 -0
  300. data/examples/webrat/features/search.feature +12 -0
  301. data/examples/webrat/features/step_definitions/kvasir_steps.rb +14 -0
  302. data/examples/webrat/features/support/env.rb +17 -0
  303. data/features/announce.feature +122 -0
  304. data/features/background.feature +308 -0
  305. data/features/bug_371.feature +32 -0
  306. data/features/bug_464.feature +16 -0
  307. data/features/bug_475.feature +43 -0
  308. data/features/call_many_steps.feature +124 -0
  309. data/features/cucumber_cli.feature +654 -0
  310. data/features/cucumber_cli_diff_disabled.feature +52 -0
  311. data/features/cucumber_cli_outlines.feature +105 -0
  312. data/features/custom_formatter.feature +47 -0
  313. data/features/default_snippets.feature +42 -0
  314. data/features/drb_server_integration.feature +174 -0
  315. data/features/exception_in_after_block.feature +100 -0
  316. data/features/exception_in_after_step_block.feature +102 -0
  317. data/features/exception_in_before_block.feature +78 -0
  318. data/features/exclude_files.feature +20 -0
  319. data/features/expand.feature +60 -0
  320. data/features/html_formatter.feature +7 -0
  321. data/features/html_formatter/a.html +400 -0
  322. data/features/junit_formatter.feature +88 -0
  323. data/features/language_from_header.feature +30 -0
  324. data/features/language_help.feature +68 -0
  325. data/features/listener_debugger_formatter.feature +41 -0
  326. data/features/multiline_names.feature +43 -0
  327. data/features/negative_tagged_hooks.feature +61 -0
  328. data/features/post_configuration_hook.feature +37 -0
  329. data/features/profiles.feature +112 -0
  330. data/features/rake_task.feature +152 -0
  331. data/features/report_called_undefined_steps.feature +34 -0
  332. data/features/simplest.feature +11 -0
  333. data/features/snippet.feature +22 -0
  334. data/features/step_definitions/cucumber_steps.rb +154 -0
  335. data/features/step_definitions/extra_steps.rb +2 -0
  336. data/features/step_definitions/simplest_steps.rb +3 -0
  337. data/features/step_definitions/wire_steps.rb +14 -0
  338. data/features/support/env.rb +141 -0
  339. data/features/support/env.rb.simplest +7 -0
  340. data/features/support/fake_wire_server.rb +63 -0
  341. data/features/table_diffing.feature +45 -0
  342. data/features/table_mapping.feature +35 -0
  343. data/features/tag_logic.feature +258 -0
  344. data/features/transform.feature +245 -0
  345. data/features/unicode_table.feature +35 -0
  346. data/features/usage_and_stepdefs_formatter.feature +169 -0
  347. data/features/wire_protocol.feature +177 -0
  348. data/features/work_in_progress.feature +156 -0
  349. data/gem_tasks/contributors.rake +13 -0
  350. data/gem_tasks/environment.rake +7 -0
  351. data/gem_tasks/features.rake +18 -0
  352. data/gem_tasks/fix_cr_lf.rake +10 -0
  353. data/gem_tasks/flog.rake +4 -0
  354. data/gem_tasks/rspec.rake +15 -0
  355. data/gem_tasks/sass.rake +4 -0
  356. data/gem_tasks/sdoc.rake +12 -0
  357. data/lib/README.rdoc +12 -0
  358. data/lib/autotest/cucumber.rb +6 -0
  359. data/lib/autotest/cucumber_mixin.rb +131 -0
  360. data/lib/autotest/cucumber_rails.rb +6 -0
  361. data/lib/autotest/cucumber_rails_rspec.rb +6 -0
  362. data/lib/autotest/cucumber_rspec.rb +6 -0
  363. data/lib/autotest/discover.rb +9 -0
  364. data/lib/cucumber.rb +15 -0
  365. data/lib/cucumber/ast.rb +30 -0
  366. data/lib/cucumber/ast/background.rb +75 -0
  367. data/lib/cucumber/ast/comment.rb +31 -0
  368. data/lib/cucumber/ast/examples.rb +36 -0
  369. data/lib/cucumber/ast/feature.rb +85 -0
  370. data/lib/cucumber/ast/feature_element.rb +68 -0
  371. data/lib/cucumber/ast/features.rb +40 -0
  372. data/lib/cucumber/ast/outline_table.rb +166 -0
  373. data/lib/cucumber/ast/py_string.rb +59 -0
  374. data/lib/cucumber/ast/scenario.rb +111 -0
  375. data/lib/cucumber/ast/scenario_outline.rb +100 -0
  376. data/lib/cucumber/ast/step.rb +121 -0
  377. data/lib/cucumber/ast/step_collection.rb +76 -0
  378. data/lib/cucumber/ast/step_invocation.rb +190 -0
  379. data/lib/cucumber/ast/table.rb +655 -0
  380. data/lib/cucumber/ast/tags.rb +122 -0
  381. data/lib/cucumber/ast/tree_walker.rb +201 -0
  382. data/lib/cucumber/ast/visitor.rb +11 -0
  383. data/lib/cucumber/broadcaster.rb +13 -0
  384. data/lib/cucumber/cli/configuration.rb +180 -0
  385. data/lib/cucumber/cli/drb_client.rb +32 -0
  386. data/lib/cucumber/cli/language_help_formatter.rb +72 -0
  387. data/lib/cucumber/cli/main.rb +121 -0
  388. data/lib/cucumber/cli/options.rb +404 -0
  389. data/lib/cucumber/cli/profile_loader.rb +82 -0
  390. data/lib/cucumber/constantize.rb +34 -0
  391. data/lib/cucumber/core_ext/instance_exec.rb +98 -0
  392. data/lib/cucumber/core_ext/proc.rb +30 -0
  393. data/lib/cucumber/core_ext/string.rb +16 -0
  394. data/lib/cucumber/feature_file.rb +54 -0
  395. data/lib/cucumber/filter.rb +41 -0
  396. data/lib/cucumber/formatter/ansicolor.rb +157 -0
  397. data/lib/cucumber/formatter/color_io.rb +23 -0
  398. data/lib/cucumber/formatter/console.rb +205 -0
  399. data/lib/cucumber/formatter/cucumber.css +248 -0
  400. data/lib/cucumber/formatter/cucumber.sass +241 -0
  401. data/lib/cucumber/formatter/debug.rb +33 -0
  402. data/lib/cucumber/formatter/duration.rb +13 -0
  403. data/lib/cucumber/formatter/html.rb +545 -0
  404. data/lib/cucumber/formatter/io.rb +33 -0
  405. data/lib/cucumber/formatter/junit.rb +149 -0
  406. data/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
  407. data/lib/cucumber/formatter/pdf.rb +234 -0
  408. data/lib/cucumber/formatter/pretty.rb +237 -0
  409. data/lib/cucumber/formatter/progress.rb +75 -0
  410. data/lib/cucumber/formatter/rerun.rb +50 -0
  411. data/lib/cucumber/formatter/stepdefs.rb +14 -0
  412. data/lib/cucumber/formatter/steps.rb +49 -0
  413. data/lib/cucumber/formatter/summary.rb +35 -0
  414. data/lib/cucumber/formatter/tag_cloud.rb +34 -0
  415. data/lib/cucumber/formatter/unicode.rb +35 -0
  416. data/lib/cucumber/formatter/usage.rb +127 -0
  417. data/lib/cucumber/language_support.rb +30 -0
  418. data/lib/cucumber/language_support/language_methods.rb +110 -0
  419. data/lib/cucumber/languages.yml +535 -0
  420. data/lib/cucumber/parser.rb +8 -0
  421. data/lib/cucumber/parser/common.rb +170 -0
  422. data/lib/cucumber/parser/common.tt +21 -0
  423. data/lib/cucumber/parser/feature.rb +1783 -0
  424. data/lib/cucumber/parser/feature.tt +317 -0
  425. data/lib/cucumber/parser/i18n.tt +34 -0
  426. data/lib/cucumber/parser/natural_language.rb +108 -0
  427. data/lib/cucumber/parser/py_string.rb +276 -0
  428. data/lib/cucumber/parser/py_string.tt +45 -0
  429. data/lib/cucumber/parser/table.rb +305 -0
  430. data/lib/cucumber/parser/table.tt +60 -0
  431. data/lib/cucumber/parser/treetop_ext.rb +53 -0
  432. data/lib/cucumber/platform.rb +31 -0
  433. data/lib/cucumber/py_support/py_dsl.py +10 -0
  434. data/lib/cucumber/py_support/py_language.py +10 -0
  435. data/lib/cucumber/py_support/py_language.rb +81 -0
  436. data/lib/cucumber/rake/task.rb +166 -0
  437. data/lib/cucumber/rb_support/rb_dsl.rb +102 -0
  438. data/lib/cucumber/rb_support/rb_hook.rb +19 -0
  439. data/lib/cucumber/rb_support/rb_language.rb +179 -0
  440. data/lib/cucumber/rb_support/rb_step_definition.rb +75 -0
  441. data/lib/cucumber/rb_support/rb_transform.rb +37 -0
  442. data/lib/cucumber/rb_support/rb_world.rb +81 -0
  443. data/lib/cucumber/rb_support/regexp_argument_matcher.rb +21 -0
  444. data/lib/cucumber/rspec_neuter.rb +23 -0
  445. data/lib/cucumber/step_argument.rb +9 -0
  446. data/lib/cucumber/step_definition_light.rb +20 -0
  447. data/lib/cucumber/step_match.rb +107 -0
  448. data/lib/cucumber/step_mother.rb +350 -0
  449. data/lib/cucumber/webrat/element_locator.rb +93 -0
  450. data/lib/cucumber/webrat/table_locator.rb +1 -0
  451. data/lib/cucumber/wire_support/connection.rb +42 -0
  452. data/lib/cucumber/wire_support/request_handler.rb +19 -0
  453. data/lib/cucumber/wire_support/wire_exception.rb +10 -0
  454. data/lib/cucumber/wire_support/wire_language.rb +52 -0
  455. data/lib/cucumber/wire_support/wire_packet.rb +34 -0
  456. data/lib/cucumber/wire_support/wire_protocol.rb +64 -0
  457. data/lib/cucumber/wire_support/wire_step_definition.rb +21 -0
  458. data/spec/cucumber/ast/background_spec.rb +54 -0
  459. data/spec/cucumber/ast/feature_element_spec.rb +41 -0
  460. data/spec/cucumber/ast/feature_factory.rb +62 -0
  461. data/spec/cucumber/ast/feature_spec.rb +44 -0
  462. data/spec/cucumber/ast/outline_table_spec.rb +21 -0
  463. data/spec/cucumber/ast/py_string_spec.rb +51 -0
  464. data/spec/cucumber/ast/scenario_outline_spec.rb +73 -0
  465. data/spec/cucumber/ast/scenario_spec.rb +45 -0
  466. data/spec/cucumber/ast/step_collection_spec.rb +17 -0
  467. data/spec/cucumber/ast/step_spec.rb +66 -0
  468. data/spec/cucumber/ast/table_spec.rb +422 -0
  469. data/spec/cucumber/ast/tags_spec.rb +29 -0
  470. data/spec/cucumber/ast/tree_walker_spec.rb +11 -0
  471. data/spec/cucumber/broadcaster_spec.rb +15 -0
  472. data/spec/cucumber/cli/configuration_spec.rb +396 -0
  473. data/spec/cucumber/cli/drb_client_spec.rb +77 -0
  474. data/spec/cucumber/cli/main_spec.rb +172 -0
  475. data/spec/cucumber/cli/options_spec.rb +335 -0
  476. data/spec/cucumber/cli/profile_loader_spec.rb +10 -0
  477. data/spec/cucumber/core_ext/proc_spec.rb +68 -0
  478. data/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
  479. data/spec/cucumber/formatter/color_io_spec.rb +27 -0
  480. data/spec/cucumber/formatter/console_spec.rb +20 -0
  481. data/spec/cucumber/formatter/duration_spec.rb +22 -0
  482. data/spec/cucumber/formatter/html_spec.rb +213 -0
  483. data/spec/cucumber/formatter/junit_spec.rb +110 -0
  484. data/spec/cucumber/formatter/progress_spec.rb +38 -0
  485. data/spec/cucumber/formatter/spec_helper.rb +50 -0
  486. data/spec/cucumber/parser/feature_parser_spec.rb +400 -0
  487. data/spec/cucumber/parser/table_parser_spec.rb +52 -0
  488. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +132 -0
  489. data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +18 -0
  490. data/spec/cucumber/sell_cucumbers.feature +19 -0
  491. data/spec/cucumber/step_match_spec.rb +56 -0
  492. data/spec/cucumber/step_mother_spec.rb +270 -0
  493. data/spec/cucumber/treetop_parser/empty_feature.feature +4 -0
  494. data/spec/cucumber/treetop_parser/empty_scenario.feature +9 -0
  495. data/spec/cucumber/treetop_parser/empty_scenario_outline.feature +3 -0
  496. data/spec/cucumber/treetop_parser/fit_scenario.feature +8 -0
  497. data/spec/cucumber/treetop_parser/given_scenario.feature +9 -0
  498. data/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +7 -0
  499. data/spec/cucumber/treetop_parser/multiline_steps.feature +17 -0
  500. data/spec/cucumber/treetop_parser/multiple_tables.feature +27 -0
  501. data/spec/cucumber/treetop_parser/scenario_outline.feature +16 -0
  502. data/spec/cucumber/treetop_parser/spaces.feature +12 -0
  503. data/spec/cucumber/treetop_parser/test_dos.feature +25 -0
  504. data/spec/cucumber/treetop_parser/with_comments.feature +23 -0
  505. data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  506. data/spec/cucumber/wire_support/wire_language_spec.rb +47 -0
  507. data/spec/cucumber/wire_support/wire_packet_spec.rb +26 -0
  508. data/spec/cucumber/world/pending_spec.rb +46 -0
  509. data/spec/spec.opts +4 -0
  510. data/spec/spec_helper.rb +18 -0
  511. metadata +813 -0
@@ -0,0 +1,52 @@
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 failing scenario with default diff enabled
6
+ When I run cucumber -q features/failing_expectation.feature
7
+ Then it should fail with
8
+ """
9
+ Feature: Failing expectation
10
+
11
+ Scenario: Failing expectation
12
+ Given failing expectation
13
+ expected: "that",
14
+ got: "this" (using ==)
15
+
16
+ Diff:
17
+ @@ -1,2 +1,2 @@
18
+ -that
19
+ +this
20
+ (Spec::Expectations::ExpectationNotMetError)
21
+ ./features/step_definitions/sample_steps.rb:63:in `/^failing expectation$/'
22
+ features/failing_expectation.feature:4:in `Given failing expectation'
23
+
24
+ Failing Scenarios:
25
+ cucumber features/failing_expectation.feature:3 # Scenario: Failing expectation
26
+
27
+ 1 scenario (1 failed)
28
+ 1 step (1 failed)
29
+
30
+ """
31
+
32
+ Scenario: Run single failing scenario with diff output disabled
33
+ When I run cucumber -q --no-diff features/failing_expectation.feature
34
+ Then it should fail with
35
+ """
36
+ Feature: Failing expectation
37
+
38
+ Scenario: Failing expectation
39
+ Given failing expectation
40
+ expected: "that",
41
+ got: "this" (using ==) (Spec::Expectations::ExpectationNotMetError)
42
+ ./features/step_definitions/sample_steps.rb:63:in `/^failing expectation$/'
43
+ features/failing_expectation.feature:4:in `Given failing expectation'
44
+
45
+ Failing Scenarios:
46
+ cucumber features/failing_expectation.feature:3 # Scenario: Failing expectation
47
+
48
+ 1 scenario (1 failed)
49
+ 1 step (1 failed)
50
+
51
+ """
52
+
@@ -0,0 +1,105 @@
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 scenario outline with filtering on outline name
6
+ When I run cucumber -q features --name "Test state"
7
+ Then it should fail with
8
+ """
9
+ Feature: Outline Sample
10
+
11
+ Scenario Outline: Test state
12
+ Given <state> without a table
13
+ Given <other_state> without a table
14
+
15
+ Examples: Rainbow colours
16
+ | state | other_state |
17
+ | missing | passing |
18
+ | passing | passing |
19
+ | failing | passing |
20
+ FAIL (RuntimeError)
21
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
22
+ ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
23
+ features/outline_sample.feature:6:in `Given <state> without a table'
24
+
25
+ Examples: Only passing
26
+ | state | other_state |
27
+ | passing | passing |
28
+
29
+ 4 scenarios (1 failed, 1 undefined, 2 passed)
30
+ 8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
31
+
32
+ """
33
+
34
+ Scenario: Run scenario outline steps only
35
+ When I run cucumber -q features/outline_sample.feature:7
36
+ Then it should fail with
37
+ """
38
+ Feature: Outline Sample
39
+
40
+ Scenario Outline: Test state
41
+ Given <state> without a table
42
+ Given <other_state> without a table
43
+
44
+ Examples: Rainbow colours
45
+ | state | other_state |
46
+ | missing | passing |
47
+ | passing | passing |
48
+ | failing | passing |
49
+ FAIL (RuntimeError)
50
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
51
+ ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
52
+ features/outline_sample.feature:6:in `Given <state> without a table'
53
+
54
+ Examples: Only passing
55
+ | state | other_state |
56
+ | passing | passing |
57
+
58
+ 4 scenarios (1 failed, 1 undefined, 2 passed)
59
+ 8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
60
+
61
+ """
62
+
63
+ Scenario: Run single failing scenario outline table row
64
+ When I run cucumber features/outline_sample.feature:12
65
+ Then it should fail with
66
+ """
67
+ Feature: Outline Sample
68
+
69
+ Scenario Outline: Test state # features/outline_sample.feature:5
70
+ Given <state> without a table # features/step_definitions/sample_steps.rb:15
71
+ Given <other_state> without a table # features/step_definitions/sample_steps.rb:12
72
+
73
+ Examples: Rainbow colours
74
+ | state | other_state |
75
+ | failing | passing |
76
+ FAIL (RuntimeError)
77
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
78
+ ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
79
+ features/outline_sample.feature:6:in `Given <state> without a table'
80
+
81
+ 1 scenario (1 failed)
82
+ 2 steps (1 failed, 1 skipped)
83
+
84
+ """
85
+
86
+ # There are 10 characters in the progress, but only 8 reported steps. Needs investigation.
87
+ # Looks like we're outputting too many characters.
88
+ Scenario: Run all with progress formatter
89
+ When I run cucumber -q --format progress features/outline_sample.feature
90
+ Then it should fail with
91
+ """
92
+ --U-..F-..
93
+
94
+ (::) failed steps (::)
95
+
96
+ FAIL (RuntimeError)
97
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
98
+ ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
99
+ features/outline_sample.feature:6:in `Given <state> without a table'
100
+
101
+ 5 scenarios (1 failed, 1 undefined, 3 passed)
102
+ 8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
103
+
104
+ """
105
+
@@ -0,0 +1,47 @@
1
+ Feature: Custom Formatter
2
+
3
+ Scenario: count tags
4
+ When I run cucumber --format Cucumber::Formatter::TagCloud features
5
+ Then STDERR should be empty
6
+ Then it should fail with
7
+ """
8
+ | @after_file | @background_tagged_before_on_outline | @four | @lots | @one | @sample_four | @sample_one | @sample_three | @sample_two | @three | @two |
9
+ | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 1 |
10
+
11
+ """
12
+
13
+ Scenario: my own formatter
14
+ Given a standard Cucumber project directory structure
15
+ And a file named "features/f.feature" with:
16
+ """
17
+ Feature: i'll use my own
18
+ Scenario: just print me
19
+ Given this step works
20
+ """
21
+ And a file named "features/step_definitions/steps.rb" with:
22
+ """
23
+ Given /^this step works$/ do
24
+ end
25
+ """
26
+ And a file named "features/support/ze/formator.rb" with:
27
+ """
28
+ module Ze
29
+ class Formator
30
+ def initialize(step_mother, io, options)
31
+ @step_mother = step_mother
32
+ @io = io
33
+ end
34
+
35
+ def scenario_name(keyword, name, file_colon_line, source_indent)
36
+ @io.puts "$ #{name.upcase}"
37
+ end
38
+ end
39
+ end
40
+ """
41
+ When I run cucumber features/f.feature --format Ze::Formator
42
+ Then STDERR should be empty
43
+ Then it should pass with
44
+ """
45
+ $ JUST PRINT ME
46
+
47
+ """
@@ -0,0 +1,42 @@
1
+ Feature: Print snippets
2
+ In order to make it easier to implement step definitions
3
+ Developers should get a scaffolding for undefined step definitions
4
+
5
+ Scenario: Cucumber doesn't know what language, and defaults to Ruby
6
+ Given a standard Cucumber project directory structure
7
+ And a file named "features/x.feature" with:
8
+ """
9
+ Feature: X
10
+ Scenario: Y
11
+ Given Z
12
+ Given Q
13
+ """
14
+ When I run cucumber features
15
+ Then STDERR should be empty
16
+ And it should pass with
17
+ """
18
+ Feature: X
19
+
20
+ Scenario: Y # features/x.feature:2
21
+ Given Z # features/x.feature:3
22
+ Given Q # features/x.feature:4
23
+
24
+ 1 scenario (1 undefined)
25
+ 2 steps (2 undefined)
26
+
27
+ You can implement step definitions for undefined steps with these snippets:
28
+
29
+ Given /^Z$/ do
30
+ pending # express the regexp above with the code you wish you had
31
+ end
32
+
33
+ Given /^Q$/ do
34
+ pending # express the regexp above with the code you wish you had
35
+ end
36
+
37
+ If you want snippets in a different programming language, just make sure a file
38
+ with the appropriate file extension exists where cucumber looks for step definitions.
39
+
40
+
41
+ """
42
+
@@ -0,0 +1,174 @@
1
+ @spork
2
+ Feature: DRb Server Integration
3
+ To prevent waiting for Rails and other large Ruby applications to load their environments
4
+ for each feature run Cucumber ships with a DRb client that can speak to a server which
5
+ loads up the environment only once.
6
+
7
+ Background: App with Spork support
8
+ Spork is a gem that has a DRb server and the scenarios below illustrate how to use it.
9
+ However, any DRb server that adheres to the protocol that the client expects would work.
10
+
11
+ Given a standard Cucumber project directory structure
12
+ And a file named "features/support/env.rb" with:
13
+ """
14
+ require 'rubygems'
15
+ require 'spork'
16
+
17
+ Spork.prefork do
18
+ puts "I'm loading all the heavy stuff..."
19
+ end
20
+
21
+ Spork.each_run do
22
+ puts "I'm loading the stuff just for this run..."
23
+ end
24
+ """
25
+ And a file named "features/sample.feature" with:
26
+ """
27
+ # language: en
28
+ Feature: Sample
29
+ Scenario: this is a test
30
+ Given I am just testing stuff
31
+ """
32
+ And a file named "features/essai.feature" with:
33
+ """
34
+ # language: fr
35
+ Fonction: Essai
36
+ Scenario: ceci est un test
37
+ Soit je teste
38
+ """
39
+ And a file named "features/step_definitions/all_your_steps_are_belong_to_us.rb" with:
40
+ """
41
+ Given /^I am just testing stuff$/ do
42
+ # no-op
43
+ end
44
+
45
+ Soit /^je teste$/ do
46
+ # no-op
47
+ end
48
+ """
49
+
50
+ Scenario: Feature Passing with --drb flag
51
+ Given I am running spork in the background
52
+
53
+ When I run cucumber features --drb
54
+ Then it should pass
55
+ And STDERR should be empty
56
+ And the output should contain
57
+ """
58
+ 1 step (1 passed)
59
+ """
60
+ And the output should contain
61
+ """
62
+ I'm loading the stuff just for this run...
63
+ """
64
+ And the output should not contain
65
+ """
66
+ I'm loading all the heavy stuff...
67
+ """
68
+
69
+ Scenario: Feature Failing with --drb flag
70
+ Given a file named "features/step_definitions/all_your_steps_are_belong_to_us.rb" with:
71
+ """
72
+ Given /^I am just testing stuff$/ do
73
+ raise "Oh noes!"
74
+ end
75
+ """
76
+ And I am running spork in the background
77
+
78
+ When I run cucumber features --drb
79
+ Then it should fail
80
+ And the output should contain
81
+ """
82
+ 1 step (1 failed)
83
+ """
84
+ And the output should contain
85
+ """
86
+ I'm loading the stuff just for this run...
87
+ """
88
+ And the output should not contain
89
+ """
90
+ I'm loading all the heavy stuff...
91
+ """
92
+
93
+ Scenario: Feature Run with --drb flag with no DRb server running
94
+ Cucumber will fall back on running the features locally in this case.
95
+
96
+ Given I am not running a DRb server in the background
97
+
98
+ When I run cucumber features --drb
99
+ Then it should pass
100
+ And STDERR should match
101
+ """
102
+ No DRb server is running. Running features locally:
103
+ """
104
+ And the output should contain
105
+ """
106
+ I'm loading all the heavy stuff...
107
+ I'm loading the stuff just for this run...
108
+ """
109
+ And the output should contain
110
+ """
111
+ 1 step (1 passed)
112
+ """
113
+
114
+
115
+ Scenario: Feature Run with --drb flag *defined in a profile* with no DRb server running
116
+
117
+ Given I am not running a DRb server in the background
118
+ And the following profile is defined:
119
+ """
120
+ server: --drb features
121
+ """
122
+
123
+ When I run cucumber --profile server
124
+ Then it should pass
125
+ And STDERR should match
126
+ """
127
+ No DRb server is running. Running features locally:
128
+ """
129
+ And the output should contain
130
+ """
131
+ I'm loading all the heavy stuff...
132
+ I'm loading the stuff just for this run...
133
+ """
134
+
135
+ Scenario: Feature Run with --drb specifying a non-standard port
136
+
137
+ Given I am running spork in the background on port 9000
138
+
139
+ When I run cucumber features --drb --port 9000
140
+ Then it should pass
141
+ And STDERR should be empty
142
+ And the output should contain
143
+ """
144
+ 1 step (1 passed)
145
+ """
146
+ And the output should contain
147
+ """
148
+ I'm loading the stuff just for this run...
149
+ """
150
+ And the output should not contain
151
+ """
152
+ I'm loading all the heavy stuff...
153
+ """
154
+
155
+ Scenario: Feature Run with $CUCUMBER_DRB environment variable
156
+
157
+ Given I have environment variable CUCUMBER_DRB set to "9000"
158
+ And I am running spork in the background on port 9000
159
+
160
+ When I run cucumber features/ --drb
161
+ Then it should pass
162
+ And STDERR should be empty
163
+ And the output should contain
164
+ """
165
+ 1 step (1 passed)
166
+ """
167
+ And the output should contain
168
+ """
169
+ I'm loading the stuff just for this run...
170
+ """
171
+ And the output should not contain
172
+ """
173
+ I'm loading all the heavy stuff...
174
+ """
@@ -0,0 +1,100 @@
1
+ Feature: Exception in After Block
2
+ In order to use custom assertions at the end of each scenario
3
+ As a developer
4
+ I want exceptions raised in After blocks to be handled gracefully and reported by the formatters
5
+
6
+ Background:
7
+ Given a standard Cucumber project directory structure
8
+ And a file named "features/step_definitions/steps.rb" with:
9
+ """
10
+ Given /^this step does something naughty$/ do
11
+ @naughty = true
12
+ end
13
+
14
+ Given /^this step works$/ do
15
+ end
16
+ """
17
+ And a file named "features/support/env.rb" with:
18
+ """
19
+ class NaughtyScenarioException < Exception; end
20
+ After do
21
+ if @naughty
22
+ raise NaughtyScenarioException.new("This scenario has been very very naughty")
23
+ end
24
+ end
25
+ """
26
+
27
+ Scenario: Handle Exception in standard scenario step and carry on
28
+ Given a file named "features/naughty_step_in_scenario.feature" with:
29
+ """
30
+ Feature: Sample
31
+
32
+ Scenario: Naughty Step
33
+ Given this step does something naughty
34
+
35
+ Scenario: Success
36
+ Given this step works
37
+ """
38
+ When I run cucumber features
39
+ Then it should fail with
40
+ """
41
+ Feature: Sample
42
+
43
+ Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
44
+ Given this step does something naughty # features/step_definitions/steps.rb:1
45
+ This scenario has been very very naughty (NaughtyScenarioException)
46
+ ./features/support/env.rb:4:in `After'
47
+
48
+ Scenario: Success # features/naughty_step_in_scenario.feature:6
49
+ Given this step works # features/step_definitions/steps.rb:5
50
+
51
+ Failing Scenarios:
52
+ cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
53
+
54
+ 2 scenarios (1 failed, 1 passed)
55
+ 2 steps (2 passed)
56
+
57
+ """
58
+
59
+ Scenario: Handle Exception in scenario outline table row and carry on
60
+ Given a file named "features/naughty_step_in_scenario_outline.feature" with:
61
+ """
62
+ Feature: Sample
63
+
64
+ Scenario Outline: Naughty Step
65
+ Given this step <Might Work>
66
+
67
+ Examples:
68
+ | Might Work |
69
+ | works |
70
+ | does something naughty |
71
+ | works |
72
+
73
+ Scenario: Success
74
+ Given this step works
75
+
76
+ """
77
+ When I run cucumber features
78
+ Then it should fail with
79
+ """
80
+ Feature: Sample
81
+
82
+ Scenario Outline: Naughty Step # features/naughty_step_in_scenario_outline.feature:3
83
+ Given this step <Might Work> # features/step_definitions/steps.rb:5
84
+
85
+ Examples:
86
+ | Might Work |
87
+ | works |
88
+ | does something naughty |
89
+ This scenario has been very very naughty (NaughtyScenarioException)
90
+ ./features/support/env.rb:4:in `After'
91
+ | works |
92
+
93
+ Scenario: Success # features/naughty_step_in_scenario_outline.feature:12
94
+ Given this step works # features/step_definitions/steps.rb:5
95
+
96
+ 4 scenarios (1 failed, 3 passed)
97
+ 4 steps (4 passed)
98
+
99
+ """
100
+