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,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,16 @@
1
+ Feature: https://rspec.lighthouseapp.com/projects/16211/tickets/464
2
+ Scenario: Limiting with tags which do not exist in the features
3
+ Given a standard Cucumber project directory structure
4
+ And a file named "features/f.feature" with:
5
+ """
6
+ Feature: Test
7
+ In order to test
8
+ As a tester
9
+ I want to test
10
+
11
+ @tag
12
+ Scenario: Testing
13
+ Given I'm a test
14
+ """
15
+ When I run cucumber -q features/f.feature --tag @i_dont_exist
16
+ Then it should pass
@@ -0,0 +1,43 @@
1
+ Feature: https://rspec.lighthouseapp.com/projects/16211/tickets/475
2
+ Scenario: error on pystring in scenario outline with pretty formatter
3
+ Given a standard Cucumber project directory structure
4
+ And a file named "features/f.feature" with:
5
+ """
6
+ Feature: F
7
+ Scenario Outline: S
8
+ Given a multiline string:
9
+ \"\"\"
10
+ hello <who>
11
+ \"\"\"
12
+ Examples:
13
+ | who |
14
+ | aslak |
15
+ | david |
16
+ """
17
+ And a file named "features/step_definitions/steps.rb" with:
18
+ """
19
+ Given /a multiline string:/ do |s|
20
+ s.should =~ /hello (\w+)/
21
+ end
22
+ """
23
+ When I run cucumber features/f.feature
24
+ Then STDERR should be empty
25
+ And it should pass with
26
+ """
27
+ Feature: F
28
+
29
+ Scenario Outline: S # features/f.feature:2
30
+ Given a multiline string: # features/step_definitions/steps.rb:1
31
+ \"\"\"
32
+ hello <who>
33
+ \"\"\"
34
+
35
+ Examples:
36
+ | who |
37
+ | aslak |
38
+ | david |
39
+
40
+ 2 scenarios (2 passed)
41
+ 2 steps (2 passed)
42
+
43
+ """
@@ -0,0 +1,124 @@
1
+ Feature: http://gist.github.com/221223
2
+ In order to make it easier to extract several steps from
3
+ a feature file to a step definition I want to be able to
4
+ copy and paste.
5
+
6
+ Background:
7
+ Given a standard Cucumber project directory structure
8
+ And a file named "features/f.feature" with:
9
+ """
10
+ Feature: Test
11
+
12
+ Scenario: Multiline string
13
+ Given a multiline string:
14
+ \"\"\"
15
+ hello
16
+ world
17
+ \"\"\"
18
+
19
+ Scenario: Call a multiline string
20
+ Given I call a multiline string with MAMA
21
+
22
+ Scenario: Call a table
23
+ Given I call a table with MAMA
24
+ """
25
+ And a file named "features/step_definitions/steps.rb" with:
26
+ """
27
+ Given /^a multiline string:$/ do |s|
28
+ raise "I got multiline:\n#{s}"
29
+ end
30
+
31
+ Given /^a table:$/ do |t|
32
+ raise "I got table:\n#{t.raw.inspect}"
33
+ end
34
+
35
+ Given /^I call a multiline string with (.*)$/ do |s|
36
+ steps %Q{
37
+ Given a multiline string:
38
+ \"\"\"
39
+ hello
40
+ #{s}
41
+ \"\"\"
42
+ }
43
+ end
44
+
45
+ Given /^I call a table with (.*)$/ do |s|
46
+ steps %Q{
47
+ Given a table:
48
+ |a|b|
49
+ |c|#{s}|
50
+ }
51
+ end
52
+ """
53
+
54
+ Scenario: Multiline string
55
+ When I run cucumber features/f.feature:6
56
+ Then STDERR should be empty
57
+ And it should fail with
58
+ """
59
+ Feature: Test
60
+
61
+ Scenario: Multiline string # features/f.feature:3
62
+ Given a multiline string: # features/step_definitions/steps.rb:1
63
+ \"\"\"
64
+ hello
65
+ world
66
+ \"\"\"
67
+ I got multiline:
68
+ hello
69
+ world (RuntimeError)
70
+ ./features/step_definitions/steps.rb:2:in `/^a multiline string:$/'
71
+ features/f.feature:4:in `Given a multiline string:'
72
+
73
+ Failing Scenarios:
74
+ cucumber features/f.feature:3 # Scenario: Multiline string
75
+
76
+ 1 scenario (1 failed)
77
+ 1 step (1 failed)
78
+
79
+ """
80
+
81
+ Scenario: Call multiline string
82
+ When I run cucumber features/f.feature:10
83
+ Then STDERR should be empty
84
+ And it should fail with
85
+ """
86
+ Feature: Test
87
+
88
+ Scenario: Call a multiline string # features/f.feature:10
89
+ Given I call a multiline string with MAMA # features/step_definitions/steps.rb:9
90
+ I got multiline:
91
+ hello
92
+ MAMA (RuntimeError)
93
+ ./features/step_definitions/steps.rb:2:in `/^a multiline string:$/'
94
+ features/f.feature:11:in `Given I call a multiline string with MAMA'
95
+
96
+ Failing Scenarios:
97
+ cucumber features/f.feature:10 # Scenario: Call a multiline string
98
+
99
+ 1 scenario (1 failed)
100
+ 1 step (1 failed)
101
+
102
+ """
103
+
104
+ Scenario: Call table
105
+ When I run cucumber features/f.feature:13
106
+ Then STDERR should be empty
107
+ And it should fail with
108
+ """
109
+ Feature: Test
110
+
111
+ Scenario: Call a table # features/f.feature:13
112
+ Given I call a table with MAMA # features/step_definitions/steps.rb:19
113
+ I got table:
114
+ [["a", "b"], ["c", "MAMA"]] (RuntimeError)
115
+ ./features/step_definitions/steps.rb:6:in `/^a table:$/'
116
+ features/f.feature:14:in `Given I call a table with MAMA'
117
+
118
+ Failing Scenarios:
119
+ cucumber features/f.feature:13 # Scenario: Call a table
120
+
121
+ 1 scenario (1 failed)
122
+ 1 step (1 failed)
123
+
124
+ """
@@ -0,0 +1,654 @@
1
+ Feature: Cucumber command line
2
+ In order to write better software
3
+ Developers should be able to execute requirements as tests
4
+
5
+ Scenario: Run single scenario with missing step definition
6
+ When I run cucumber -q features/sample.feature:5
7
+ Then it should pass with
8
+ """
9
+ # Feature comment
10
+ @one
11
+ Feature: Sample
12
+
13
+ @two @three
14
+ Scenario: Missing
15
+ Given missing
16
+
17
+ 1 scenario (1 undefined)
18
+ 1 step (1 undefined)
19
+
20
+ """
21
+
22
+ Scenario: Fail with --strict
23
+ When I run cucumber -q features/sample.feature:5 --strict
24
+ Then it should fail with
25
+ """
26
+ # Feature comment
27
+ @one
28
+ Feature: Sample
29
+
30
+ @two @three
31
+ Scenario: Missing
32
+ Given missing
33
+ Undefined step: "missing" (Cucumber::Undefined)
34
+ features/sample.feature:7:in `Given missing'
35
+
36
+ 1 scenario (1 undefined)
37
+ 1 step (1 undefined)
38
+
39
+ """
40
+
41
+ Scenario: Succeed with --strict
42
+ When I run cucumber -q features/sample.feature:10 --strict
43
+ Then it should pass with
44
+ """
45
+ # Feature comment
46
+ @one
47
+ Feature: Sample
48
+
49
+ # Scenario comment
50
+ @three
51
+ Scenario: Passing
52
+ Given passing
53
+ | a | b |
54
+ | c | d |
55
+
56
+ 1 scenario (1 passed)
57
+ 1 step (1 passed)
58
+
59
+ """
60
+
61
+ Scenario: Specify 2 line numbers where one is a tag
62
+ When I run cucumber -q features/sample.feature:5:16
63
+ Then it should fail with
64
+ """
65
+ # Feature comment
66
+ @one
67
+ Feature: Sample
68
+
69
+ @two @three
70
+ Scenario: Missing
71
+ Given missing
72
+
73
+ @four
74
+ Scenario: Failing
75
+ Given failing
76
+ \"\"\"
77
+ hello
78
+ \"\"\"
79
+ FAIL (RuntimeError)
80
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
81
+ ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
82
+ features/sample.feature:18:in `Given failing'
83
+
84
+ Failing Scenarios:
85
+ cucumber features/sample.feature:17 # Scenario: Failing
86
+
87
+ 2 scenarios (1 failed, 1 undefined)
88
+ 2 steps (1 failed, 1 undefined)
89
+
90
+ """
91
+
92
+ Scenario: Require missing step definition from elsewhere
93
+ When I run cucumber -q -r ../../features/step_definitions/extra_steps.rb features/sample.feature:5
94
+ Then it should pass with
95
+ """
96
+ # Feature comment
97
+ @one
98
+ Feature: Sample
99
+
100
+ @two @three
101
+ Scenario: Missing
102
+ Given missing
103
+
104
+ 1 scenario (1 passed)
105
+ 1 step (1 passed)
106
+
107
+ """
108
+
109
+ Scenario: Specify the line number of a row
110
+ When I run cucumber -q features/sample.feature:12
111
+ Then it should pass with
112
+ """
113
+ # Feature comment
114
+ @one
115
+ Feature: Sample
116
+
117
+ # Scenario comment
118
+ @three
119
+ Scenario: Passing
120
+ Given passing
121
+ | a | b |
122
+ | c | d |
123
+
124
+ 1 scenario (1 passed)
125
+ 1 step (1 passed)
126
+
127
+ """
128
+
129
+ Scenario: Use @-notation to specify a file containing feature file list
130
+ When I run cucumber -q @list-of-features.txt
131
+ Then it should pass with
132
+ """
133
+ # Feature comment
134
+ @one
135
+ Feature: Sample
136
+
137
+ # Scenario comment
138
+ @three
139
+ Scenario: Passing
140
+ Given passing
141
+ | a | b |
142
+ | c | d |
143
+
144
+ 1 scenario (1 passed)
145
+ 1 step (1 passed)
146
+
147
+ """
148
+
149
+ Scenario: Run all with progress formatter
150
+ When I run cucumber -q --format progress features/sample.feature
151
+ Then it should fail with
152
+ """
153
+ U.F
154
+
155
+ (::) failed steps (::)
156
+
157
+ FAIL (RuntimeError)
158
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
159
+ ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
160
+ features/sample.feature:18:in `Given failing'
161
+
162
+ Failing Scenarios:
163
+ cucumber features/sample.feature:17 # Scenario: Failing
164
+
165
+ 3 scenarios (1 failed, 1 undefined, 1 passed)
166
+ 3 steps (1 failed, 1 undefined, 1 passed)
167
+
168
+ """
169
+
170
+ Scenario: Run Norwegian
171
+ Given I am in i18n/no
172
+ When I run cucumber -q features
173
+ Then STDERR should be empty
174
+ Then it should pass with
175
+ """
176
+ # language: no
177
+ Egenskap: Summering
178
+ For å slippe å gjøre dumme feil
179
+ Som en regnskapsfører
180
+ Vil jeg kunne legge sammen
181
+
182
+ Scenario: to tall
183
+ Gitt at jeg har tastet inn 5
184
+ Og at jeg har tastet inn 7
185
+ Når jeg summerer
186
+ Så skal resultatet være 12
187
+
188
+ @iterasjon3
189
+ Scenario: tre tall
190
+ Gitt at jeg har tastet inn 5
191
+ Og at jeg har tastet inn 7
192
+ Og at jeg har tastet inn 1
193
+ Når jeg summerer
194
+ Så skal resultatet være 13
195
+
196
+ 2 scenarios (2 passed)
197
+ 9 steps (9 passed)
198
+
199
+ """
200
+
201
+ Scenario: --dry-run
202
+ When I run cucumber --dry-run --no-source features/*.feature --tags ~@lots
203
+ Then it should pass with
204
+ """
205
+ Feature: Calling undefined step
206
+
207
+ Scenario: Call directly
208
+ Given a step definition that calls an undefined step
209
+
210
+ Scenario: Call via another
211
+ Given call step "a step definition that calls an undefined step"
212
+
213
+ Feature: Failing expectation
214
+
215
+ Scenario: Failing expectation
216
+ Given failing expectation
217
+
218
+ Feature: Lots of undefined
219
+
220
+ Scenario: Implement me
221
+ Given it snows in Sahara
222
+ Given it's 40 degrees in Norway
223
+ And it's 40 degrees in Norway
224
+ When I stop procrastinating
225
+ And there is world peace
226
+
227
+ Feature: multiline
228
+
229
+ Background: I'm a multiline name
230
+ which goes on and on and on for three lines
231
+ yawn
232
+ Given passing without a table
233
+
234
+ Scenario: I'm a multiline name
235
+ which goes on and on and on for three lines
236
+ yawn
237
+ Given passing without a table
238
+
239
+ Scenario Outline: I'm a multiline name
240
+ which goes on and on and on for three lines
241
+ yawn
242
+ Given <state> without a table
243
+
244
+ Examples:
245
+ | state |
246
+ | passing |
247
+
248
+ Scenario Outline: name
249
+ Given <state> without a table
250
+
251
+ Examples: I'm a multiline name
252
+ which goes on and on and on for three lines
253
+ yawn
254
+ | state |
255
+ | passing |
256
+
257
+ Feature: Outline Sample
258
+
259
+ Scenario: I have no steps
260
+
261
+ Scenario Outline: Test state
262
+ Given <state> without a table
263
+ Given <other_state> without a table
264
+
265
+ Examples: Rainbow colours
266
+ | state | other_state |
267
+ | missing | passing |
268
+ | passing | passing |
269
+ | failing | passing |
270
+
271
+ Examples: Only passing
272
+ | state | other_state |
273
+ | passing | passing |
274
+
275
+ # Feature comment
276
+ @one
277
+ Feature: Sample
278
+
279
+ @two @three
280
+ Scenario: Missing
281
+ Given missing
282
+
283
+ # Scenario comment
284
+ @three
285
+ Scenario: Passing
286
+ Given passing
287
+ | a | b |
288
+ | c | d |
289
+
290
+ @four
291
+ Scenario: Failing
292
+ Given failing
293
+ \"\"\"
294
+ hello
295
+ \"\"\"
296
+
297
+ Feature: search examples
298
+
299
+ Background: Hantu Pisang background match
300
+ Given passing without a table
301
+
302
+ Scenario: should match Hantu Pisang
303
+ Given passing without a table
304
+
305
+ Scenario: Ignore me
306
+ Given failing without a table
307
+
308
+ Scenario Outline: Ignore me
309
+ Given <state> without a table
310
+
311
+ Examples:
312
+ | state |
313
+ | failing |
314
+
315
+ Scenario Outline: Hantu Pisang match
316
+ Given <state> without a table
317
+
318
+ Examples:
319
+ | state |
320
+ | passing |
321
+
322
+ Scenario Outline: no match in name but in examples
323
+ Given <state> without a table
324
+
325
+ Examples: Hantu Pisang
326
+ | state |
327
+ | passing |
328
+
329
+ Examples: Ignore me
330
+ | state |
331
+ | failing |
332
+
333
+ @sample_one
334
+ Feature: Tag samples
335
+
336
+ @sample_two @sample_four
337
+ Scenario: Passing
338
+ Given missing
339
+
340
+ @sample_three
341
+ Scenario Outline:
342
+ Given <state>
343
+
344
+ Examples:
345
+ | state |
346
+ | missing |
347
+
348
+ @sample_three @sample_four
349
+ Scenario: Skipped
350
+ Given missing
351
+
352
+ Feature: undefined multiline args
353
+
354
+ Scenario: pystring
355
+ Given a pystring
356
+ \"\"\"
357
+ example
358
+ \"\"\"
359
+
360
+ Scenario: table
361
+ Given a table
362
+ | table |
363
+ | example |
364
+
365
+ 26 scenarios (17 skipped, 8 undefined, 1 passed)
366
+ 42 steps (30 skipped, 12 undefined)
367
+
368
+ """
369
+
370
+ Scenario: Multiple formatters and outputs
371
+ When I run cucumber --format progress --out tmp/progress.txt --format pretty --out tmp/pretty.txt --no-source --dry-run features/lots_of_undefined.feature
372
+ Then STDERR should be empty
373
+ Then "examples/self_test/tmp/progress.txt" should contain
374
+ """
375
+ UUUUU
376
+
377
+ 1 scenario (1 undefined)
378
+ 5 steps (5 undefined)
379
+
380
+ """
381
+ And "examples/self_test/tmp/pretty.txt" should contain
382
+ """
383
+ Feature: Lots of undefined
384
+
385
+ Scenario: Implement me
386
+ Given it snows in Sahara
387
+ Given it's 40 degrees in Norway
388
+ And it's 40 degrees in Norway
389
+ When I stop procrastinating
390
+ And there is world peace
391
+
392
+ 1 scenario (1 undefined)
393
+ 5 steps (5 undefined)
394
+
395
+ """
396
+
397
+ Scenario: Run feature elements which matches a name using --name
398
+ When I run cucumber --name Pisang -q features/
399
+ Then it should pass with
400
+ """
401
+ Feature: search examples
402
+
403
+ Background: Hantu Pisang background match
404
+ Given passing without a table
405
+
406
+ Scenario: should match Hantu Pisang
407
+ Given passing without a table
408
+
409
+ Scenario Outline: Hantu Pisang match
410
+ Given <state> without a table
411
+
412
+ Examples:
413
+ | state |
414
+ | passing |
415
+
416
+ Scenario Outline: no match in name but in examples
417
+ Given <state> without a table
418
+
419
+ Examples: Hantu Pisang
420
+ | state |
421
+ | passing |
422
+
423
+ 3 scenarios (3 passed)
424
+ 6 steps (6 passed)
425
+
426
+ """
427
+
428
+ Scenario: Run a single background which matches a name using --name (Useful if there is an error in it)
429
+ When I run cucumber --name 'Hantu Pisang background' -q features/
430
+ Then it should pass with
431
+ """
432
+ Feature: search examples
433
+
434
+ Background: Hantu Pisang background match
435
+ Given passing without a table
436
+
437
+ 0 scenarios
438
+ 1 step (1 passed)
439
+
440
+ """
441
+
442
+
443
+ Scenario: Run with a tag that exists on 2 scenarios
444
+ When I run cucumber -q features --tags @three
445
+ Then it should pass with
446
+ """
447
+ # Feature comment
448
+ @one
449
+ Feature: Sample
450
+
451
+ @two @three
452
+ Scenario: Missing
453
+ Given missing
454
+
455
+ # Scenario comment
456
+ @three
457
+ Scenario: Passing
458
+ Given passing
459
+ | a | b |
460
+ | c | d |
461
+
462
+ 2 scenarios (1 undefined, 1 passed)
463
+ 2 steps (1 undefined, 1 passed)
464
+
465
+ """
466
+
467
+ Scenario: Run with a tag that exists on 1 feature
468
+ When I run cucumber -q features --tags @one
469
+ Then it should fail with
470
+ """
471
+ # Feature comment
472
+ @one
473
+ Feature: Sample
474
+
475
+ @two @three
476
+ Scenario: Missing
477
+ Given missing
478
+
479
+ # Scenario comment
480
+ @three
481
+ Scenario: Passing
482
+ Given passing
483
+ | a | b |
484
+ | c | d |
485
+
486
+ @four
487
+ Scenario: Failing
488
+ Given failing
489
+ \"\"\"
490
+ hello
491
+ \"\"\"
492
+ FAIL (RuntimeError)
493
+ ./features/step_definitions/sample_steps.rb:2:in `flunker'
494
+ ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
495
+ features/sample.feature:18:in `Given failing'
496
+
497
+ Failing Scenarios:
498
+ cucumber features/sample.feature:17 # Scenario: Failing
499
+
500
+ 3 scenarios (1 failed, 1 undefined, 1 passed)
501
+ 3 steps (1 failed, 1 undefined, 1 passed)
502
+
503
+ """
504
+
505
+ Scenario: Run with a negative tag
506
+ When I run cucumber -q features/sample.feature --no-source --dry-run --tags ~@four
507
+ Then it should pass with
508
+ """
509
+ # Feature comment
510
+ @one
511
+ Feature: Sample
512
+
513
+ @two @three
514
+ Scenario: Missing
515
+ Given missing
516
+
517
+ # Scenario comment
518
+ @three
519
+ Scenario: Passing
520
+ Given passing
521
+ | a | b |
522
+ | c | d |
523
+
524
+ 2 scenarios (1 skipped, 1 undefined)
525
+ 2 steps (1 skipped, 1 undefined)
526
+
527
+ """
528
+
529
+ Scenario: Run with limited tag count, blowing it on scenario
530
+ When I run cucumber -q features/tags_sample.feature --no-source --dry-run --tags @sample_three:1
531
+ Then it should fail with
532
+ """
533
+ @sample_one
534
+ Feature: Tag samples
535
+
536
+ @sample_three
537
+ Scenario Outline:
538
+ Given <state>
539
+
540
+ Examples:
541
+ | state |
542
+ | missing |
543
+
544
+ @sample_three @sample_four
545
+ Scenario: Skipped
546
+ Given missing
547
+
548
+ 2 scenarios (2 undefined)
549
+ 2 steps (2 undefined)
550
+
551
+ @sample_three occurred 2 times, but the limit was set to 1
552
+ features/tags_sample.feature:9
553
+ features/tags_sample.feature:16
554
+
555
+ """
556
+
557
+ Scenario: Run with limited tag count, blowing it via feature inheritance
558
+ When I run cucumber -q features/tags_sample.feature --no-source --dry-run --tags @sample_one:1
559
+ Then it should fail with
560
+ """
561
+ @sample_one
562
+ Feature: Tag samples
563
+
564
+ @sample_two @sample_four
565
+ Scenario: Passing
566
+ Given missing
567
+
568
+ @sample_three
569
+ Scenario Outline:
570
+ Given <state>
571
+
572
+ Examples:
573
+ | state |
574
+ | missing |
575
+
576
+ @sample_three @sample_four
577
+ Scenario: Skipped
578
+ Given missing
579
+
580
+ 3 scenarios (3 undefined)
581
+ 3 steps (3 undefined)
582
+
583
+ @sample_one occurred 3 times, but the limit was set to 1
584
+ features/tags_sample.feature:5
585
+ features/tags_sample.feature:9
586
+ features/tags_sample.feature:16
587
+
588
+ """
589
+
590
+ Scenario: Reformat files with --autoformat
591
+ When I run cucumber --autoformat tmp/formatted features
592
+ Then STDERR should be empty
593
+ Then "examples/self_test/tmp/formatted/features/sample.feature" should contain
594
+ """
595
+ # Feature comment
596
+ @one
597
+ Feature: Sample
598
+
599
+ @two @three
600
+ Scenario: Missing
601
+ Given missing
602
+
603
+ # Scenario comment
604
+ @three
605
+ Scenario: Passing
606
+ Given passing
607
+ | a | b |
608
+ | c | d |
609
+
610
+ @four
611
+ Scenario: Failing
612
+ Given failing
613
+ \"\"\"
614
+ hello
615
+ \"\"\"
616
+
617
+
618
+ """
619
+
620
+ Scenario: Generate PDF with pdf formatter
621
+ When I run cucumber --format pdf --out tmp/sample.pdf --dry-run features/sample.feature
622
+ Then STDERR should be empty
623
+ Then "examples/self_test/tmp/sample.pdf" should match "Pages 2"
624
+
625
+ Scenario: Run feature elements which match a name using -n
626
+ When I run cucumber -n Pisang -q features/
627
+ Then it should pass with
628
+ """
629
+ Feature: search examples
630
+
631
+ Background: Hantu Pisang background match
632
+ Given passing without a table
633
+
634
+ Scenario: should match Hantu Pisang
635
+ Given passing without a table
636
+
637
+ Scenario Outline: Hantu Pisang match
638
+ Given <state> without a table
639
+
640
+ Examples:
641
+ | state |
642
+ | passing |
643
+
644
+ Scenario Outline: no match in name but in examples
645
+ Given <state> without a table
646
+
647
+ Examples: Hantu Pisang
648
+ | state |
649
+ | passing |
650
+
651
+ 3 scenarios (3 passed)
652
+ 6 steps (6 passed)
653
+
654
+ """