casecumber 1.0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. data/.gitattributes +1 -0
  2. data/.gitignore +26 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +7 -0
  6. data/.yardopts +0 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +115 -0
  9. data/History.md +1702 -0
  10. data/LICENSE +22 -0
  11. data/README.md +25 -0
  12. data/Rakefile +12 -0
  13. data/bin/cucumber +22 -0
  14. data/cucumber.gemspec +60 -0
  15. data/cucumber.yml +20 -0
  16. data/examples/i18n/README.textile +18 -0
  17. data/examples/i18n/Rakefile +33 -0
  18. data/examples/i18n/ar/Rakefile +6 -0
  19. data/examples/i18n/ar/features/addition.feature +17 -0
  20. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +24 -0
  21. data/examples/i18n/ar/lib/calculator.rb +11 -0
  22. data/examples/i18n/bg/Rakefile +6 -0
  23. data/examples/i18n/bg/features/addition.feature +12 -0
  24. data/examples/i18n/bg/features/consecutive_calculations.feature +19 -0
  25. data/examples/i18n/bg/features/division.feature +17 -0
  26. data/examples/i18n/bg/features/step_definitons/calculator_steps.rb +24 -0
  27. data/examples/i18n/bg/features/support/env.rb +5 -0
  28. data/examples/i18n/bg/features/support/world.rb +8 -0
  29. data/examples/i18n/bg/lib/calculator.rb +24 -0
  30. data/examples/i18n/ca/Rakefile +6 -0
  31. data/examples/i18n/ca/features/step_definitons/calculator_steps.rb +21 -0
  32. data/examples/i18n/ca/features/suma.feature +17 -0
  33. data/examples/i18n/ca/lib/calculadora.rb +16 -0
  34. data/examples/i18n/da/Rakefile +6 -0
  35. data/examples/i18n/da/features/sammenlaegning.feature +18 -0
  36. data/examples/i18n/da/features/step_definitons/lommeregner_steps.rb +24 -0
  37. data/examples/i18n/da/lib/lommeregner.rb +11 -0
  38. data/examples/i18n/de/.gitignore +1 -0
  39. data/examples/i18n/de/Rakefile +6 -0
  40. data/examples/i18n/de/features/addition.feature +17 -0
  41. data/examples/i18n/de/features/division.feature +10 -0
  42. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +24 -0
  43. data/examples/i18n/de/lib/calculator.rb +14 -0
  44. data/examples/i18n/en-lol/Rakefile +4 -0
  45. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
  46. data/examples/i18n/en-lol/features/stuffing.feature +8 -0
  47. data/examples/i18n/en-lol/features/support/env.rb +7 -0
  48. data/examples/i18n/en-lol/lib/basket.rb +12 -0
  49. data/examples/i18n/en-lol/lib/belly.rb +11 -0
  50. data/examples/i18n/en/.gitignore +1 -0
  51. data/examples/i18n/en/Rakefile +6 -0
  52. data/examples/i18n/en/features/addition.feature +17 -0
  53. data/examples/i18n/en/features/division.feature +10 -0
  54. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +24 -0
  55. data/examples/i18n/en/lib/calculator.rb +14 -0
  56. data/examples/i18n/eo/.gitignore +1 -0
  57. data/examples/i18n/eo/Rakefile +6 -0
  58. data/examples/i18n/eo/features/adicio.feature +17 -0
  59. data/examples/i18n/eo/features/divido.feature +10 -0
  60. data/examples/i18n/eo/features/step_definitons/calculator_steps.rb +24 -0
  61. data/examples/i18n/eo/lib/calculator.rb +14 -0
  62. data/examples/i18n/es/Rakefile +6 -0
  63. data/examples/i18n/es/features/adicion.feature +17 -0
  64. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +21 -0
  65. data/examples/i18n/es/lib/calculador.rb +14 -0
  66. data/examples/i18n/et/Rakefile +6 -0
  67. data/examples/i18n/et/features/jagamine.feature +10 -0
  68. data/examples/i18n/et/features/liitmine.feature +17 -0
  69. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +24 -0
  70. data/examples/i18n/et/lib/kalkulaator.rb +14 -0
  71. data/examples/i18n/fi/.gitignore +1 -0
  72. data/examples/i18n/fi/Rakefile +6 -0
  73. data/examples/i18n/fi/features/jakolasku.feature +10 -0
  74. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
  75. data/examples/i18n/fi/features/yhteenlasku.feature +17 -0
  76. data/examples/i18n/fi/lib/laskin.rb +14 -0
  77. data/examples/i18n/fr/Rakefile +6 -0
  78. data/examples/i18n/fr/features/addition.feature +18 -0
  79. data/examples/i18n/fr/features/addition2.feature +17 -0
  80. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +32 -0
  81. data/examples/i18n/fr/features/support/env.rb +5 -0
  82. data/examples/i18n/fr/lib/calculatrice.rb +10 -0
  83. data/examples/i18n/he/Rakefile +6 -0
  84. data/examples/i18n/he/features/addition.feature +17 -0
  85. data/examples/i18n/he/features/division.feature +10 -0
  86. data/examples/i18n/he/features/step_definitons/calculator_steps.rb +24 -0
  87. data/examples/i18n/he/lib/calculator.rb +15 -0
  88. data/examples/i18n/hu/.gitignore +1 -0
  89. data/examples/i18n/hu/Rakefile +6 -0
  90. data/examples/i18n/hu/features/osszeadas.feature +17 -0
  91. data/examples/i18n/hu/features/osztas.feature +10 -0
  92. data/examples/i18n/hu/features/step_definitons/calculator_steps.rb +25 -0
  93. data/examples/i18n/hu/lib/calculator.rb +14 -0
  94. data/examples/i18n/id/.gitignore +1 -0
  95. data/examples/i18n/id/Rakefile +6 -0
  96. data/examples/i18n/id/features/addition.feature +17 -0
  97. data/examples/i18n/id/features/division.feature +10 -0
  98. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +24 -0
  99. data/examples/i18n/id/lib/calculator.rb +14 -0
  100. data/examples/i18n/it/Rakefile +6 -0
  101. data/examples/i18n/it/features/somma.feature +11 -0
  102. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +24 -0
  103. data/examples/i18n/it/lib/calcolatrice.rb +11 -0
  104. data/examples/i18n/ja/.gitignore +1 -0
  105. data/examples/i18n/ja/Rakefile +6 -0
  106. data/examples/i18n/ja/features/addition.feature +17 -0
  107. data/examples/i18n/ja/features/division.feature +10 -0
  108. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +19 -0
  109. data/examples/i18n/ja/features/support/env.rb +5 -0
  110. data/examples/i18n/ja/lib/calculator.rb +14 -0
  111. data/examples/i18n/ko/.gitignore +1 -0
  112. data/examples/i18n/ko/Rakefile +6 -0
  113. data/examples/i18n/ko/features/addition.feature +17 -0
  114. data/examples/i18n/ko/features/division.feature +11 -0
  115. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +24 -0
  116. data/examples/i18n/ko/lib/calculator.rb +14 -0
  117. data/examples/i18n/lt/.gitignore +1 -0
  118. data/examples/i18n/lt/Rakefile +6 -0
  119. data/examples/i18n/lt/features/addition.feature +17 -0
  120. data/examples/i18n/lt/features/division.feature +10 -0
  121. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +24 -0
  122. data/examples/i18n/lt/lib/calculator.rb +14 -0
  123. data/examples/i18n/lv/Rakefile +6 -0
  124. data/examples/i18n/lv/features/addition.feature +17 -0
  125. data/examples/i18n/lv/features/division.feature +10 -0
  126. data/examples/i18n/lv/features/step_definitons/calculator_steps.rb +24 -0
  127. data/examples/i18n/lv/lib/calculator.rb +14 -0
  128. data/examples/i18n/no/Rakefile +6 -0
  129. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +17 -0
  130. data/examples/i18n/no/features/summering.feature +19 -0
  131. data/examples/i18n/no/features/support/env.rb +6 -0
  132. data/examples/i18n/no/lib/kalkulator.rb +11 -0
  133. data/examples/i18n/pl/.gitignore +1 -0
  134. data/examples/i18n/pl/Rakefile +6 -0
  135. data/examples/i18n/pl/features/addition.feature +17 -0
  136. data/examples/i18n/pl/features/division.feature +10 -0
  137. data/examples/i18n/pl/features/step_definitons/calculator_steps.rb +24 -0
  138. data/examples/i18n/pl/features/support/env.rb +5 -0
  139. data/examples/i18n/pl/lib/calculator.rb +14 -0
  140. data/examples/i18n/pt/Rakefile +6 -0
  141. data/examples/i18n/pt/features/adicao.feature +11 -0
  142. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +20 -0
  143. data/examples/i18n/pt/features/support/env.rb +5 -0
  144. data/examples/i18n/pt/lib/calculadora.rb +10 -0
  145. data/examples/i18n/ro/Rakefile +6 -0
  146. data/examples/i18n/ro/features/adunare.feature +12 -0
  147. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +21 -0
  148. data/examples/i18n/ro/lib/calculator.rb +11 -0
  149. data/examples/i18n/ru/Rakefile +6 -0
  150. data/examples/i18n/ru/features/addition.feature +11 -0
  151. data/examples/i18n/ru/features/consecutive_calculations.feature +17 -0
  152. data/examples/i18n/ru/features/division.feature +16 -0
  153. data/examples/i18n/ru/features/step_definitons/calculator_steps.rb +19 -0
  154. data/examples/i18n/ru/features/support/env.rb +5 -0
  155. data/examples/i18n/ru/features/support/world.rb +8 -0
  156. data/examples/i18n/ru/lib/calculator.rb +24 -0
  157. data/examples/i18n/sk/.gitignore +1 -0
  158. data/examples/i18n/sk/Rakefile +6 -0
  159. data/examples/i18n/sk/features/addition.feature +17 -0
  160. data/examples/i18n/sk/features/division.feature +10 -0
  161. data/examples/i18n/sk/features/step_definitons/calculator_steps.rb +24 -0
  162. data/examples/i18n/sk/lib/calculator.rb +14 -0
  163. data/examples/i18n/sr-Cyrl/Rakefile +6 -0
  164. data/examples/i18n/sr-Cyrl/features/sabiranje.feature +18 -0
  165. data/examples/i18n/sr-Cyrl/features/step_definitons/calculator_steps.rb +20 -0
  166. data/examples/i18n/sr-Cyrl/features/support/env.rb +5 -0
  167. data/examples/i18n/sr-Cyrl/lib/calculator.rb +12 -0
  168. data/examples/i18n/sr-Latn/Rakefile +6 -0
  169. data/examples/i18n/sr-Latn/features/sabiranje.feature +18 -0
  170. data/examples/i18n/sr-Latn/features/step_definitons/calculator_steps.rb +24 -0
  171. data/examples/i18n/sr-Latn/lib/calculator.rb +12 -0
  172. data/examples/i18n/sv/Rakefile +6 -0
  173. data/examples/i18n/sv/features/step_definitons/kalkulator_steps.rb +24 -0
  174. data/examples/i18n/sv/features/summering.feature +18 -0
  175. data/examples/i18n/sv/lib/kalkulator.rb +11 -0
  176. data/examples/i18n/tr/.gitignore +1 -0
  177. data/examples/i18n/tr/Rakefile +6 -0
  178. data/examples/i18n/tr/features/bolme.feature +10 -0
  179. data/examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb +24 -0
  180. data/examples/i18n/tr/features/toplama.feature +18 -0
  181. data/examples/i18n/tr/lib/hesap_makinesi.rb +15 -0
  182. data/examples/i18n/uk/Rakefile +6 -0
  183. data/examples/i18n/uk/features/addition.feature +11 -0
  184. data/examples/i18n/uk/features/consecutive_calculations.feature +17 -0
  185. data/examples/i18n/uk/features/division.feature +16 -0
  186. data/examples/i18n/uk/features/step_definitons/calculator_steps.rb +19 -0
  187. data/examples/i18n/uk/features/support/env.rb +5 -0
  188. data/examples/i18n/uk/features/support/world.rb +8 -0
  189. data/examples/i18n/uk/lib/calculator.rb +24 -0
  190. data/examples/i18n/uz/Rakefile +6 -0
  191. data/examples/i18n/uz/features/addition.feature +10 -0
  192. data/examples/i18n/uz/features/consecutive_calculations.feature +17 -0
  193. data/examples/i18n/uz/features/division.feature +17 -0
  194. data/examples/i18n/uz/features/step_definitons/calculator_steps.rb +19 -0
  195. data/examples/i18n/uz/features/support/env.rb +5 -0
  196. data/examples/i18n/uz/features/support/world.rb +8 -0
  197. data/examples/i18n/uz/lib/calculator.rb +24 -0
  198. data/examples/i18n/zh-CN/Rakefile +4 -0
  199. data/examples/i18n/zh-CN/features/addition.feature +18 -0
  200. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +26 -0
  201. data/examples/i18n/zh-CN/lib/calculator.rb +10 -0
  202. data/examples/i18n/zh-TW/.gitignore +1 -0
  203. data/examples/i18n/zh-TW/Rakefile +4 -0
  204. data/examples/i18n/zh-TW/features/addition.feature +17 -0
  205. data/examples/i18n/zh-TW/features/division.feature +11 -0
  206. data/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +24 -0
  207. data/examples/i18n/zh-TW/lib/calculator.rb +14 -0
  208. data/examples/python/README.textile +7 -0
  209. data/examples/python/Rakefile +4 -0
  210. data/examples/python/features/fibonacci.feature +19 -0
  211. data/examples/python/features/step_definitions/fib_steps.py +11 -0
  212. data/examples/python/lib/.gitignore +1 -0
  213. data/examples/python/lib/fib.py +7 -0
  214. data/examples/ramaze/README.textile +7 -0
  215. data/examples/ramaze/Rakefile +6 -0
  216. data/examples/ramaze/app.rb +21 -0
  217. data/examples/ramaze/features/add.feature +11 -0
  218. data/examples/ramaze/features/step_definitions/add_steps.rb +15 -0
  219. data/examples/ramaze/features/support/env.rb +32 -0
  220. data/examples/ramaze/layout/default.html.erb +8 -0
  221. data/examples/ramaze/view/index.html.erb +5 -0
  222. data/examples/rspec_doubles/Rakefile +4 -0
  223. data/examples/rspec_doubles/features/mocking.feature +9 -0
  224. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +19 -0
  225. data/examples/rspec_doubles/features/support/env.rb +12 -0
  226. data/examples/ruby2python/README.textile +7 -0
  227. data/examples/ruby2python/Rakefile +4 -0
  228. data/examples/ruby2python/features/fibonacci.feature +19 -0
  229. data/examples/ruby2python/features/step_definitions/fib_steps.rb +7 -0
  230. data/examples/ruby2python/features/support/env.rb +21 -0
  231. data/examples/ruby2python/lib/.gitignore +1 -0
  232. data/examples/ruby2python/lib/fib.py +7 -0
  233. data/examples/sinatra/README.textile +13 -0
  234. data/examples/sinatra/Rakefile +6 -0
  235. data/examples/sinatra/app.rb +14 -0
  236. data/examples/sinatra/features/add.feature +11 -0
  237. data/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
  238. data/examples/sinatra/features/support/env.rb +10 -0
  239. data/examples/sinatra/views/add.erb +7 -0
  240. data/examples/sinatra/views/layout.erb +8 -0
  241. data/examples/tcl/README.textile +11 -0
  242. data/examples/tcl/Rakefile +6 -0
  243. data/examples/tcl/features/fibonnacci.feature +17 -0
  244. data/examples/tcl/features/step_definitions/fib_steps.rb +7 -0
  245. data/examples/tcl/features/support/env.rb +6 -0
  246. data/examples/tcl/src/fib.tcl +3 -0
  247. data/examples/test_unit/Rakefile +6 -0
  248. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +23 -0
  249. data/examples/test_unit/features/test_unit.feature +9 -0
  250. data/examples/v8/Rakefile +6 -0
  251. data/examples/v8/features/fibonacci.feature +43 -0
  252. data/examples/v8/features/step_definitions/fib_steps.js +49 -0
  253. data/examples/v8/features/support/env.js +14 -0
  254. data/examples/v8/lib/fibonacci.js +19 -0
  255. data/examples/watir/.gitignore +2 -0
  256. data/examples/watir/README.textile +16 -0
  257. data/examples/watir/Rakefile +12 -0
  258. data/examples/watir/cucumber.yml +1 -0
  259. data/examples/watir/features/search.feature +12 -0
  260. data/examples/watir/features/step_definitions/search_steps.rb +26 -0
  261. data/examples/watir/features/support/env.rb +32 -0
  262. data/examples/watir/features/support/screenshots.rb +47 -0
  263. data/features/background.feature +498 -0
  264. data/features/bootstrap.feature +13 -0
  265. data/features/custom_formatter.feature +41 -0
  266. data/features/execute_with_tag_filter.feature +63 -0
  267. data/features/hooks.feature +59 -0
  268. data/features/iso-8859-1.feature +6 -0
  269. data/features/json_formatter.feature +248 -0
  270. data/features/stats_formatters.feature +70 -0
  271. data/features/step_definitions/cucumber-features/cucumber_ruby_mappings.rb +168 -0
  272. data/features/step_definitions/cucumber_steps.rb +23 -0
  273. data/features/step_definitions/iso-8859-1_steps.rb +24 -0
  274. data/features/support/env.rb +26 -0
  275. data/features/tagged_hooks.feature +217 -0
  276. data/features/transforms.feature +63 -0
  277. data/fixtures/json/features/background.feature +7 -0
  278. data/fixtures/json/features/embed.feature +4 -0
  279. data/fixtures/json/features/one_passing_one_failing.feature +11 -0
  280. data/fixtures/json/features/step_definitions/steps.rb +32 -0
  281. data/fixtures/json/features/tables.feature +13 -0
  282. data/fixtures/junit/features/one_passing_one_failing.feature +8 -0
  283. data/fixtures/junit/features/pending.feature +7 -0
  284. data/fixtures/junit/features/scenario_outline.feature +9 -0
  285. data/fixtures/junit/features/some_subdirectory/one_passing_one_failing.feature +8 -0
  286. data/fixtures/junit/features/step_definitions/steps.rb +11 -0
  287. data/fixtures/self_test/.gitignore +1 -0
  288. data/fixtures/self_test/README.textile +6 -0
  289. data/fixtures/self_test/Rakefile +6 -0
  290. data/fixtures/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  291. data/fixtures/self_test/features/failing_expectation.feature +4 -0
  292. data/fixtures/self_test/features/lots_of_undefined.feature +8 -0
  293. data/fixtures/self_test/features/multiline_name.feature +27 -0
  294. data/fixtures/self_test/features/outline_sample.feature +15 -0
  295. data/fixtures/self_test/features/sample.feature +21 -0
  296. data/fixtures/self_test/features/search_sample.feature +32 -0
  297. data/fixtures/self_test/features/step_definitions/sample_steps.rb +84 -0
  298. data/fixtures/self_test/features/support/bubble_256x256.png +0 -0
  299. data/fixtures/self_test/features/support/env.rb +26 -0
  300. data/fixtures/self_test/features/tags_sample.feature +17 -0
  301. data/fixtures/self_test/features/tons_of_cukes.feature +52 -0
  302. data/fixtures/self_test/features/undefined_multiline_args.feature +12 -0
  303. data/fixtures/self_test/list-of-features.txt +1 -0
  304. data/fixtures/steps_library/features/step_definitions/steps_lib1.rb +8 -0
  305. data/fixtures/steps_library/features/step_definitions/steps_lib2.rb +8 -0
  306. data/fixtures/tickets/Rakefile +20 -0
  307. data/fixtures/tickets/features.html +138 -0
  308. data/fixtures/tickets/features/172.feature +28 -0
  309. data/fixtures/tickets/features/177/1.feature +28 -0
  310. data/fixtures/tickets/features/177/2.feature +20 -0
  311. data/fixtures/tickets/features/177/3.feature +18 -0
  312. data/fixtures/tickets/features/180.feature +7 -0
  313. data/fixtures/tickets/features/229/tagged_hooks.feature +8 -0
  314. data/fixtures/tickets/features/229/tagged_hooks.rb +14 -0
  315. data/fixtures/tickets/features/236.feature +13 -0
  316. data/fixtures/tickets/features/241.feature +12 -0
  317. data/fixtures/tickets/features/246.feature +4 -0
  318. data/fixtures/tickets/features/248.feature +11 -0
  319. data/fixtures/tickets/features/270/back.feature +14 -0
  320. data/fixtures/tickets/features/270/back.steps.rb +14 -0
  321. data/fixtures/tickets/features/272/hooks.feature +26 -0
  322. data/fixtures/tickets/features/272/hooks_steps.rb +53 -0
  323. data/fixtures/tickets/features/279/py_string_indent.feature +25 -0
  324. data/fixtures/tickets/features/279/py_string_indent.steps.rb +12 -0
  325. data/fixtures/tickets/features/279/wrong.feature_ +11 -0
  326. data/fixtures/tickets/features/301/filter_background_tagged_hooks.feature +6 -0
  327. data/fixtures/tickets/features/301/filter_background_tagged_hooks_steps.rb +12 -0
  328. data/fixtures/tickets/features/306/only_background.feature +4 -0
  329. data/fixtures/tickets/features/around_timeout.feature +6 -0
  330. data/fixtures/tickets/features/gherkin_67.feature +12 -0
  331. data/fixtures/tickets/features/gherkin_68.feature +4 -0
  332. data/fixtures/tickets/features/half_manual.feature +11 -0
  333. data/fixtures/tickets/features/lib/eatting_machine.rb +18 -0
  334. data/fixtures/tickets/features/lib/pantry.rb +20 -0
  335. data/fixtures/tickets/features/scenario_outline.feature +95 -0
  336. data/fixtures/tickets/features/step_definitons/246_steps.rb +3 -0
  337. data/fixtures/tickets/features/step_definitons/248_steps.rb +15 -0
  338. data/fixtures/tickets/features/step_definitons/around_timeout_steps.rb +9 -0
  339. data/fixtures/tickets/features/step_definitons/half_manual_steps.rb +11 -0
  340. data/fixtures/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
  341. data/fixtures/tickets/features/step_definitons/tickets_steps.rb +88 -0
  342. data/fixtures/tickets/features/table_diffing.feature +13 -0
  343. data/fixtures/tickets/features/tickets.feature +28 -0
  344. data/gem_tasks/contributors.rake +15 -0
  345. data/gem_tasks/cucumber.rake +21 -0
  346. data/gem_tasks/downloads.rb +7 -0
  347. data/gem_tasks/environment.rake +7 -0
  348. data/gem_tasks/examples.rake +11 -0
  349. data/gem_tasks/fix_cr_lf.rake +10 -0
  350. data/gem_tasks/flog.rake +4 -0
  351. data/gem_tasks/rspec.rake +8 -0
  352. data/gem_tasks/sass.rake +4 -0
  353. data/gem_tasks/stats +14 -0
  354. data/gem_tasks/versions.txt +74 -0
  355. data/gem_tasks/yard.rake +0 -0
  356. data/gem_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
  357. data/gem_tasks/yard/default/layout/html/footer.erb +5 -0
  358. data/gem_tasks/yard/default/layout/html/index.erb +1 -0
  359. data/gem_tasks/yard/default/layout/html/layout.erb +25 -0
  360. data/gem_tasks/yard/default/layout/html/logo.erb +1 -0
  361. data/gem_tasks/yard/default/layout/html/setup.rb +4 -0
  362. data/legacy_features/announce.feature +152 -0
  363. data/legacy_features/api/list_step_defs_as_json.feature +50 -0
  364. data/legacy_features/api/run_cli_main_with_existing_runtime.feature +34 -0
  365. data/legacy_features/around_hooks.feature +232 -0
  366. data/legacy_features/bug_371.feature +32 -0
  367. data/legacy_features/bug_464.feature +16 -0
  368. data/legacy_features/bug_475.feature +42 -0
  369. data/legacy_features/bug_585_tab_indentation.feature +22 -0
  370. data/legacy_features/bug_600.feature +73 -0
  371. data/legacy_features/call_steps_from_stepdefs.feature +154 -0
  372. data/legacy_features/cucumber_cli.feature +591 -0
  373. data/legacy_features/cucumber_cli_outlines.feature +117 -0
  374. data/legacy_features/default_snippets.feature +42 -0
  375. data/legacy_features/diffing.feature +25 -0
  376. data/legacy_features/drb_server_integration.feature +174 -0
  377. data/legacy_features/exception_in_after_block.feature +127 -0
  378. data/legacy_features/exception_in_after_step_block.feature +104 -0
  379. data/legacy_features/exception_in_before_block.feature +98 -0
  380. data/legacy_features/exclude_files.feature +20 -0
  381. data/legacy_features/expand.feature +60 -0
  382. data/legacy_features/html_formatter.feature +8 -0
  383. data/legacy_features/html_formatter/a.html +561 -0
  384. data/legacy_features/junit_formatter.feature +164 -0
  385. data/legacy_features/language_from_header.feature +30 -0
  386. data/legacy_features/language_help.feature +77 -0
  387. data/legacy_features/listener_debugger_formatter.feature +42 -0
  388. data/legacy_features/multiline_names.feature +44 -0
  389. data/legacy_features/post_configuration_hook.feature +50 -0
  390. data/legacy_features/profiles.feature +126 -0
  391. data/legacy_features/rake_task.feature +152 -0
  392. data/legacy_features/report_called_undefined_steps.feature +34 -0
  393. data/legacy_features/rerun_formatter.feature +52 -0
  394. data/legacy_features/simplest.feature +11 -0
  395. data/legacy_features/snippet.feature +23 -0
  396. data/legacy_features/snippets_when_using_star_keyword.feature +36 -0
  397. data/legacy_features/step_definitions/cucumber_steps.rb +172 -0
  398. data/legacy_features/step_definitions/extra_steps.rb +2 -0
  399. data/legacy_features/step_definitions/simplest_steps.rb +3 -0
  400. data/legacy_features/step_definitions/wire_steps.rb +34 -0
  401. data/legacy_features/support/env.rb +157 -0
  402. data/legacy_features/support/env.rb.simplest +7 -0
  403. data/legacy_features/support/fake_wire_server.rb +77 -0
  404. data/legacy_features/table_diffing.feature +45 -0
  405. data/legacy_features/table_mapping.feature +34 -0
  406. data/legacy_features/transform.feature +245 -0
  407. data/legacy_features/unicode_table.feature +35 -0
  408. data/legacy_features/wire_protocol.feature +332 -0
  409. data/legacy_features/wire_protocol_erb.feature +57 -0
  410. data/legacy_features/wire_protocol_table_diffing.feature +119 -0
  411. data/legacy_features/wire_protocol_tags.feature +87 -0
  412. data/legacy_features/wire_protocol_timeouts.feature +63 -0
  413. data/legacy_features/work_in_progress.feature +156 -0
  414. data/lib/README.rdoc +12 -0
  415. data/lib/autotest/cucumber.rb +6 -0
  416. data/lib/autotest/cucumber_mixin.rb +135 -0
  417. data/lib/autotest/cucumber_rails.rb +6 -0
  418. data/lib/autotest/cucumber_rails_rspec.rb +6 -0
  419. data/lib/autotest/cucumber_rails_rspec2.rb +6 -0
  420. data/lib/autotest/cucumber_rspec.rb +6 -0
  421. data/lib/autotest/cucumber_rspec2.rb +6 -0
  422. data/lib/autotest/discover.rb +9 -0
  423. data/lib/cucumber.rb +27 -0
  424. data/lib/cucumber/ast.rb +30 -0
  425. data/lib/cucumber/ast/background.rb +101 -0
  426. data/lib/cucumber/ast/comment.rb +31 -0
  427. data/lib/cucumber/ast/doc_string.rb +80 -0
  428. data/lib/cucumber/ast/examples.rb +46 -0
  429. data/lib/cucumber/ast/feature.rb +106 -0
  430. data/lib/cucumber/ast/feature_element.rb +78 -0
  431. data/lib/cucumber/ast/features.rb +35 -0
  432. data/lib/cucumber/ast/names.rb +13 -0
  433. data/lib/cucumber/ast/outline_table.rb +187 -0
  434. data/lib/cucumber/ast/scenario.rb +119 -0
  435. data/lib/cucumber/ast/scenario_outline.rb +125 -0
  436. data/lib/cucumber/ast/step.rb +126 -0
  437. data/lib/cucumber/ast/step_collection.rb +76 -0
  438. data/lib/cucumber/ast/step_invocation.rb +206 -0
  439. data/lib/cucumber/ast/table.rb +689 -0
  440. data/lib/cucumber/ast/tags.rb +28 -0
  441. data/lib/cucumber/ast/tree_walker.rb +183 -0
  442. data/lib/cucumber/ast/visitor.rb +11 -0
  443. data/lib/cucumber/broadcaster.rb +13 -0
  444. data/lib/cucumber/cli/configuration.rb +209 -0
  445. data/lib/cucumber/cli/drb_client.rb +43 -0
  446. data/lib/cucumber/cli/main.rb +78 -0
  447. data/lib/cucumber/cli/options.rb +410 -0
  448. data/lib/cucumber/cli/profile_loader.rb +91 -0
  449. data/lib/cucumber/configuration.rb +49 -0
  450. data/lib/cucumber/constantize.rb +34 -0
  451. data/lib/cucumber/core_ext/disable_mini_and_test_unit_autorun.rb +25 -0
  452. data/lib/cucumber/core_ext/instance_exec.rb +98 -0
  453. data/lib/cucumber/core_ext/proc.rb +34 -0
  454. data/lib/cucumber/core_ext/string.rb +9 -0
  455. data/lib/cucumber/errors.rb +40 -0
  456. data/lib/cucumber/feature_file.rb +101 -0
  457. data/lib/cucumber/formatter/ansicolor.rb +160 -0
  458. data/lib/cucumber/formatter/console.rb +187 -0
  459. data/lib/cucumber/formatter/cucumber.css +279 -0
  460. data/lib/cucumber/formatter/cucumber.sass +247 -0
  461. data/lib/cucumber/formatter/debug.rb +33 -0
  462. data/lib/cucumber/formatter/duration.rb +13 -0
  463. data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +83 -0
  464. data/lib/cucumber/formatter/gpretty.rb +24 -0
  465. data/lib/cucumber/formatter/html.rb +649 -0
  466. data/lib/cucumber/formatter/io.rb +31 -0
  467. data/lib/cucumber/formatter/jquery-min.js +154 -0
  468. data/lib/cucumber/formatter/json.rb +31 -0
  469. data/lib/cucumber/formatter/json_pretty.rb +13 -0
  470. data/lib/cucumber/formatter/junit.rb +155 -0
  471. data/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
  472. data/lib/cucumber/formatter/pdf.rb +244 -0
  473. data/lib/cucumber/formatter/pretty.rb +237 -0
  474. data/lib/cucumber/formatter/progress.rb +92 -0
  475. data/lib/cucumber/formatter/rerun.rb +68 -0
  476. data/lib/cucumber/formatter/stepdefs.rb +14 -0
  477. data/lib/cucumber/formatter/steps.rb +49 -0
  478. data/lib/cucumber/formatter/summary.rb +35 -0
  479. data/lib/cucumber/formatter/unicode.rb +79 -0
  480. data/lib/cucumber/formatter/usage.rb +127 -0
  481. data/lib/cucumber/js_support/js_dsl.js +57 -0
  482. data/lib/cucumber/js_support/js_language.rb +185 -0
  483. data/lib/cucumber/js_support/js_snippets.rb +27 -0
  484. data/lib/cucumber/language_support.rb +30 -0
  485. data/lib/cucumber/language_support/language_methods.rb +129 -0
  486. data/lib/cucumber/parser.rb +2 -0
  487. data/lib/cucumber/parser/gherkin_builder.rb +129 -0
  488. data/lib/cucumber/platform.rb +29 -0
  489. data/lib/cucumber/py_support/py_dsl.py +10 -0
  490. data/lib/cucumber/py_support/py_language.py +10 -0
  491. data/lib/cucumber/py_support/py_language.rb +84 -0
  492. data/lib/cucumber/rake/task.rb +225 -0
  493. data/lib/cucumber/rb_support/rb_dsl.rb +112 -0
  494. data/lib/cucumber/rb_support/rb_hook.rb +18 -0
  495. data/lib/cucumber/rb_support/rb_language.rb +195 -0
  496. data/lib/cucumber/rb_support/rb_step_definition.rb +82 -0
  497. data/lib/cucumber/rb_support/rb_transform.rb +54 -0
  498. data/lib/cucumber/rb_support/rb_world.rb +103 -0
  499. data/lib/cucumber/rb_support/regexp_argument_matcher.rb +21 -0
  500. data/lib/cucumber/rspec/disable_option_parser.rb +23 -0
  501. data/lib/cucumber/rspec/doubles.rb +16 -0
  502. data/lib/cucumber/runtime.rb +145 -0
  503. data/lib/cucumber/runtime/features_loader.rb +62 -0
  504. data/lib/cucumber/runtime/for_programming_languages.rb +67 -0
  505. data/lib/cucumber/runtime/results.rb +64 -0
  506. data/lib/cucumber/runtime/support_code.rb +203 -0
  507. data/lib/cucumber/runtime/user_interface.rb +81 -0
  508. data/lib/cucumber/step_argument.rb +9 -0
  509. data/lib/cucumber/step_definition_light.rb +20 -0
  510. data/lib/cucumber/step_definitions.rb +14 -0
  511. data/lib/cucumber/step_match.rb +115 -0
  512. data/lib/cucumber/step_mother.rb +10 -0
  513. data/lib/cucumber/wire_support/configuration.rb +31 -0
  514. data/lib/cucumber/wire_support/connection.rb +55 -0
  515. data/lib/cucumber/wire_support/request_handler.rb +32 -0
  516. data/lib/cucumber/wire_support/wire_exception.rb +32 -0
  517. data/lib/cucumber/wire_support/wire_language.rb +54 -0
  518. data/lib/cucumber/wire_support/wire_packet.rb +32 -0
  519. data/lib/cucumber/wire_support/wire_protocol.rb +44 -0
  520. data/lib/cucumber/wire_support/wire_protocol/requests.rb +123 -0
  521. data/lib/cucumber/wire_support/wire_step_definition.rb +26 -0
  522. data/spec/cucumber/ast/background_spec.rb +115 -0
  523. data/spec/cucumber/ast/doc_string_spec.rb +40 -0
  524. data/spec/cucumber/ast/feature_factory.rb +61 -0
  525. data/spec/cucumber/ast/feature_spec.rb +63 -0
  526. data/spec/cucumber/ast/outline_table_spec.rb +21 -0
  527. data/spec/cucumber/ast/scenario_outline_spec.rb +69 -0
  528. data/spec/cucumber/ast/step_spec.rb +66 -0
  529. data/spec/cucumber/ast/table_spec.rb +484 -0
  530. data/spec/cucumber/ast/tree_walker_spec.rb +11 -0
  531. data/spec/cucumber/broadcaster_spec.rb +15 -0
  532. data/spec/cucumber/cli/configuration_spec.rb +431 -0
  533. data/spec/cucumber/cli/drb_client_spec.rb +76 -0
  534. data/spec/cucumber/cli/main_spec.rb +137 -0
  535. data/spec/cucumber/cli/options_spec.rb +358 -0
  536. data/spec/cucumber/cli/profile_loader_spec.rb +35 -0
  537. data/spec/cucumber/configuration_spec.rb +23 -0
  538. data/spec/cucumber/core_ext/proc_spec.rb +68 -0
  539. data/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
  540. data/spec/cucumber/formatter/duration_spec.rb +22 -0
  541. data/spec/cucumber/formatter/html_spec.rb +256 -0
  542. data/spec/cucumber/formatter/junit_spec.rb +125 -0
  543. data/spec/cucumber/formatter/progress_spec.rb +38 -0
  544. data/spec/cucumber/formatter/spec_helper.rb +52 -0
  545. data/spec/cucumber/rake/forked_spec.rb +62 -0
  546. data/spec/cucumber/rake/rcov_spec.rb +71 -0
  547. data/spec/cucumber/rb_support/rb_language_spec.rb +282 -0
  548. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +98 -0
  549. data/spec/cucumber/rb_support/rb_transform_spec.rb +21 -0
  550. data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +18 -0
  551. data/spec/cucumber/runtime/support_code_spec.rb +112 -0
  552. data/spec/cucumber/runtime_spec.rb +41 -0
  553. data/spec/cucumber/sell_cucumbers.feature +19 -0
  554. data/spec/cucumber/step_match_spec.rb +69 -0
  555. data/spec/cucumber/wire_support/configuration_spec.rb +51 -0
  556. data/spec/cucumber/wire_support/connection_spec.rb +46 -0
  557. data/spec/cucumber/wire_support/wire_exception_spec.rb +44 -0
  558. data/spec/cucumber/wire_support/wire_language_spec.rb +47 -0
  559. data/spec/cucumber/wire_support/wire_packet_spec.rb +40 -0
  560. data/spec/cucumber/wire_support/wire_step_definition_spec.rb +20 -0
  561. data/spec/cucumber/world/pending_spec.rb +46 -0
  562. data/spec/spec_helper.rb +22 -0
  563. metadata +1044 -0
@@ -0,0 +1,49 @@
1
+ Before(function(){
2
+ fibResult = 0;
3
+ });
4
+
5
+ Before(['@do-fibonnacci-in-before-hook', '@reviewed'], function(){
6
+ fibResult = fibonacciSeries(3);
7
+ });
8
+
9
+ After(function(){
10
+ //throw 'Sabotage scenario';
11
+ });
12
+
13
+ Transform(/^(\d+)$/, function(n){
14
+ return parseInt(n);
15
+ });
16
+
17
+ When(/^I ask Javascript to calculate fibonacci up to (\d+)$/, function(n){
18
+ assertEqual(fibResult, 0);
19
+ fibResult = fibonacciSeries(n);
20
+ });
21
+
22
+ When(/^I ask Javascript to calculate fibonacci up to (\d+) with formatting$/, function(n){
23
+ assertEqual(0, fibResult)
24
+ fibResult = fibonacciSeriesFormatted(n);
25
+ });
26
+
27
+ Then(/^it should give me (\[.*\])$/, function(expectedResult){
28
+ assertEqual(expectedResult, fibResult)
29
+ });
30
+
31
+ Then(/^it should give me:$/, function(string){
32
+ assertEqual(string, fibResult);
33
+ });
34
+
35
+ Then(/^it should contain:$/, function(table){
36
+ var hashes = table.hashes;
37
+ assertMatches(hashes[0]['cell 1'], fibResult);
38
+ assertMatches(hashes[0]['cell 2'], fibResult);
39
+ });
40
+
41
+ Then(/^it should give me (\[.*\]) via calling another step definition$/, function(expectedResult){
42
+ Given("I ask Javascript to calculate fibonacci up to 2");
43
+ assertEqual(expectedResult, fibResult);
44
+ });
45
+
46
+ Then(/^it should calculate fibonacci up to (\d+) giving me (\[.*\])/, function(n, expectedResult){
47
+ steps("Given I ask Javascript to calculate fibonacci up to "+ n + "\n" +
48
+ "Then it should give me "+ expectedResult);
49
+ });
@@ -0,0 +1,14 @@
1
+ //The path is relative to the folder which contains the features folder
2
+ World(['lib/fibonacci.js']);
3
+
4
+ function assertEqual(expected, actual){
5
+ if(expected != actual){
6
+ throw 'Expected <' + expected + "> but got <" + actual + ">";
7
+ }
8
+ }
9
+
10
+ function assertMatches(expected, actual){
11
+ if(actual.indexOf(expected) == -1){
12
+ throw 'Expected <' + expected + "> to contain <" + actual + "> but it did not";
13
+ }
14
+ }
@@ -0,0 +1,19 @@
1
+ function fibonacci(n){
2
+ return n<2?n:fibonacci(n-1)+fibonacci(n-2);
3
+ }
4
+
5
+ var fibonacciSeries = function(fibonacciLimit) {
6
+ var result = Array();
7
+ var currentfibonacciValue = fibonacci(1);
8
+ var i = 2;
9
+ while(currentfibonacciValue < fibonacciLimit) {
10
+ result.push(currentfibonacciValue);
11
+ currentfibonacciValue = fibonacci(i);
12
+ i++;
13
+ }
14
+ return "[" + result.join(", ") + "]";
15
+ }
16
+
17
+ var fibonacciSeriesFormatted = function(fibonacciLimit){
18
+ return "\n'" + fibonacciSeries(fibonacciLimit) + "'\n"
19
+ }
@@ -0,0 +1,2 @@
1
+ *.html
2
+ *.png
@@ -0,0 +1,16 @@
1
+ Here you'll find examples for Watir, FireWatir, SafariWatir and Celerity.
2
+ All of these browser libraries have the same API, so the example code will
3
+ work with all of them.
4
+
5
+ Just run with:
6
+
7
+ rake cucumber
8
+
9
+ This will use Watir/IE if you're on Windows, and SafariWatir/Safari if you're on OS X.
10
+ You can force the use of FireWatir/Firefox on any platform like this:
11
+
12
+ rake features FIREWATIR=true
13
+
14
+ And finally, you can use Celerity by running in JRuby:
15
+
16
+ jruby -S rake cucumber
@@ -0,0 +1,12 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new do |t|
5
+ t.cucumber_opts = %w{--format pretty}
6
+ end
7
+
8
+ Cucumber::Rake::Task.new(:cucumber_screenshot) do |t|
9
+ t.cucumber_opts = %w{--format html --out report.html}
10
+ end
11
+
12
+ task :default => :cucumber
@@ -0,0 +1 @@
1
+ default: --format html --out report.html --format pretty
@@ -0,0 +1,12 @@
1
+ Feature: Search
2
+ In order to learn more
3
+ As an information seeker
4
+ I want to find more information
5
+
6
+ Scenario: Find what I'm looking for
7
+ Given I am on the Google search page
8
+ When I search for "cucumber github"
9
+ Then I should see
10
+ """
11
+ GitHub
12
+ """
@@ -0,0 +1,26 @@
1
+ # Full Watir API: http://wtr.rubyforge.org/rdoc/
2
+ # Full RSpec API: http://rspec.rubyforge.org/
3
+
4
+ Given 'I am on the Google search page' do
5
+ @browser.goto 'http://www.google.com/'
6
+ end
7
+
8
+ When /I search for "(.*)"/ do |query|
9
+ @browser.text_field(:name, 'q').set(query)
10
+ @browser.button(:name, 'btnG').click
11
+ end
12
+
13
+ Then /I should see/ do |text|
14
+ @browser.text.should =~ /#{text}/m
15
+ end
16
+
17
+ # To avoid step definitions that are tightly coupled to your user interface,
18
+ # consider creating classes for your pages - such as this:
19
+ # http://github.com/cucumber/cucumber/tree/v0.1.15/examples/watir/features/step_definitons/search_steps.rb
20
+ #
21
+ # You may keep the page classes along your steps, or even better, put them in separate files, e.g.
22
+ # support/pages/google_search.rb
23
+ #
24
+ # This technique is called "Page Objects", and you can read more about it here:
25
+ # http://github.com/marekj/watirloo/tree/master
26
+ # We're not using this technique here, since we want to illustrate the basics only.
@@ -0,0 +1,32 @@
1
+ begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+
3
+ if ENV['FIREWATIR']
4
+ require 'firewatir'
5
+ Browser = FireWatir::Firefox
6
+ else
7
+ case RUBY_PLATFORM
8
+ when /darwin/
9
+ require 'safariwatir'
10
+ Browser = Watir::Safari
11
+ when /win32|mingw/
12
+ require 'watir'
13
+ Browser = Watir::IE
14
+ when /java/
15
+ require 'celerity'
16
+ Browser = Celerity::Browser
17
+ else
18
+ raise "This platform is not supported (#{PLATFORM})"
19
+ end
20
+ end
21
+
22
+ # "before all"
23
+ browser = Browser.new
24
+
25
+ Before do
26
+ @browser = browser
27
+ end
28
+
29
+ # "after all"
30
+ at_exit do
31
+ browser.close
32
+ end
@@ -0,0 +1,47 @@
1
+ # This is an example of how you can set up screenshots for your
2
+ # browser testing. Just run cucumber with --format html --out report.html
3
+ #
4
+ # The code below will work on OS X or Windows (with IE Watir only).
5
+ # Adding support for other platforms should be easy - as long as there is a
6
+ # ruby library or command line tool to take pictures.
7
+ #
8
+ module Screenshots
9
+ if Cucumber::OS_X
10
+ def embed_screenshot(id)
11
+ `screencapture -t png #{id}.png`
12
+ embed("#{id}.png", "image/png")
13
+ end
14
+ elsif Cucumber::WINDOWS
15
+ # http://wtr.rubyforge.org/rdoc/classes/Watir/ScreenCapture.html
16
+ require 'watir/screen_capture'
17
+ include Watir::ScreenCapture
18
+ def embed_screenshot(id)
19
+ screen_capture("#{id}.jpg", true)
20
+ embed("#{id}.jpg", "image/jpeg")
21
+ end
22
+ else
23
+ # Other platforms...
24
+ def embed_screenshot(id)
25
+ STDERR.puts "Sorry - no screenshots on your platform yet."
26
+ end
27
+ end
28
+ end
29
+ World(Screenshots)
30
+
31
+ After do
32
+ embed_screenshot("screenshot-#{Time.new.to_i}")
33
+ end
34
+
35
+ # Other variants:
36
+ #
37
+ # Only take screenshot on failures
38
+ #
39
+ # After do |scenario|
40
+ # embed_screenshot("screenshot-#{Time.new.to_i}") if scenario.failed?
41
+ # end
42
+ #
43
+ # Only take screenshot for scenarios or features tagged @screenshot
44
+ #
45
+ # After(@screenshot) do
46
+ # embed_screenshot("screenshot-#{Time.new.to_i}")
47
+ # end
@@ -0,0 +1,498 @@
1
+ Feature: Background
2
+ In order to provide a context to my scenarios within a feature
3
+ As a feature editor
4
+ I want to write a background section in my features.
5
+
6
+ Background:
7
+ Given a file named "features/passing_background.feature" with:
8
+ """
9
+ Feature: Passing background sample
10
+
11
+ Background:
12
+ Given '10' cukes
13
+
14
+ Scenario: passing background
15
+ Then I should have '10' cukes
16
+
17
+ Scenario: another passing background
18
+ Then I should have '10' cukes
19
+ """
20
+ And a file named "features/scenario_outline_passing_background.feature" with:
21
+ """
22
+ Feature: Passing background with scenario outlines sample
23
+
24
+ Background:
25
+ Given '10' cukes
26
+
27
+ Scenario Outline: passing background
28
+ Then I should have '<count>' cukes
29
+ Examples:
30
+ |count|
31
+ | 10 |
32
+
33
+ Scenario Outline: another passing background
34
+ Then I should have '<count>' cukes
35
+ Examples:
36
+ |count|
37
+ | 10 |
38
+ """
39
+ And a file named "features/background_tagged_before_on_outline.feature" with:
40
+ """
41
+ @background_tagged_before_on_outline
42
+ Feature: Background tagged Before on Outline
43
+
44
+ Background:
45
+ Given passing without a table
46
+
47
+ Scenario Outline: passing background
48
+ Then I should have '<count>' cukes
49
+
50
+ Examples:
51
+ | count |
52
+ | 888 |
53
+ """
54
+ And a file named "features/failing_background.feature" with:
55
+ """
56
+ Feature: Failing background sample
57
+
58
+ Background:
59
+ Given failing without a table
60
+ And '10' cukes
61
+
62
+ Scenario: failing background
63
+ Then I should have '10' cukes
64
+
65
+ Scenario: another failing background
66
+ Then I should have '10' cukes
67
+ """
68
+ And a file named "features/scenario_outline_failing_background.feature" with:
69
+ """
70
+ Feature: Failing background with scenario outlines sample
71
+
72
+ Background:
73
+ Given failing without a table
74
+
75
+ Scenario Outline: failing background
76
+ Then I should have '<count>' cukes
77
+ Examples:
78
+ |count|
79
+ | 10 |
80
+
81
+ Scenario Outline: another failing background
82
+ Then I should have '<count>' cukes
83
+ Examples:
84
+ |count|
85
+ | 10 |
86
+ """
87
+ And a file named "features/pending_background.feature" with:
88
+ """
89
+ Feature: Pending background sample
90
+
91
+ Background:
92
+ Given pending
93
+
94
+ Scenario: pending background
95
+ Then I should have '10' cukes
96
+
97
+ Scenario: another pending background
98
+ Then I should have '10' cukes
99
+ """
100
+ And a file named "features/failing_background_after_success.feature" with:
101
+ """
102
+ Feature: Failing background after previously successful background sample
103
+
104
+ Background:
105
+ Given passing without a table
106
+ And '10' global cukes
107
+
108
+ Scenario: passing background
109
+ Then I should have '10' global cukes
110
+
111
+ Scenario: failing background
112
+ Then I should have '10' global cukes
113
+ """
114
+ And a file named "features/multiline_args_background.feature" with:
115
+ """
116
+ Feature: Passing background with multiline args
117
+
118
+ Background:
119
+ Given table
120
+ |a|b|
121
+ |c|d|
122
+ And multiline string
123
+ \"\"\"
124
+ I'm a cucumber and I'm okay.
125
+ I sleep all night and I test all day
126
+ \"\"\"
127
+
128
+ Scenario: passing background
129
+ Then the table should be
130
+ |a|b|
131
+ |c|d|
132
+ Then the multiline string should be
133
+ \"\"\"
134
+ I'm a cucumber and I'm okay.
135
+ I sleep all night and I test all day
136
+ \"\"\"
137
+
138
+ Scenario: another passing background
139
+ Then the table should be
140
+ |a|b|
141
+ |c|d|
142
+ Then the multiline string should be
143
+ \"\"\"
144
+ I'm a cucumber and I'm okay.
145
+ I sleep all night and I test all day
146
+ \"\"\"
147
+ """
148
+ And a file named "features/step_definitions/steps.rb" with:
149
+ """
150
+ def flunker
151
+ raise "FAIL"
152
+ end
153
+
154
+ Given /^'(.+)' cukes$/ do |cukes| x=1
155
+ raise "We already have #{@cukes} cukes!" if @cukes
156
+ @cukes = cukes
157
+ end
158
+
159
+ Given(/^passing without a table$/) do
160
+ end
161
+
162
+ Given /^failing without a table$/ do x=1
163
+ flunker
164
+ end
165
+
166
+ Given /^'(.+)' global cukes$/ do |cukes| x=1
167
+ $scenario_runs ||= 0
168
+ flunker if $scenario_runs >= 1
169
+ $cukes = cukes
170
+ $scenario_runs += 1
171
+ end
172
+
173
+ Then /^I should have '(.+)' global cukes$/ do |cukes| x=1
174
+ $cukes.should == cukes
175
+ end
176
+
177
+ Then /^I should have '(.+)' cukes$/ do |cukes| x=1
178
+ @cukes.should == cukes
179
+ end
180
+
181
+ Before('@background_tagged_before_on_outline') do
182
+ @cukes = '888'
183
+ end
184
+
185
+ After('@background_tagged_before_on_outline') do
186
+ @cukes.should == '888'
187
+ end
188
+ """
189
+
190
+ Scenario: run a specific scenario with a background
191
+ When I run `cucumber -q features/passing_background.feature:9`
192
+ Then it should pass with exactly:
193
+ """
194
+ Feature: Passing background sample
195
+
196
+ Background:
197
+ Given '10' cukes
198
+
199
+ Scenario: another passing background
200
+ Then I should have '10' cukes
201
+
202
+ 1 scenario (1 passed)
203
+ 2 steps (2 passed)
204
+ 0m0.012s
205
+
206
+ """
207
+
208
+ Scenario: run a feature with a background that passes
209
+ When I run `cucumber -q features/passing_background.feature`
210
+ Then it should pass with exactly:
211
+ """
212
+ Feature: Passing background sample
213
+
214
+ Background:
215
+ Given '10' cukes
216
+
217
+ Scenario: passing background
218
+ Then I should have '10' cukes
219
+
220
+ Scenario: another passing background
221
+ Then I should have '10' cukes
222
+
223
+ 2 scenarios (2 passed)
224
+ 4 steps (4 passed)
225
+ 0m0.012s
226
+
227
+ """
228
+
229
+ Scenario: run a feature with scenario outlines that has a background that passes
230
+ When I run `cucumber -q features/scenario_outline_passing_background.feature`
231
+ Then it should pass with exactly:
232
+ """
233
+ Feature: Passing background with scenario outlines sample
234
+
235
+ Background:
236
+ Given '10' cukes
237
+
238
+ Scenario Outline: passing background
239
+ Then I should have '<count>' cukes
240
+
241
+ Examples:
242
+ | count |
243
+ | 10 |
244
+
245
+ Scenario Outline: another passing background
246
+ Then I should have '<count>' cukes
247
+
248
+ Examples:
249
+ | count |
250
+ | 10 |
251
+
252
+ 2 scenarios (2 passed)
253
+ 4 steps (4 passed)
254
+ 0m0.012s
255
+
256
+ """
257
+
258
+ Scenario: run a feature with scenario outlines that has a background that passes
259
+ When I run `cucumber -q features/background_tagged_before_on_outline.feature`
260
+ Then it should pass with exactly:
261
+ """
262
+ @background_tagged_before_on_outline
263
+ Feature: Background tagged Before on Outline
264
+
265
+ Background:
266
+ Given passing without a table
267
+
268
+ Scenario Outline: passing background
269
+ Then I should have '<count>' cukes
270
+
271
+ Examples:
272
+ | count |
273
+ | 888 |
274
+
275
+ 1 scenario (1 passed)
276
+ 2 steps (2 passed)
277
+ 0m0.012s
278
+
279
+ """
280
+
281
+ Scenario: run a feature with a background that fails
282
+ When I run `cucumber -q features/failing_background.feature`
283
+ Then it should fail with exactly:
284
+ """
285
+ Feature: Failing background sample
286
+
287
+ Background:
288
+ Given failing without a table
289
+ FAIL (RuntimeError)
290
+ ./features/step_definitions/steps.rb:2:in `flunker'
291
+ ./features/step_definitions/steps.rb:14:in `/^failing without a table$/'
292
+ features/failing_background.feature:4:in `Given failing without a table'
293
+ And '10' cukes
294
+
295
+ Scenario: failing background
296
+ Then I should have '10' cukes
297
+
298
+ Scenario: another failing background
299
+ Then I should have '10' cukes
300
+
301
+ Failing Scenarios:
302
+ cucumber features/failing_background.feature:7
303
+
304
+ 2 scenarios (1 failed, 1 skipped)
305
+ 6 steps (1 failed, 5 skipped)
306
+ 0m0.012s
307
+
308
+ """
309
+
310
+ Scenario: run a feature with scenario outlines that has a background that fails
311
+ When I run `cucumber -q features/scenario_outline_failing_background.feature`
312
+ Then it should fail with exactly:
313
+ """
314
+ Feature: Failing background with scenario outlines sample
315
+
316
+ Background:
317
+ Given failing without a table
318
+ FAIL (RuntimeError)
319
+ ./features/step_definitions/steps.rb:2:in `flunker'
320
+ ./features/step_definitions/steps.rb:14:in `/^failing without a table$/'
321
+ features/scenario_outline_failing_background.feature:4:in `Given failing without a table'
322
+
323
+ Scenario Outline: failing background
324
+ Then I should have '<count>' cukes
325
+
326
+ Examples:
327
+ | count |
328
+ | 10 |
329
+
330
+ Scenario Outline: another failing background
331
+ Then I should have '<count>' cukes
332
+
333
+ Examples:
334
+ | count |
335
+ | 10 |
336
+
337
+ Failing Scenarios:
338
+ cucumber features/scenario_outline_failing_background.feature:6
339
+
340
+ 2 scenarios (1 failed, 1 skipped)
341
+ 4 steps (1 failed, 3 skipped)
342
+ 0m0.012s
343
+
344
+ """
345
+
346
+ Scenario: run a feature with a background that is pending
347
+ When I run `cucumber -q features/pending_background.feature`
348
+ Then it should pass with exactly:
349
+ """
350
+ Feature: Pending background sample
351
+
352
+ Background:
353
+ Given pending
354
+
355
+ Scenario: pending background
356
+ Then I should have '10' cukes
357
+
358
+ Scenario: another pending background
359
+ Then I should have '10' cukes
360
+
361
+ 2 scenarios (2 undefined)
362
+ 4 steps (2 skipped, 2 undefined)
363
+ 0m0.012s
364
+
365
+ """
366
+
367
+ Scenario: background passes with first scenario but fails with second
368
+ When I run `cucumber -q features/failing_background_after_success.feature`
369
+ Then it should fail with exactly:
370
+ """
371
+ Feature: Failing background after previously successful background sample
372
+
373
+ Background:
374
+ Given passing without a table
375
+ And '10' global cukes
376
+
377
+ Scenario: passing background
378
+ Then I should have '10' global cukes
379
+
380
+ Scenario: failing background
381
+ And '10' global cukes
382
+ FAIL (RuntimeError)
383
+ ./features/step_definitions/steps.rb:2:in `flunker'
384
+ ./features/step_definitions/steps.rb:19:in `/^'(.+)' global cukes$/'
385
+ features/failing_background_after_success.feature:5:in `And '10' global cukes'
386
+ Then I should have '10' global cukes
387
+
388
+ Failing Scenarios:
389
+ cucumber features/failing_background_after_success.feature:10
390
+
391
+ 2 scenarios (1 failed, 1 passed)
392
+ 6 steps (1 failed, 1 skipped, 4 passed)
393
+ 0m0.012s
394
+
395
+ """
396
+
397
+ Scenario: background with multline args
398
+ Given a file named "features/step_definitions/multiline_steps.rb" with:
399
+ """
400
+ Given /^table$/ do |table| x=1
401
+ @table = table
402
+ end
403
+
404
+ Given /^multiline string$/ do |string| x=1
405
+ @multiline = string
406
+ end
407
+
408
+ Then /^the table should be$/ do |table| x=1
409
+ @table.raw.should == table.raw
410
+ end
411
+
412
+ Then /^the multiline string should be$/ do |string| x=1
413
+ @multiline.should == string
414
+ end
415
+ """
416
+ When I run `cucumber -q features/multiline_args_background.feature`
417
+ Then it should pass with exactly:
418
+ """
419
+ Feature: Passing background with multiline args
420
+
421
+ Background:
422
+ Given table
423
+ | a | b |
424
+ | c | d |
425
+ And multiline string
426
+ \"\"\"
427
+ I'm a cucumber and I'm okay.
428
+ I sleep all night and I test all day
429
+ \"\"\"
430
+
431
+ Scenario: passing background
432
+ Then the table should be
433
+ | a | b |
434
+ | c | d |
435
+ Then the multiline string should be
436
+ \"\"\"
437
+ I'm a cucumber and I'm okay.
438
+ I sleep all night and I test all day
439
+ \"\"\"
440
+
441
+ Scenario: another passing background
442
+ Then the table should be
443
+ | a | b |
444
+ | c | d |
445
+ Then the multiline string should be
446
+ \"\"\"
447
+ I'm a cucumber and I'm okay.
448
+ I sleep all night and I test all day
449
+ \"\"\"
450
+
451
+ 2 scenarios (2 passed)
452
+ 8 steps (8 passed)
453
+ 0m0.012s
454
+
455
+ """
456
+
457
+ Scenario: https://rspec.lighthouseapp.com/projects/16211/tickets/329
458
+ Given a file named "features/only_background_and_hooks.feature" with:
459
+ """
460
+ Feature: woo yeah
461
+
462
+ Background: Whatever
463
+ Given whatever
464
+
465
+ """
466
+ And a file named "features/only_background_and_hooks_steps.rb" with:
467
+ """
468
+ begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
469
+
470
+ Before do
471
+ $before = true
472
+ end
473
+
474
+ After do
475
+ $after = true
476
+ end
477
+
478
+ Given(/^whatever$/) { $before.should == true; $step = true }
479
+
480
+ at_exit do
481
+ $before.should == true
482
+ $step.should == true
483
+ $after.should == true
484
+ end
485
+ """
486
+ When I run `cucumber features/only_background_and_hooks.feature`
487
+ Then it should pass with exactly:
488
+ """
489
+ Feature: woo yeah
490
+
491
+ Background: Whatever # features/only_background_and_hooks.feature:3
492
+ Given whatever # features/only_background_and_hooks_steps.rb:11
493
+
494
+ 0 scenarios
495
+ 1 step (1 passed)
496
+ 0m0.012s
497
+
498
+ """