engineyard-cucumber 0.3.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. data/History.txt +1073 -0
  2. data/License.txt +22 -0
  3. data/Manifest.txt +453 -0
  4. data/README.txt +4 -0
  5. data/Rakefile +9 -0
  6. data/bin/cucumber +17 -0
  7. data/config/hoe.rb +78 -0
  8. data/config/requirements.rb +15 -0
  9. data/cucumber.yml +2 -0
  10. data/examples/cs/README.textile +1 -0
  11. data/examples/cs/Rakefile +12 -0
  12. data/examples/cs/compile.bat +1 -0
  13. data/examples/cs/features/addition.feature +16 -0
  14. data/examples/cs/features/step_definitons/calculator_steps.rb +19 -0
  15. data/examples/cs/src/demo/Calculator.cs +20 -0
  16. data/examples/dos_line_endings/Rakefile +6 -0
  17. data/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
  18. data/examples/i18n/README.textile +18 -0
  19. data/examples/i18n/Rakefile +32 -0
  20. data/examples/i18n/ar/Rakefile +6 -0
  21. data/examples/i18n/ar/features/addition.feature +17 -0
  22. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +24 -0
  23. data/examples/i18n/ar/lib/calculator.rb +11 -0
  24. data/examples/i18n/bg/Rakefile +6 -0
  25. data/examples/i18n/bg/features/addition.feature +12 -0
  26. data/examples/i18n/bg/features/consecutive_calculations.feature +19 -0
  27. data/examples/i18n/bg/features/division.feature +17 -0
  28. data/examples/i18n/bg/features/step_definitons/calculator_steps.rb +24 -0
  29. data/examples/i18n/bg/features/support/env.rb +6 -0
  30. data/examples/i18n/bg/features/support/world.rb +8 -0
  31. data/examples/i18n/bg/lib/calculator.rb +24 -0
  32. data/examples/i18n/cat/Rakefile +6 -0
  33. data/examples/i18n/cat/features/step_definitons/calculator_steps.rb +21 -0
  34. data/examples/i18n/cat/features/suma.feature +17 -0
  35. data/examples/i18n/cat/lib/calculadora.rb +16 -0
  36. data/examples/i18n/da/Rakefile +6 -0
  37. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +24 -0
  38. data/examples/i18n/da/features/summering.feature +18 -0
  39. data/examples/i18n/da/lib/kalkulator.rb +11 -0
  40. data/examples/i18n/de/Rakefile +6 -0
  41. data/examples/i18n/de/features/addition.feature +17 -0
  42. data/examples/i18n/de/features/division.feature +10 -0
  43. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +24 -0
  44. data/examples/i18n/de/lib/calculator.rb +14 -0
  45. data/examples/i18n/en-lol/Rakefile +6 -0
  46. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
  47. data/examples/i18n/en-lol/features/stuffing.feature +8 -0
  48. data/examples/i18n/en-lol/features/support/env.rb +8 -0
  49. data/examples/i18n/en-lol/lib/basket.rb +12 -0
  50. data/examples/i18n/en-lol/lib/belly.rb +11 -0
  51. data/examples/i18n/en/Rakefile +6 -0
  52. data/examples/i18n/en/features/addition.feature +17 -0
  53. data/examples/i18n/en/features/division.feature +10 -0
  54. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +24 -0
  55. data/examples/i18n/en/lib/calculator.rb +14 -0
  56. data/examples/i18n/es/Rakefile +6 -0
  57. data/examples/i18n/es/features/adicion.feature +17 -0
  58. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +21 -0
  59. data/examples/i18n/es/lib/calculador.rb +14 -0
  60. data/examples/i18n/et/Rakefile +6 -0
  61. data/examples/i18n/et/features/jagamine.feature +10 -0
  62. data/examples/i18n/et/features/liitmine.feature +17 -0
  63. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +24 -0
  64. data/examples/i18n/et/lib/kalkulaator.rb +14 -0
  65. data/examples/i18n/fi/Rakefile +6 -0
  66. data/examples/i18n/fi/features/jakolasku.feature +10 -0
  67. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
  68. data/examples/i18n/fi/features/yhteenlasku.feature +17 -0
  69. data/examples/i18n/fi/lib/laskin.rb +14 -0
  70. data/examples/i18n/fr/Rakefile +6 -0
  71. data/examples/i18n/fr/features/addition.feature +18 -0
  72. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +25 -0
  73. data/examples/i18n/fr/lib/calculatrice.rb +10 -0
  74. data/examples/i18n/he/Rakefile +6 -0
  75. data/examples/i18n/he/features/addition.feature +17 -0
  76. data/examples/i18n/he/features/division.feature +10 -0
  77. data/examples/i18n/he/features/step_definitons/calculator_steps.rb +24 -0
  78. data/examples/i18n/he/lib/calculator.rb +14 -0
  79. data/examples/i18n/hu/Rakefile +6 -0
  80. data/examples/i18n/hu/features/addition.feature +17 -0
  81. data/examples/i18n/hu/features/division.feature +10 -0
  82. data/examples/i18n/hu/features/step_definitons/calculator_steps.rb +25 -0
  83. data/examples/i18n/hu/lib/calculator.rb +14 -0
  84. data/examples/i18n/id/Rakefile +6 -0
  85. data/examples/i18n/id/features/addition.feature +17 -0
  86. data/examples/i18n/id/features/division.feature +10 -0
  87. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +24 -0
  88. data/examples/i18n/id/lib/calculator.rb +14 -0
  89. data/examples/i18n/it/Rakefile +6 -0
  90. data/examples/i18n/it/features/somma.feature +11 -0
  91. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +24 -0
  92. data/examples/i18n/it/lib/calcolatrice.rb +11 -0
  93. data/examples/i18n/ja/Rakefile +6 -0
  94. data/examples/i18n/ja/features/addition.feature +17 -0
  95. data/examples/i18n/ja/features/division.feature +10 -0
  96. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +24 -0
  97. data/examples/i18n/ja/lib/calculator.rb +14 -0
  98. data/examples/i18n/ko/Rakefile +6 -0
  99. data/examples/i18n/ko/features/addition.feature +17 -0
  100. data/examples/i18n/ko/features/division.feature +11 -0
  101. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +24 -0
  102. data/examples/i18n/ko/lib/calculator.rb +14 -0
  103. data/examples/i18n/lt/Rakefile +6 -0
  104. data/examples/i18n/lt/features/addition.feature +17 -0
  105. data/examples/i18n/lt/features/division.feature +10 -0
  106. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +24 -0
  107. data/examples/i18n/lt/lib/calculator.rb +14 -0
  108. data/examples/i18n/lv/Rakefile +6 -0
  109. data/examples/i18n/lv/features/addition.feature +17 -0
  110. data/examples/i18n/lv/features/division.feature +10 -0
  111. data/examples/i18n/lv/features/step_definitons/calculator_steps.rb +24 -0
  112. data/examples/i18n/lv/lib/calculator.rb +14 -0
  113. data/examples/i18n/no/Rakefile +6 -0
  114. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +17 -0
  115. data/examples/i18n/no/features/summering.feature +19 -0
  116. data/examples/i18n/no/features/support/env.rb +6 -0
  117. data/examples/i18n/no/lib/kalkulator.rb +11 -0
  118. data/examples/i18n/pl/Rakefile +6 -0
  119. data/examples/i18n/pl/features/addition.feature +17 -0
  120. data/examples/i18n/pl/features/division.feature +10 -0
  121. data/examples/i18n/pl/features/step_definitons/calculator_steps.rb +24 -0
  122. data/examples/i18n/pl/features/support/env.rb +6 -0
  123. data/examples/i18n/pl/lib/calculator.rb +14 -0
  124. data/examples/i18n/pt/Rakefile +6 -0
  125. data/examples/i18n/pt/features/adicao.feature +11 -0
  126. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +20 -0
  127. data/examples/i18n/pt/features/support/env.rb +6 -0
  128. data/examples/i18n/pt/lib/calculadora.rb +10 -0
  129. data/examples/i18n/ro/Rakefile +6 -0
  130. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +24 -0
  131. data/examples/i18n/ro/features/suma.feature +11 -0
  132. data/examples/i18n/ro/lib/calculator.rb +11 -0
  133. data/examples/i18n/ru/Rakefile +6 -0
  134. data/examples/i18n/ru/features/addition.feature +11 -0
  135. data/examples/i18n/ru/features/consecutive_calculations.feature +17 -0
  136. data/examples/i18n/ru/features/division.feature +16 -0
  137. data/examples/i18n/ru/features/step_definitons/calculator_steps.rb +19 -0
  138. data/examples/i18n/ru/features/support/env.rb +6 -0
  139. data/examples/i18n/ru/features/support/world.rb +8 -0
  140. data/examples/i18n/ru/lib/calculator.rb +24 -0
  141. data/examples/i18n/se/Rakefile +6 -0
  142. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +24 -0
  143. data/examples/i18n/se/features/summering.feature +18 -0
  144. data/examples/i18n/se/lib/kalkulator.rb +11 -0
  145. data/examples/i18n/sk/Rakefile +6 -0
  146. data/examples/i18n/sk/features/addition.feature +17 -0
  147. data/examples/i18n/sk/features/division.feature +10 -0
  148. data/examples/i18n/sk/features/step_definitons/calculator_steps.rb +24 -0
  149. data/examples/i18n/sk/lib/calculator.rb +14 -0
  150. data/examples/i18n/uz/Rakefile +6 -0
  151. data/examples/i18n/uz/features/addition.feature +10 -0
  152. data/examples/i18n/uz/features/consecutive_calculations.feature +17 -0
  153. data/examples/i18n/uz/features/division.feature +17 -0
  154. data/examples/i18n/uz/features/step_definitons/calculator_steps.rb +19 -0
  155. data/examples/i18n/uz/features/support/env.rb +6 -0
  156. data/examples/i18n/uz/features/support/world.rb +8 -0
  157. data/examples/i18n/uz/lib/calculator.rb +24 -0
  158. data/examples/i18n/zh-CN/Rakefile +6 -0
  159. data/examples/i18n/zh-CN/features/addition.feature +18 -0
  160. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +26 -0
  161. data/examples/i18n/zh-CN/lib/calculator.rb +10 -0
  162. data/examples/i18n/zh-TW/Rakefile +6 -0
  163. data/examples/i18n/zh-TW/features/addition.feature +17 -0
  164. data/examples/i18n/zh-TW/features/division.feature +11 -0
  165. data/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +24 -0
  166. data/examples/i18n/zh-TW/lib/calculator.rb +14 -0
  167. data/examples/java/README.textile +18 -0
  168. data/examples/java/build.xml +33 -0
  169. data/examples/java/features/hello.feature +11 -0
  170. data/examples/java/features/step_definitons/hello_steps.rb +23 -0
  171. data/examples/java/features/step_definitons/tree_steps.rb +14 -0
  172. data/examples/java/features/tree.feature +9 -0
  173. data/examples/java/src/cucumber/demo/Hello.java +16 -0
  174. data/examples/junit/features/one_passing_one_failing.feature +8 -0
  175. data/examples/junit/features/pending.feature +5 -0
  176. data/examples/junit/features/step_definitions/steps.rb +11 -0
  177. data/examples/pure_java/README.textile +5 -0
  178. data/examples/python/features/fibonacci.feature +19 -0
  179. data/examples/python/features/step_definitions/fib_steps.py +3 -0
  180. data/examples/python/features/step_definitions/fib_steps.rb +7 -0
  181. data/examples/python/features/support/env.rb +21 -0
  182. data/examples/python/lib/fib.py +7 -0
  183. data/examples/selenium/Rakefile +6 -0
  184. data/examples/selenium/features/search.feature +9 -0
  185. data/examples/selenium/features/step_definitons/search_steps.rb +13 -0
  186. data/examples/selenium/features/support/env.rb +19 -0
  187. data/examples/selenium_webrat/Rakefile +6 -0
  188. data/examples/selenium_webrat/config.ru +0 -0
  189. data/examples/selenium_webrat/features/search.feature +9 -0
  190. data/examples/selenium_webrat/features/step_definitons/search_steps.rb +13 -0
  191. data/examples/selenium_webrat/features/support/env.rb +45 -0
  192. data/examples/self_test/README.textile +6 -0
  193. data/examples/self_test/Rakefile +6 -0
  194. data/examples/self_test/features/background/background_tagged_before_on_outline.feature +12 -0
  195. data/examples/self_test/features/background/background_with_name.feature +7 -0
  196. data/examples/self_test/features/background/failing_background.feature +12 -0
  197. data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  198. data/examples/self_test/features/background/multiline_args_background.feature +32 -0
  199. data/examples/self_test/features/background/passing_background.feature +10 -0
  200. data/examples/self_test/features/background/pending_background.feature +10 -0
  201. data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  202. data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  203. data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  204. data/examples/self_test/features/failing_expectation.feature +4 -0
  205. data/examples/self_test/features/lots_of_undefined.feature +8 -0
  206. data/examples/self_test/features/multiline_name.feature +27 -0
  207. data/examples/self_test/features/outline_sample.feature +15 -0
  208. data/examples/self_test/features/sample.feature +21 -0
  209. data/examples/self_test/features/search_sample.feature +32 -0
  210. data/examples/self_test/features/step_definitions/sample_steps.rb +93 -0
  211. data/examples/self_test/features/support/env.rb +24 -0
  212. data/examples/self_test/features/tags_sample.feature +17 -0
  213. data/examples/self_test/features/tons_of_cukes.feature +52 -0
  214. data/examples/self_test/features/transform_sample.feature +10 -0
  215. data/examples/self_test/features/undefined_multiline_args.feature +12 -0
  216. data/examples/self_test/list-of-features.txt +1 -0
  217. data/examples/sinatra/README.textile +13 -0
  218. data/examples/sinatra/Rakefile +6 -0
  219. data/examples/sinatra/app.rb +14 -0
  220. data/examples/sinatra/features/add.feature +11 -0
  221. data/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
  222. data/examples/sinatra/features/support/env.rb +32 -0
  223. data/examples/sinatra/views/add.erb +5 -0
  224. data/examples/sinatra/views/layout.erb +8 -0
  225. data/examples/steps_library/features/step_definitions/steps_lib1.rb +8 -0
  226. data/examples/steps_library/features/step_definitions/steps_lib2.rb +8 -0
  227. data/examples/test_unit/Rakefile +6 -0
  228. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +23 -0
  229. data/examples/test_unit/features/test_unit.feature +9 -0
  230. data/examples/tickets/Rakefile +16 -0
  231. data/examples/tickets/features/172.feature +28 -0
  232. data/examples/tickets/features/177/1.feature +29 -0
  233. data/examples/tickets/features/177/2.feature +21 -0
  234. data/examples/tickets/features/177/3.feature +18 -0
  235. data/examples/tickets/features/180.feature +7 -0
  236. data/examples/tickets/features/229/tagged_hooks.feature +8 -0
  237. data/examples/tickets/features/229/tagged_hooks.rb +14 -0
  238. data/examples/tickets/features/236.feature +13 -0
  239. data/examples/tickets/features/241.feature +13 -0
  240. data/examples/tickets/features/246.feature +4 -0
  241. data/examples/tickets/features/248.feature +11 -0
  242. data/examples/tickets/features/270/back.feature +14 -0
  243. data/examples/tickets/features/270/back.steps.rb +14 -0
  244. data/examples/tickets/features/272/hooks.feature +26 -0
  245. data/examples/tickets/features/272/hooks_steps.rb +53 -0
  246. data/examples/tickets/features/279/py_string_indent.feature +25 -0
  247. data/examples/tickets/features/279/py_string_indent.steps.rb +12 -0
  248. data/examples/tickets/features/279/wrong.feature_ +11 -0
  249. data/examples/tickets/features/301/filter_background_tagged_hooks.feature +6 -0
  250. data/examples/tickets/features/301/filter_background_tagged_hooks_steps.rb +12 -0
  251. data/examples/tickets/features/306/only_background.feature +4 -0
  252. data/examples/tickets/features/lib/eatting_machine.rb +18 -0
  253. data/examples/tickets/features/lib/pantry.rb +20 -0
  254. data/examples/tickets/features/scenario_outline.feature +95 -0
  255. data/examples/tickets/features/step_definitons/246_steps.rb +3 -0
  256. data/examples/tickets/features/step_definitons/248_steps.rb +15 -0
  257. data/examples/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
  258. data/examples/tickets/features/step_definitons/tickets_steps.rb +81 -0
  259. data/examples/tickets/features/table_diffing.feature +13 -0
  260. data/examples/tickets/features/tickets.feature +28 -0
  261. data/examples/watir/README.textile +16 -0
  262. data/examples/watir/Rakefile +6 -0
  263. data/examples/watir/features/search.feature +12 -0
  264. data/examples/watir/features/step_definitons/search_steps.rb +26 -0
  265. data/examples/watir/features/support/env.rb +32 -0
  266. data/features/background.feature +311 -0
  267. data/features/bug_371.feature +32 -0
  268. data/features/cucumber_cli.feature +667 -0
  269. data/features/cucumber_cli_diff_disabled.feature +54 -0
  270. data/features/cucumber_cli_outlines.feature +109 -0
  271. data/features/custom_formatter.feature +11 -0
  272. data/features/drb_server_integration.feature +173 -0
  273. data/features/exception_in_after_block.feature +102 -0
  274. data/features/exception_in_after_step_block.feature +104 -0
  275. data/features/exception_in_before_block.feature +47 -0
  276. data/features/exclude_files.feature +20 -0
  277. data/features/expand.feature +49 -0
  278. data/features/html_formatter.feature +7 -0
  279. data/features/html_formatter/a.html +183 -0
  280. data/features/junit_formatter.feature +89 -0
  281. data/features/language_from_header.feature +30 -0
  282. data/features/multiline_names.feature +43 -0
  283. data/features/post_configuration_hook.feature +37 -0
  284. data/features/profiles.feature +112 -0
  285. data/features/rake_task.feature +178 -0
  286. data/features/report_called_undefined_steps.feature +35 -0
  287. data/features/snippet.feature +22 -0
  288. data/features/step_definitions/cucumber_steps.rb +154 -0
  289. data/features/step_definitions/extra_steps.rb +2 -0
  290. data/features/steps_formatter.feature +25 -0
  291. data/features/support/env.rb +139 -0
  292. data/features/table_diffing.feature +45 -0
  293. data/features/transform.feature +24 -0
  294. data/features/unicode_table.feature +35 -0
  295. data/features/usage.feature +132 -0
  296. data/features/work_in_progress.feature +158 -0
  297. data/gem_tasks/contributors.rake +12 -0
  298. data/gem_tasks/deployment.rake +11 -0
  299. data/gem_tasks/environment.rake +7 -0
  300. data/gem_tasks/features.rake +11 -0
  301. data/gem_tasks/fix_cr_lf.rake +10 -0
  302. data/gem_tasks/flog.rake +4 -0
  303. data/gem_tasks/gemspec.rake +10 -0
  304. data/gem_tasks/rspec.rake +45 -0
  305. data/gem_tasks/sass.rake +4 -0
  306. data/gem_tasks/sdoc.rake +7 -0
  307. data/lib/README.rdoc +12 -0
  308. data/lib/autotest/cucumber.rb +6 -0
  309. data/lib/autotest/cucumber_mixin.rb +125 -0
  310. data/lib/autotest/cucumber_rails.rb +6 -0
  311. data/lib/autotest/cucumber_rails_rspec.rb +6 -0
  312. data/lib/autotest/cucumber_rspec.rb +6 -0
  313. data/lib/autotest/discover.rb +9 -0
  314. data/lib/cucumber.rb +10 -0
  315. data/lib/cucumber/ast.rb +29 -0
  316. data/lib/cucumber/ast/background.rb +63 -0
  317. data/lib/cucumber/ast/comment.rb +31 -0
  318. data/lib/cucumber/ast/examples.rb +32 -0
  319. data/lib/cucumber/ast/feature.rb +81 -0
  320. data/lib/cucumber/ast/feature_element.rb +61 -0
  321. data/lib/cucumber/ast/features.rb +40 -0
  322. data/lib/cucumber/ast/outline_table.rb +146 -0
  323. data/lib/cucumber/ast/py_string.rb +57 -0
  324. data/lib/cucumber/ast/scenario.rb +108 -0
  325. data/lib/cucumber/ast/scenario_outline.rb +96 -0
  326. data/lib/cucumber/ast/step.rb +116 -0
  327. data/lib/cucumber/ast/step_collection.rb +76 -0
  328. data/lib/cucumber/ast/step_invocation.rb +166 -0
  329. data/lib/cucumber/ast/table.rb +626 -0
  330. data/lib/cucumber/ast/tags.rb +44 -0
  331. data/lib/cucumber/ast/visitor.rb +115 -0
  332. data/lib/cucumber/broadcaster.rb +13 -0
  333. data/lib/cucumber/cli/configuration.rb +190 -0
  334. data/lib/cucumber/cli/drb_client.rb +26 -0
  335. data/lib/cucumber/cli/language_help_formatter.rb +61 -0
  336. data/lib/cucumber/cli/main.rb +116 -0
  337. data/lib/cucumber/cli/options.rb +394 -0
  338. data/lib/cucumber/cli/profile_loader.rb +70 -0
  339. data/lib/cucumber/constantize.rb +28 -0
  340. data/lib/cucumber/core_ext/instance_exec.rb +93 -0
  341. data/lib/cucumber/core_ext/proc.rb +29 -0
  342. data/lib/cucumber/core_ext/string.rb +48 -0
  343. data/lib/cucumber/feature_file.rb +54 -0
  344. data/lib/cucumber/filter.rb +52 -0
  345. data/lib/cucumber/formatter/ansicolor.rb +143 -0
  346. data/lib/cucumber/formatter/color_io.rb +23 -0
  347. data/lib/cucumber/formatter/console.rb +185 -0
  348. data/lib/cucumber/formatter/cucumber.css +132 -0
  349. data/lib/cucumber/formatter/cucumber.sass +139 -0
  350. data/lib/cucumber/formatter/duration.rb +13 -0
  351. data/lib/cucumber/formatter/html.rb +261 -0
  352. data/lib/cucumber/formatter/junit.rb +121 -0
  353. data/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
  354. data/lib/cucumber/formatter/pdf.rb +217 -0
  355. data/lib/cucumber/formatter/pretty.rb +222 -0
  356. data/lib/cucumber/formatter/profile.rb +78 -0
  357. data/lib/cucumber/formatter/progress.rb +67 -0
  358. data/lib/cucumber/formatter/rerun.rb +46 -0
  359. data/lib/cucumber/formatter/steps.rb +50 -0
  360. data/lib/cucumber/formatter/tag_cloud.rb +29 -0
  361. data/lib/cucumber/formatter/unicode.rb +35 -0
  362. data/lib/cucumber/formatter/usage.rb +86 -0
  363. data/lib/cucumber/formatters/unicode.rb +7 -0
  364. data/lib/cucumber/language_support.rb +30 -0
  365. data/lib/cucumber/language_support/language_methods.rb +75 -0
  366. data/lib/cucumber/language_support/step_definition_methods.rb +46 -0
  367. data/lib/cucumber/languages.yml +561 -0
  368. data/lib/cucumber/parser.rb +6 -0
  369. data/lib/cucumber/parser/feature.rb +1838 -0
  370. data/lib/cucumber/parser/feature.tt +351 -0
  371. data/lib/cucumber/parser/i18n.tt +42 -0
  372. data/lib/cucumber/parser/natural_language.rb +72 -0
  373. data/lib/cucumber/parser/table.rb +417 -0
  374. data/lib/cucumber/parser/table.tt +71 -0
  375. data/lib/cucumber/parser/treetop_ext.rb +53 -0
  376. data/lib/cucumber/platform.rb +27 -0
  377. data/lib/cucumber/py_support/py_dsl.py +8 -0
  378. data/lib/cucumber/py_support/py_language.py +2 -0
  379. data/lib/cucumber/py_support/py_language.rb +68 -0
  380. data/lib/cucumber/rails/rspec.rb +10 -0
  381. data/lib/cucumber/rails/world.rb +100 -0
  382. data/lib/cucumber/rake/task.rb +241 -0
  383. data/lib/cucumber/rb_support/rb_dsl.rb +100 -0
  384. data/lib/cucumber/rb_support/rb_hook.rb +18 -0
  385. data/lib/cucumber/rb_support/rb_language.rb +153 -0
  386. data/lib/cucumber/rb_support/rb_step_definition.rb +60 -0
  387. data/lib/cucumber/rb_support/rb_world.rb +93 -0
  388. data/lib/cucumber/rspec_neuter.rb +23 -0
  389. data/lib/cucumber/step_match.rb +61 -0
  390. data/lib/cucumber/step_mother.rb +307 -0
  391. data/lib/cucumber/version.rb +10 -0
  392. data/lib/cucumber/webrat/element_locator.rb +87 -0
  393. data/lib/cucumber/webrat/table_locator.rb +1 -0
  394. data/rails_generators/cucumber/USAGE +11 -0
  395. data/rails_generators/cucumber/cucumber_generator.rb +70 -0
  396. data/rails_generators/cucumber/templates/cucumber +9 -0
  397. data/rails_generators/cucumber/templates/cucumber.rake +36 -0
  398. data/rails_generators/cucumber/templates/cucumber_environment.rb +26 -0
  399. data/rails_generators/cucumber/templates/env.rb +27 -0
  400. data/rails_generators/cucumber/templates/paths.rb +27 -0
  401. data/rails_generators/cucumber/templates/spork_env.rb +35 -0
  402. data/rails_generators/cucumber/templates/webrat_steps.rb +236 -0
  403. data/rails_generators/feature/USAGE +12 -0
  404. data/rails_generators/feature/feature_generator.rb +40 -0
  405. data/rails_generators/feature/templates/feature.erb +31 -0
  406. data/rails_generators/feature/templates/steps.erb +14 -0
  407. data/spec/cucumber/ast/background_spec.rb +60 -0
  408. data/spec/cucumber/ast/feature_element_spec.rb +40 -0
  409. data/spec/cucumber/ast/feature_factory.rb +62 -0
  410. data/spec/cucumber/ast/feature_spec.rb +44 -0
  411. data/spec/cucumber/ast/py_string_spec.rb +51 -0
  412. data/spec/cucumber/ast/scenario_outline_spec.rb +72 -0
  413. data/spec/cucumber/ast/scenario_spec.rb +43 -0
  414. data/spec/cucumber/ast/step_collection_spec.rb +17 -0
  415. data/spec/cucumber/ast/step_spec.rb +66 -0
  416. data/spec/cucumber/ast/table_spec.rb +394 -0
  417. data/spec/cucumber/broadcaster_spec.rb +15 -0
  418. data/spec/cucumber/cli/configuration_spec.rb +396 -0
  419. data/spec/cucumber/cli/drb_client_spec.rb +77 -0
  420. data/spec/cucumber/cli/main_spec.rb +172 -0
  421. data/spec/cucumber/cli/options_spec.rb +331 -0
  422. data/spec/cucumber/cli/profile_loader_spec.rb +10 -0
  423. data/spec/cucumber/core_ext/proc_spec.rb +68 -0
  424. data/spec/cucumber/core_ext/string_spec.rb +43 -0
  425. data/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
  426. data/spec/cucumber/formatter/color_io_spec.rb +27 -0
  427. data/spec/cucumber/formatter/duration_spec.rb +22 -0
  428. data/spec/cucumber/formatter/html_spec.rb +18 -0
  429. data/spec/cucumber/formatter/progress_spec.rb +33 -0
  430. data/spec/cucumber/parser/feature_parser_spec.rb +396 -0
  431. data/spec/cucumber/parser/table_parser_spec.rb +52 -0
  432. data/spec/cucumber/rails/stubs/mini_rails.rb +18 -0
  433. data/spec/cucumber/rails/stubs/test_help.rb +1 -0
  434. data/spec/cucumber/rails/world_spec.rb +16 -0
  435. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +123 -0
  436. data/spec/cucumber/sell_cucumbers.feature +19 -0
  437. data/spec/cucumber/step_mother_spec.rb +282 -0
  438. data/spec/cucumber/treetop_parser/empty_feature.feature +4 -0
  439. data/spec/cucumber/treetop_parser/empty_scenario.feature +9 -0
  440. data/spec/cucumber/treetop_parser/empty_scenario_outline.feature +3 -0
  441. data/spec/cucumber/treetop_parser/fit_scenario.feature +8 -0
  442. data/spec/cucumber/treetop_parser/given_scenario.feature +9 -0
  443. data/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +7 -0
  444. data/spec/cucumber/treetop_parser/multiline_steps.feature +17 -0
  445. data/spec/cucumber/treetop_parser/multiple_tables.feature +27 -0
  446. data/spec/cucumber/treetop_parser/scenario_outline.feature +16 -0
  447. data/spec/cucumber/treetop_parser/spaces.feature +12 -0
  448. data/spec/cucumber/treetop_parser/test_dos.feature +25 -0
  449. data/spec/cucumber/treetop_parser/with_comments.feature +23 -0
  450. data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  451. data/spec/cucumber/world/pending_spec.rb +46 -0
  452. data/spec/spec.opts +4 -0
  453. data/spec/spec_helper.rb +18 -0
  454. metadata +561 -0
@@ -0,0 +1,29 @@
1
+ module Cucumber
2
+ module Formatter
3
+ # The formatter used for <tt>--format tag_cloud</tt>
4
+ # Custom formatter that prints a tag cloud as a table.
5
+ class TagCloud < Cucumber::Ast::Visitor
6
+ def initialize(step_mother, io, options)
7
+ super(step_mother)
8
+ @io = io
9
+ @options = options
10
+ @counts = Hash.new{|h,k| h[k] = 0}
11
+ end
12
+
13
+ def visit_features(features)
14
+ super
15
+ print_summary(features)
16
+ end
17
+
18
+ def visit_tag_name(tag_name)
19
+ @counts[tag_name] += 1
20
+ end
21
+
22
+ def print_summary(features)
23
+ matrix = @counts.to_a.sort{|paira, pairb| paira[0] <=> pairb[0]}.transpose
24
+ table = Cucumber::Ast::Table.new(matrix)
25
+ Cucumber::Formatter::Pretty.new(@step_mother, @io, {}).visit_multiline_arg(table)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,35 @@
1
+ # Require this file if you need Unicode support.
2
+ require 'cucumber/platform'
3
+ require 'cucumber/formatter/ansicolor'
4
+
5
+ $KCODE='u' unless Cucumber::RUBY_1_9
6
+
7
+ if Cucumber::WINDOWS_MRI && `chcp` =~ /(\d+)/
8
+ codepage = $1.to_i
9
+ codepages = (1251..1252)
10
+
11
+ if codepages.include?(codepage)
12
+ Cucumber::CODEPAGE = "cp#{codepage}"
13
+
14
+ require 'iconv'
15
+ module Kernel #:nodoc:
16
+ alias cucumber_print print
17
+ def print(*a)
18
+ begin
19
+ cucumber_print(*Iconv.iconv(Cucumber::CODEPAGE, "UTF-8", *a))
20
+ rescue Iconv::IllegalSequence
21
+ cucumber_print(*a)
22
+ end
23
+ end
24
+
25
+ alias cucumber_puts puts
26
+ def puts(*a)
27
+ begin
28
+ cucumber_puts(*Iconv.iconv(Cucumber::CODEPAGE, "UTF-8", *a))
29
+ rescue Iconv::IllegalSequence
30
+ cucumber_puts(*a)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,86 @@
1
+ require 'cucumber/formatter/progress'
2
+
3
+ module Cucumber
4
+ module Formatter
5
+ # The formatter used for <tt>--format usage</tt>
6
+ class Usage < Ast::Visitor
7
+ include Console
8
+
9
+ def initialize(step_mother, io, options)
10
+ super(step_mother)
11
+ @io = io
12
+ @options = options
13
+ @step_definitions = Hash.new { |h,step_definition| h[step_definition] = [] }
14
+ @all_step_definitions = step_mother.step_definitions.dup
15
+ @locations = []
16
+ end
17
+
18
+ def visit_features(features)
19
+ super
20
+ print_summary(features)
21
+ end
22
+
23
+ def visit_step(step)
24
+ @step = step
25
+ super
26
+ end
27
+
28
+ def visit_step_name(keyword, step_match, status, source_indent, background)
29
+ if step_match.step_definition
30
+ location = @step.file_colon_line
31
+ return if @locations.index(location)
32
+ @locations << location
33
+
34
+ description = format_step(keyword, step_match, status, nil)
35
+ length = (keyword + step_match.format_args).jlength
36
+ @step_definitions[step_match.step_definition] << [step_match, description, length, location]
37
+ @all_step_definitions.delete(step_match.step_definition)
38
+ end
39
+ end
40
+
41
+ def print_summary(features)
42
+ sorted_defs = @step_definitions.keys.sort_by{|step_definition| step_definition.backtrace_line}
43
+
44
+ sorted_defs.each do |step_definition|
45
+ step_matches_and_descriptions = @step_definitions[step_definition].sort_by do |step_match_and_description|
46
+ step_match = step_match_and_description[0]
47
+ step_match.step_definition.regexp.inspect
48
+ end
49
+
50
+ step_matches = step_matches_and_descriptions.map{|step_match_and_description| step_match_and_description[0]}
51
+
52
+ lengths = step_matches_and_descriptions.map do |step_match_and_description|
53
+ step_match_and_description[2]
54
+ end
55
+ lengths << step_definition.text_length
56
+ max_length = lengths.max
57
+
58
+ @io.print step_definition.regexp.inspect
59
+ @io.puts format_string(" # #{step_definition.file_colon_line}".indent(max_length - step_definition.text_length), :comment)
60
+ da = step_matches_and_descriptions.map do |step_match_and_description|
61
+ step_match = step_match_and_description[0]
62
+ description = step_match_and_description[1]
63
+ length = step_match_and_description[2]
64
+ file_colon_line = step_match_and_description[3]
65
+ " #{description}" + format_string(" # #{file_colon_line}".indent(max_length - length), :comment)
66
+ end
67
+ da.sort.each{|d| puts d}
68
+ end
69
+
70
+ print_unused_step_definitions
71
+ end
72
+
73
+ def print_unused_step_definitions
74
+ if @all_step_definitions.any?
75
+ max_length = @all_step_definitions.map{|step_definition| step_definition.text_length}.max
76
+
77
+ @io.puts format_string("(::) UNUSED (::)", :failed)
78
+ @all_step_definitions.each do |step_definition|
79
+ @io.print format_string(step_definition.regexp.inspect, :failed)
80
+ @io.puts format_string(" # #{step_definition.file_colon_line}".indent(max_length - step_definition.text_length), :comment)
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,7 @@
1
+ STDERR.puts <<-EOF
2
+ WARNING: The cucumber/formatters/unicode file is deprecated.
3
+ It will be removed in version 0.4.0
4
+ Please use cucumber/formatter/unicode instead
5
+ EOF
6
+ # This is for backwards compatibility
7
+ require 'cucumber/formatter/unicode'
@@ -0,0 +1,30 @@
1
+ module Cucumber
2
+ # This module defines the API for programming panguage support in Cucumber.
3
+ # While Cucumber itself is written in Ruby, any programming language can
4
+ # be supported by implementing this API.
5
+ #
6
+ # For the sake of illustration we'll consider an imaginary language called
7
+ # _why. _why files have the .why extension, so we need to put support for
8
+ # this language in the <tt>Cucumber::WhySupport::WhyLanguage</tt>. This
9
+ # class must be defined in a file called <tt>cucumber/why_support/why_language.rb</tt>
10
+ # and be available on Ruby's <tt>$LOAD_PATH</tt>:
11
+ #
12
+ # module Cucumber
13
+ # module WhySupport
14
+ # class WhyLanguage
15
+ #
16
+ # # Uses whatever available language bridge to load
17
+ # # +why_file+ and returns an Array of StepDefinition.
18
+ # def load_code_file(why_file)
19
+ # end
20
+ # end
21
+ # end
22
+ # end
23
+ #
24
+ # Each language implementation manages its own hooks, and must execute them
25
+ # at appropriate times.
26
+ #
27
+ #
28
+ module LanguageSupport
29
+ end
30
+ end
@@ -0,0 +1,75 @@
1
+ module Cucumber
2
+ module LanguageSupport
3
+ module LanguageMethods
4
+ def before(scenario)
5
+ begin_scenario
6
+ execute_before(scenario)
7
+ end
8
+
9
+ def after(scenario)
10
+ execute_after(scenario)
11
+ end_scenario
12
+ end
13
+
14
+ def after_configuration(configuration)
15
+ hooks[:after_configuration].each do |hook|
16
+ hook.invoke('AfterConfiguration', configuration)
17
+ end
18
+ end
19
+
20
+ def execute_after_step(scenario)
21
+ hooks_for(:after_step, scenario).each do |hook|
22
+ invoke(hook, 'AfterStep', scenario, false)
23
+ end
24
+ end
25
+
26
+ def add_hook(phase, hook)
27
+ hooks[phase.to_sym] << hook
28
+ hook
29
+ end
30
+
31
+ def add_step_definition(step_definition)
32
+ step_definitions << step_definition
33
+ step_definition
34
+ end
35
+
36
+ def step_definitions
37
+ @step_definitions ||= []
38
+ end
39
+
40
+ def hooks_for(phase, scenario) #:nodoc:
41
+ hooks[phase.to_sym].select{|hook| scenario.accept_hook?(hook)}
42
+ end
43
+
44
+ private
45
+
46
+ def hooks
47
+ @hooks ||= Hash.new{|h,k| h[k] = []}
48
+ end
49
+
50
+ def execute_before(scenario)
51
+ hooks_for(:before, scenario).each do |hook|
52
+ invoke(hook, 'Before', scenario, true)
53
+ end
54
+ end
55
+
56
+ def execute_after(scenario)
57
+ hooks_for(:after, scenario).each do |hook|
58
+ invoke(hook, 'After', scenario, true)
59
+ end
60
+ end
61
+
62
+ def invoke(hook, location, scenario, exception_fails_scenario)
63
+ begin
64
+ hook.invoke(location, scenario)
65
+ rescue Exception => exception
66
+ if exception_fails_scenario
67
+ scenario.fail!(exception)
68
+ else
69
+ raise
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,46 @@
1
+ require 'cucumber/core_ext/string'
2
+
3
+ module Cucumber
4
+ module LanguageSupport
5
+ module StepDefinitionMethods
6
+ def step_match(name_to_match, name_to_report)
7
+ if(match = regexp.match(name_to_match))
8
+ StepMatch.new(self, name_to_match, name_to_report, match.captures)
9
+ else
10
+ nil
11
+ end
12
+ end
13
+
14
+ # Formats the matched arguments of the associated Step. This method
15
+ # is usually called from visitors, which render output.
16
+ #
17
+ # The +format+ can either be a String or a Proc.
18
+ #
19
+ # If it is a String it should be a format string according to
20
+ # <tt>Kernel#sprinf</tt>, for example:
21
+ #
22
+ # '<span class="param">%s</span></tt>'
23
+ #
24
+ # If it is a Proc, it should take one argument and return the formatted
25
+ # argument, for example:
26
+ #
27
+ # lambda { |param| "[#{param}]" }
28
+ #
29
+ def format_args(step_name, format)
30
+ step_name.gzub(regexp, format)
31
+ end
32
+
33
+ def same_regexp?(regexp)
34
+ self.regexp == regexp
35
+ end
36
+
37
+ def backtrace_line
38
+ "#{file_colon_line}:in `#{regexp.inspect}'"
39
+ end
40
+
41
+ def text_length
42
+ regexp.inspect.jlength
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,561 @@
1
+ # encoding: UTF-8
2
+ # We use the codes here (prefer 2 letters when possible)
3
+ # http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
4
+ #
5
+ # If you want several aliases for a keyword, just separate them
6
+ # with a | character. Make sure there are no ambiguities in the
7
+ # keywords.
8
+ #
9
+ "en":
10
+ name: English
11
+ native: English
12
+ encoding: UTF-8
13
+ feature: Feature
14
+ background: Background
15
+ scenario: Scenario
16
+ scenario_outline: Scenario Outline
17
+ examples: Examples|Scenarios
18
+ given: Given
19
+ when: When
20
+ then: Then
21
+ and: And
22
+ but: But
23
+ space_after_keyword: true
24
+
25
+ # Please help us keeping the languages below uptodate. The parsers for a language
26
+ # that is missing a keyword will expect the English word until the missing word(s)
27
+ # are added.
28
+ #
29
+ # Please keep the grammars in alphabetical order by name from here and down.
30
+
31
+ "ar":
32
+ name: Arabic
33
+ native: العربية
34
+ encoding: UTF-8
35
+ feature: خاصية
36
+ background: الخلفية
37
+ scenario: سيناريو
38
+ scenario_outline: سيناريو مخطط
39
+ examples: امثلة
40
+ given: بفرض
41
+ when: متى|عندما
42
+ then: اذاً|ثم
43
+ and: و
44
+ but: لكن
45
+ space_after_keyword: true
46
+ "bg":
47
+ name: Bulgarian
48
+ native: български
49
+ encoding: UTF-8
50
+ feature: Функционалност
51
+ background: Предистория
52
+ scenario: Сценарий
53
+ scenario_outline: Рамка на сценарий
54
+ examples: Примери
55
+ given: Дадено
56
+ when: Когато
57
+ then: То
58
+ and: И
59
+ but: Но
60
+ space_after_keyword: true
61
+ "cat":
62
+ name: Catalan
63
+ native: català
64
+ encoding: UTF-8
65
+ background: Rerefons|Antecedents
66
+ feature: Característica
67
+ scenario: Escenari
68
+ scenario_outline: Esquema de l\'escenari
69
+ examples: Exemples
70
+ given: Donat|Donada
71
+ when: Quan
72
+ then: Aleshores
73
+ and: I
74
+ but: Però
75
+ space_after_keyword: true
76
+ "cy":
77
+ name: Welsh
78
+ native: Cymraeg
79
+ encoding: UTF-8
80
+ feature: Arwedd
81
+ scenario: Scenario
82
+ examples: Enghreifftiau
83
+ given: anrhegedig a
84
+ when: Pryd
85
+ then: Yna
86
+ and: A
87
+ but: Ond
88
+ space_after_keyword: true
89
+ "cz":
90
+ name: Czech
91
+ native: Česky
92
+ encoding: UTF-8
93
+ feature: Požadavek
94
+ background: Pozadí|Kontext
95
+ scenario: Scénář
96
+ scenario_outline: Náčrt Scénáře|Osnova scénáře
97
+ examples: Příklady
98
+ given: Pokud
99
+ when: Když
100
+ then: Pak
101
+ and: A|A také
102
+ but: Ale
103
+ space_after_keyword: true
104
+ "da":
105
+ name: Danish
106
+ native: dansk
107
+ encoding: UTF-8
108
+ feature: Egenskab
109
+ background: Baggrund
110
+ scenario: Scenarie
111
+ scenario_outline: Abstrakt Scenario
112
+ examples: Eksempler
113
+ given: Givet
114
+ when: Når
115
+ then: Så
116
+ and: Og
117
+ but: Men
118
+ space_after_keyword: true
119
+ "de":
120
+ name: German
121
+ native: Deutsch
122
+ encoding: UTF-8
123
+ feature: Funktionalität
124
+ background: Grundlage
125
+ scenario: Szenario
126
+ scenario_outline: Szenariogrundriss
127
+ examples: Beispiele
128
+ given: Gegeben sei
129
+ when: Wenn
130
+ then: Dann
131
+ and: Und
132
+ but: Aber
133
+ space_after_keyword: true
134
+ "en-au":
135
+ name: Australian
136
+ native: Australian
137
+ encoding: UTF-8
138
+ feature: Crikey
139
+ background: Background
140
+ scenario: Mate
141
+ scenario_outline: Blokes
142
+ examples: Cobber
143
+ given: Ya know how
144
+ when: When
145
+ then: Ya gotta
146
+ and: N
147
+ but: Cept
148
+ space_after_keyword: true
149
+ "en-lol":
150
+ name: LOLCAT
151
+ native: LOLCAT
152
+ encoding: UTF-8
153
+ feature: OH HAI
154
+ background: B4
155
+ scenario: MISHUN
156
+ scenario_outline: MISHUN SRSLY
157
+ examples: EXAMPLZ
158
+ given: I CAN HAZ
159
+ when: WEN
160
+ then: DEN
161
+ and: AN
162
+ but: BUT
163
+ space_after_keyword: true
164
+ "en-tx":
165
+ name: Texan
166
+ native: Texan
167
+ encoding: UTF-8
168
+ feature: Feature
169
+ background: Background
170
+ scenario: Scenario
171
+ scenario_outline: All y\'all
172
+ examples: Examples
173
+ given: Given y\'all
174
+ when: When y\'all
175
+ then: Then y\'all
176
+ and: And y\'all
177
+ but: But y\'all
178
+ space_after_keyword: true
179
+ "es":
180
+ name: Spanish
181
+ native: español
182
+ encoding: UTF-8
183
+ background: Antecedentes
184
+ feature: Característica
185
+ scenario: Escenario
186
+ scenario_outline: Esquema del escenario
187
+ examples: Ejemplos
188
+ given: Dado
189
+ when: Cuando
190
+ then: Entonces
191
+ and: Y
192
+ but: Pero
193
+ space_after_keyword: true
194
+ "et":
195
+ name: Estonian
196
+ native: eesti keel
197
+ encoding: UTF-8
198
+ feature: Omadus
199
+ background: Taust
200
+ scenario: Stsenaarium
201
+ scenario_outline: Raamstsenaarium
202
+ examples: Juhtumid
203
+ given: Eeldades
204
+ when: Kui
205
+ then: Siis
206
+ and: Ja
207
+ but: Kuid
208
+ space_after_keyword: true
209
+ "fi":
210
+ name: Finnish
211
+ native: suomi
212
+ encoding: UTF-8
213
+ feature: Ominaisuus
214
+ background: Tausta
215
+ scenario: Tapaus
216
+ scenario_outline: Tapausaihio
217
+ examples: Tapaukset
218
+ given: Oletetaan
219
+ when: Kun
220
+ then: Niin
221
+ and: Ja
222
+ but: Mutta
223
+ space_after_keyword: true
224
+ "fr":
225
+ name: French
226
+ native: français
227
+ encoding: UTF-8
228
+ feature: Fonctionnalité
229
+ background: Contexte
230
+ scenario: Scénario
231
+ scenario_outline: Plan du Scénario
232
+ examples: Exemples
233
+ given: Soit
234
+ when: Lorsque
235
+ then: Alors
236
+ and: Et
237
+ but: Mais
238
+ space_after_keyword: true
239
+ "he":
240
+ name: Hebrew
241
+ native: עברית
242
+ encoding: UTF-8
243
+ feature: תכונה
244
+ background: רקע
245
+ scenario: תרחיש
246
+ scenario_outline: תבנית תרחיש
247
+ examples: דוגמאות
248
+ given: בהינתן
249
+ when: כאשר
250
+ then: אז|אזי
251
+ and: וגם
252
+ but: אבל
253
+ space_after_keyword: true
254
+ "hr":
255
+ name: Croatian
256
+ native: hrvatski
257
+ encoding: UTF-8
258
+ feature: Osobina|Mogućnost|Mogucnost
259
+ background: Pozadina
260
+ scenario: Scenarij
261
+ scenario_outline: Skica|Koncept
262
+ examples: Primjeri|Scenariji
263
+ given: Zadan|Zadani|Zadano
264
+ when: Kada|Kad
265
+ then: Onda
266
+ and: I
267
+ but: Ali
268
+ space_after_keyword: true
269
+ "hu":
270
+ name: Hungarian
271
+ native: magyar
272
+ encoding: UTF-8
273
+ feature: Jellemző
274
+ background: Háttér
275
+ scenario: Forgatókönyv
276
+ scenario_outline: Forgatókönyv vázlat
277
+ examples: Példák
278
+ given: Ha
279
+ when: Majd
280
+ then: Akkor
281
+ and: És
282
+ but: De
283
+ space_after_keyword: true
284
+ "id":
285
+ name: Indonesian
286
+ native: Bahasa Indonesia
287
+ encoding: UTF-8
288
+ feature: Fitur
289
+ background: Dasar
290
+ scenario: Skenario
291
+ scenario_outline: Skenario konsep
292
+ examples: Contoh
293
+ given: Dengan
294
+ when: Ketika
295
+ then: Maka
296
+ and: Dan
297
+ but: Tapi
298
+ space_after_keyword: true
299
+ "it":
300
+ name: Italian
301
+ native: italiano
302
+ encoding: UTF-8
303
+ feature: Funzionalità
304
+ background: Contesto
305
+ scenario: Scenario
306
+ scenario_outline: Schema dello scenario
307
+ examples: Esempi
308
+ given: Dato
309
+ when: Quando
310
+ then: Allora
311
+ and: E
312
+ but: Ma
313
+ space_after_keyword: true
314
+ "ja":
315
+ name: Japanese
316
+ native: 日本語
317
+ encoding: UTF-8
318
+ feature: フィーチャ|機能
319
+ background: 背景
320
+ scenario: シナリオ
321
+ scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ
322
+ examples: 例|サンプル
323
+ given: 前提
324
+ when: もし
325
+ then: ならば
326
+ and: かつ
327
+ but: しかし|但し
328
+ space_after_keyword: false
329
+ "ko":
330
+ name: Korean
331
+ native: 한국어
332
+ encoding: UTF-8
333
+ background: 배경
334
+ feature: 기능
335
+ scenario: 시나리오
336
+ scenario_outline: 시나리오 개요
337
+ examples: 예
338
+ given: 조건
339
+ when: 만일
340
+ then: 그러면
341
+ and: 그리고
342
+ but: 하지만
343
+ space_after_keyword: false
344
+ "lt":
345
+ name: Lithuanian
346
+ native: lietuvių kalba
347
+ encoding: UTF-8
348
+ feature: Savybė
349
+ background: Kontekstas
350
+ scenario: Scenarijus
351
+ scenario_outline: Scenarijaus šablonas
352
+ examples: Pavyzdžiai|Scenarijai|Variantai
353
+ given: Duota
354
+ when: Kai
355
+ then: Tada
356
+ and: Ir
357
+ but: Bet
358
+ space_after_keyword: true
359
+ "lv":
360
+ name: Latvian
361
+ native: latviešu
362
+ encoding: UTF-8
363
+ feature: Funkcionalitāte|Fīča
364
+ background: Konteksts|Situācija
365
+ scenario: Scenārijs
366
+ scenario_outline: Scenārijs pēc parauga
367
+ examples: Piemēri|Paraugs
368
+ given: Kad
369
+ when: Ja
370
+ then: Tad
371
+ and: Un
372
+ but: Bet
373
+ space_after_keyword: true
374
+ "nl":
375
+ name: Dutch
376
+ native: Nederlands
377
+ encoding: UTF-8
378
+ feature: Functionaliteit
379
+ background: Achtergrond
380
+ scenario: Scenario
381
+ scenario_outline: Abstract Scenario
382
+ examples: Voorbeelden
383
+ given: Gegeven
384
+ when: Als
385
+ then: Dan
386
+ and: En
387
+ but: Maar
388
+ space_after_keyword: true
389
+ "no":
390
+ name: Norwegian
391
+ native: norsk
392
+ encoding: UTF-8
393
+ feature: Egenskap
394
+ background: Bakgrunn
395
+ scenario: Scenario
396
+ scenario_outline: Abstrakt Scenario
397
+ examples: Eksempler
398
+ given: Gitt
399
+ when: Når
400
+ then: Så
401
+ and: Og
402
+ but: Men
403
+ space_after_keyword: true
404
+ "pl":
405
+ name: Polish
406
+ native: polski
407
+ encoding: UTF-8
408
+ feature: Właściwość
409
+ background: Założenia
410
+ scenario: Scenariusz
411
+ scenario_outline: Szablon scenariusza
412
+ examples: Przykłady
413
+ given: Zakładając
414
+ when: Jeżeli
415
+ then: Wtedy
416
+ and: Oraz
417
+ but: Ale
418
+ space_after_keyword: true
419
+ "pt":
420
+ name: Portuguese
421
+ native: português
422
+ encoding: UTF-8
423
+ background: Contexto
424
+ feature: Funcionalidade
425
+ scenario: Cenário|Cenario
426
+ scenario_outline: Esquema do Cenário|Esquema do Cenario
427
+ examples: Exemplos
428
+ given: Dado
429
+ when: Quando
430
+ then: Então|Entao
431
+ and: E
432
+ but: Mas
433
+ space_after_keyword: true
434
+ "ro":
435
+ name: Romanian
436
+ native: română
437
+ encoding: UTF-8
438
+ feature: Functionalitate
439
+ scenario: Scenariu
440
+ given: Daca
441
+ when: Cand
442
+ then: Atunci
443
+ and: Si
444
+ but: Dar
445
+ space_after_keyword: true
446
+ "ro2":
447
+ name: Romanian (diacritical)
448
+ native: română (diacritical)
449
+ encoding: UTF-8
450
+ feature: Funcționalitate
451
+ scenario: Scenariu
452
+ given: Dacă
453
+ when: Când
454
+ then: Atunci
455
+ and: Și
456
+ but: Dar
457
+ space_after_keyword: true
458
+ "ru":
459
+ name: Russian
460
+ native: русский
461
+ encoding: UTF-8
462
+ feature: Функционал
463
+ background: Предыстория
464
+ scenario: Сценарий
465
+ scenario_outline: Структура сценария
466
+ examples: Значения
467
+ given: Допустим
468
+ when: Если
469
+ then: То
470
+ and: И|К тому же
471
+ but: Но|А
472
+ space_after_keyword: true
473
+ "se":
474
+ name: Swedish
475
+ native: Svenska
476
+ encoding: UTF-8
477
+ feature: Egenskap
478
+ background: Bakgrund
479
+ scenario: Scenario
480
+ scenario_outline: Abstrakt Scenario
481
+ examples: Exempel
482
+ given: Givet
483
+ when: När
484
+ then: Så
485
+ and: Och
486
+ but: Men
487
+ space_after_keyword: true
488
+ "sk":
489
+ name: Slovak
490
+ native: Slovensky
491
+ encoding: UTF-8
492
+ feature: Požiadavka
493
+ background: Pozadie
494
+ scenario: Scenár
495
+ scenario_outline: Náčrt Scenáru
496
+ examples: Príklady
497
+ given: Pokiaľ
498
+ when: Keď
499
+ then: Tak
500
+ and: A
501
+ but: Ale
502
+ space_after_keyword: true
503
+ "uz":
504
+ name: Uzbek
505
+ native: Узбекча
506
+ encoding: UTF-8
507
+ feature: Функционал
508
+ background: Тарих
509
+ scenario: Сценарий
510
+ scenario_outline: Сценарий структураси
511
+ examples: Мисоллар
512
+ given: Агар
513
+ when: Агар
514
+ then: Унда
515
+ and: Ва
516
+ but: Лекин|Бирок|Аммо
517
+ "vi":
518
+ name: Vietnamese
519
+ native: Tiếng Việt
520
+ encoding: UTF-8
521
+ feature: Tính năng
522
+ background: Bối cảnh
523
+ scenario: Tình huống|Kịch bản
524
+ scenario_outline: Khung tình huống|Khung kịch bản
525
+ examples: Dữ liệu
526
+ given: Biết|Cho
527
+ when: Khi
528
+ then: Thì
529
+ and: Và
530
+ but: Nhưng
531
+ space_after_keyword: true
532
+ "zh-CN":
533
+ name: Chinese simplified
534
+ native: 简体中文
535
+ encoding: UTF-8
536
+ feature: 功能
537
+ background: 背景
538
+ scenario: 场景
539
+ scenario_outline: 场景大纲
540
+ examples: 例子
541
+ given: 假如
542
+ when: 当
543
+ then: 那么
544
+ and: 而且
545
+ but: 但是
546
+ space_after_keyword: false
547
+ "zh-TW":
548
+ name: Chinese traditional
549
+ native: 繁體中文
550
+ encoding: UTF-8
551
+ feature: 功能
552
+ background: 背景
553
+ scenario: 場景|劇本
554
+ scenario_outline: 場景大綱|劇本大綱
555
+ examples: 例子
556
+ given: 假設
557
+ when: 當
558
+ then: 那麼
559
+ and: 而且|並且
560
+ but: 但是
561
+ space_after_keyword: false