casecumber 1.0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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,160 @@
1
+ begin
2
+ require 'term/ansicolor'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'term/ansicolor'
6
+ end
7
+ require 'cucumber/platform'
8
+
9
+ if Cucumber::IRONRUBY
10
+ begin
11
+ require 'iron-term-ansicolor'
12
+ rescue LoadError
13
+ STDERR.puts %{*** WARNING: You must "igem install iron-term-ansicolor" to get coloured ouput in on IronRuby}
14
+ end
15
+ end
16
+
17
+ if Cucumber::WINDOWS_MRI
18
+ unless ENV['ANSICON']
19
+ STDERR.puts %{*** WARNING: You must use ANSICON 1.31 or higher (http://adoxa.110mb.com/ansicon) to get coloured output on Windows}
20
+ Term::ANSIColor.coloring = false
21
+ end
22
+ end
23
+
24
+ Term::ANSIColor.coloring = false if !STDOUT.tty? && !ENV.has_key?('AUTOTEST')
25
+
26
+ module Cucumber
27
+ module Formatter
28
+ # Defines aliases for coloured output. You don't invoke any methods from this
29
+ # module directly, but you can change the output colours by defining
30
+ # a <tt>CUCUMBER_COLORS</tt> variable in your shell, very much like how you can
31
+ # tweak the familiar POSIX command <tt>ls</tt> with
32
+ # <a href="http://mipsisrisc.com/rambling/2008/06/27/lscolorsls_colors-now-with-linux-support/">$LSCOLORS/$LS_COLORS</a>
33
+ #
34
+ # The colours that you can change are:
35
+ #
36
+ # * <tt>undefined</tt> - defaults to <tt>yellow</tt>
37
+ # * <tt>pending</tt> - defaults to <tt>yellow</tt>
38
+ # * <tt>pending_param</tt> - defaults to <tt>yellow,bold</tt>
39
+ # * <tt>failed</tt> - defaults to <tt>red</tt>
40
+ # * <tt>failed_param</tt> - defaults to <tt>red,bold</tt>
41
+ # * <tt>passed</tt> - defaults to <tt>green</tt>
42
+ # * <tt>passed_param</tt> - defaults to <tt>green,bold</tt>
43
+ # * <tt>outline</tt> - defaults to <tt>cyan</tt>
44
+ # * <tt>outline_param</tt> - defaults to <tt>cyan,bold</tt>
45
+ # * <tt>skipped</tt> - defaults to <tt>cyan</tt>
46
+ # * <tt>skipped_param</tt> - defaults to <tt>cyan,bold</tt>
47
+ # * <tt>comment</tt> - defaults to <tt>grey</tt>
48
+ # * <tt>tag</tt> - defaults to <tt>cyan</tt>
49
+ #
50
+ # For instance, if your shell has a black background and a green font (like the
51
+ # "Homebrew" settings for OS X' Terminal.app), you may want to override passed
52
+ # steps to be white instead of green. Examples:
53
+ #
54
+ # export CUCUMBER_COLORS="passed=white"
55
+ # export CUCUMBER_COLORS="passed=white,bold:passed_param=white,bold,underline"
56
+ #
57
+ # (If you're on Windows, use SET instead of export).
58
+ # To see what colours and effects are available, just run this in your shell:
59
+ #
60
+ # ruby -e "require 'rubygems'; require 'term/ansicolor'; puts Term::ANSIColor.attributes"
61
+ #
62
+ # Although not listed, you can also use <tt>grey</tt>
63
+ module ANSIColor
64
+ include Term::ANSIColor
65
+
66
+ ALIASES = Hash.new do |h,k|
67
+ if k.to_s =~ /(.*)_param/
68
+ h[$1] + ',bold'
69
+ end
70
+ end.merge({
71
+ 'undefined' => 'yellow',
72
+ 'pending' => 'yellow',
73
+ 'failed' => 'red',
74
+ 'passed' => 'green',
75
+ 'outline' => 'cyan',
76
+ 'skipped' => 'cyan',
77
+ 'comment' => 'grey',
78
+ 'tag' => 'cyan'
79
+ })
80
+
81
+ if ENV['CUCUMBER_COLORS'] # Example: export CUCUMBER_COLORS="passed=red:failed=yellow"
82
+ ENV['CUCUMBER_COLORS'].split(':').each do |pair|
83
+ a = pair.split('=')
84
+ ALIASES[a[0]] = a[1]
85
+ end
86
+ end
87
+
88
+ ALIASES.each do |method, color|
89
+ unless method =~ /.*_param/
90
+ code = <<-EOF
91
+ def #{method}(string=nil, &proc)
92
+ #{ALIASES[method].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method].split(",").length}
93
+ end
94
+ # This resets the colour to the non-param colour
95
+ def #{method}_param(string=nil, &proc)
96
+ #{ALIASES[method+'_param'].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method+'_param'].split(",").length} + #{ALIASES[method].split(",").join(' + ')}
97
+ end
98
+ EOF
99
+ eval(code)
100
+ end
101
+ end
102
+
103
+ def self.define_grey #:nodoc:
104
+ begin
105
+ gem 'genki-ruby-terminfo'
106
+ require 'terminfo'
107
+ case TermInfo.default_object.tigetnum("colors")
108
+ when 0
109
+ raise "Your terminal doesn't support colours"
110
+ when 1
111
+ ::Term::ANSIColor.coloring = false
112
+ alias grey white
113
+ when 2..8
114
+ alias grey white
115
+ else
116
+ define_real_grey
117
+ end
118
+ rescue Exception => e
119
+ if e.class.name == 'TermInfo::TermInfoError'
120
+ STDERR.puts "*** WARNING ***"
121
+ STDERR.puts "You have the genki-ruby-terminfo gem installed, but you haven't set your TERM variable."
122
+ STDERR.puts "Try setting it to TERM=xterm-256color to get grey colour in output"
123
+ STDERR.puts "\n"
124
+ alias grey white
125
+ else
126
+ define_real_grey
127
+ end
128
+ end
129
+ end
130
+
131
+ def self.define_real_grey #:nodoc:
132
+ def grey(m) #:nodoc:
133
+ if ::Term::ANSIColor.coloring?
134
+ "\e[90m#{m}\e[0m"
135
+ else
136
+ m
137
+ end
138
+ end
139
+ end
140
+
141
+ define_grey
142
+
143
+ def cukes(n)
144
+ ("(::) " * n).strip
145
+ end
146
+
147
+ def green_cukes(n)
148
+ blink(green(cukes(n)))
149
+ end
150
+
151
+ def red_cukes(n)
152
+ blink(red(cukes(n)))
153
+ end
154
+
155
+ def yellow_cukes(n)
156
+ blink(yellow(cukes(n)))
157
+ end
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,187 @@
1
+ require 'cucumber/formatter/ansicolor'
2
+ require 'cucumber/formatter/duration'
3
+ require 'cucumber/formatter/summary'
4
+
5
+ module Cucumber
6
+ module Formatter
7
+ # This module contains helper methods that are used by formatters
8
+ # that print output to the terminal.
9
+ module Console
10
+ extend ANSIColor
11
+ include Duration
12
+ include Summary
13
+
14
+ FORMATS = Hash.new{|hash, format| hash[format] = method(format).to_proc}
15
+
16
+ def format_step(keyword, step_match, status, source_indent)
17
+ comment = if source_indent
18
+ c = (' # ' + step_match.file_colon_line).indent(source_indent)
19
+ format_string(c, :comment)
20
+ else
21
+ ''
22
+ end
23
+
24
+ format = format_for(status, :param)
25
+ line = keyword + step_match.format_args(format) + comment
26
+ format_string(line, status)
27
+ end
28
+
29
+ def format_string(o, status)
30
+ fmt = format_for(status)
31
+ o.to_s.split("\n").map do |line|
32
+ if Proc === fmt
33
+ fmt.call(line)
34
+ else
35
+ fmt % line
36
+ end
37
+ end.join("\n")
38
+ end
39
+
40
+ def print_steps(status)
41
+ print_elements(step_mother.steps(status), status, 'steps')
42
+ end
43
+
44
+ def print_elements(elements, status, kind)
45
+ if elements.any?
46
+ @io.puts(format_string("(::) #{status} #{kind} (::)", status))
47
+ @io.puts
48
+ @io.flush
49
+ end
50
+
51
+ elements.each_with_index do |element, i|
52
+ if status == :failed
53
+ print_exception(element.exception, status, 0)
54
+ else
55
+ @io.puts(format_string(element.backtrace_line, status))
56
+ end
57
+ @io.puts
58
+ @io.flush
59
+ end
60
+ end
61
+
62
+ def print_stats(features, options)
63
+ @failures = step_mother.scenarios(:failed).select { |s| s.is_a?(Cucumber::Ast::Scenario) || s.is_a?(Cucumber::Ast::OutlineTable::ExampleRow) }
64
+ @failures.collect! { |s| (s.is_a?(Cucumber::Ast::OutlineTable::ExampleRow)) ? s.scenario_outline : s }
65
+
66
+ if !@failures.empty?
67
+ @io.puts format_string("Failing Scenarios:", :failed)
68
+ @failures.each do |failure|
69
+ profiles_string = options.custom_profiles.empty? ? '' : (options.custom_profiles.map{|profile| "-p #{profile}" }).join(' ') + ' '
70
+ source = options[:source] ? format_string(" # Scenario: " + failure.name, :comment) : ''
71
+ @io.puts format_string("cucumber #{profiles_string}" + failure.file_colon_line, :failed) + source
72
+ end
73
+ @io.puts
74
+ end
75
+
76
+ @io.puts scenario_summary(step_mother) {|status_count, status| format_string(status_count, status)}
77
+ @io.puts step_summary(step_mother) {|status_count, status| format_string(status_count, status)}
78
+
79
+ @io.puts(format_duration(features.duration)) if features && features.duration
80
+
81
+ @io.flush
82
+ end
83
+
84
+ def print_exception(e, status, indent)
85
+ message = "#{e.message} (#{e.class})"
86
+ if ENV['CUCUMBER_TRUNCATE_OUTPUT']
87
+ message = linebreaks(message, ENV['CUCUMBER_TRUNCATE_OUTPUT'].to_i)
88
+ end
89
+
90
+ string = "#{message}\n#{e.backtrace.join("\n")}".indent(indent)
91
+ @io.puts(format_string(string, status))
92
+ end
93
+
94
+ # http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/10655
95
+ def linebreaks(s, max)
96
+ s.gsub(/.{1,#{max}}(?:\s|\Z)/){($& + 5.chr).gsub(/\n\005/,"\n").gsub(/\005/,"\n")}.rstrip
97
+ end
98
+
99
+ def print_snippets(options)
100
+ return unless options[:snippets]
101
+ undefined = step_mother.steps(:undefined)
102
+ return if undefined.empty?
103
+
104
+ unknown_programming_language = step_mother.unknown_programming_language?
105
+ snippets = undefined.map do |step|
106
+ step_name = Undefined === step.exception ? step.exception.step_name : step.name
107
+ step_multiline_class = step.multiline_arg ? step.multiline_arg.class : nil
108
+ snippet = @step_mother.snippet_text(step.actual_keyword, step_name, step_multiline_class)
109
+ snippet
110
+ end.compact.uniq
111
+
112
+ text = "\nYou can implement step definitions for undefined steps with these snippets:\n\n"
113
+ text += snippets.join("\n\n")
114
+ @io.puts format_string(text, :undefined)
115
+
116
+ if unknown_programming_language
117
+ @io.puts format_string("\nIf you want snippets in a different programming language, just make sure a file\n" +
118
+ "with the appropriate file extension exists where cucumber looks for step definitions.", :failed)
119
+ end
120
+
121
+ @io.puts
122
+ @io.flush
123
+ end
124
+
125
+ def print_passing_wip(options)
126
+ return unless options[:wip]
127
+ passed = step_mother.scenarios(:passed)
128
+ if passed.any?
129
+ @io.puts format_string("\nThe --wip switch was used, so I didn't expect anything to pass. These scenarios passed:", :failed)
130
+ print_elements(passed, :passed, "scenarios")
131
+ else
132
+ @io.puts format_string("\nThe --wip switch was used, so the failures were expected. All is good.\n", :passed)
133
+ end
134
+ end
135
+
136
+ def embed(file, mime_type, label)
137
+ # no-op
138
+ end
139
+
140
+ #define @delayed_messages = [] in your Formatter if you want to
141
+ #activate this feature
142
+ def puts(*messages)
143
+ if @delayed_messages
144
+ @delayed_messages += messages
145
+ else
146
+ if @io
147
+ @io.puts
148
+ messages.each do |message|
149
+ @io.puts(format_string(message, :tag))
150
+ end
151
+ @io.flush
152
+ end
153
+ end
154
+ end
155
+
156
+ def print_messages
157
+ @delayed_messages.each {|message| print_message(message)}
158
+ empty_messages
159
+ end
160
+
161
+ def print_table_row_messages
162
+ return if @delayed_messages.empty?
163
+ @io.print(format_string(@delayed_messages.join(', '), :tag).indent(2))
164
+ @io.flush
165
+ empty_messages
166
+ end
167
+
168
+ def print_message(message)
169
+ @io.puts(format_string(message, :tag).indent(@indent))
170
+ @io.flush
171
+ end
172
+
173
+ def empty_messages
174
+ @delayed_messages = []
175
+ end
176
+
177
+ private
178
+
179
+ def format_for(*keys)
180
+ key = keys.join('_').to_sym
181
+ fmt = FORMATS[key]
182
+ raise "No format for #{key.inspect}: #{FORMATS.inspect}" if fmt.nil?
183
+ fmt
184
+ end
185
+ end
186
+ end
187
+ end
@@ -0,0 +1,279 @@
1
+ /* cucumber.css is generated from cucumber.sass */
2
+ /* Regenerate with rake sass */
3
+ body {
4
+ font-size: 0px;
5
+ color: white;
6
+ margin: 0px;
7
+ padding: 0px;
8
+ }
9
+
10
+ .cucumber, td, th {
11
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
12
+ background: white;
13
+ color: black;
14
+ }
15
+ .cucumber #cucumber-header, td #cucumber-header, th #cucumber-header {
16
+ background: #65c400;
17
+ color: white;
18
+ height: 6em;
19
+ }
20
+ .cucumber #cucumber-header #expand-collapse p, td #cucumber-header #expand-collapse p, th #cucumber-header #expand-collapse p {
21
+ float: right;
22
+ margin: 0 0 0 10px;
23
+ }
24
+ .cucumber .scenario h3, td .scenario h3, th .scenario h3 {
25
+ font-size: 11px;
26
+ padding: 3px;
27
+ margin: 0;
28
+ background: #65c400;
29
+ color: white;
30
+ font-weight: bold;
31
+ }
32
+ .cucumber h1, td h1, th h1 {
33
+ margin: 0px 10px 0px 10px;
34
+ padding: 10px;
35
+ font-family: "Lucida Grande", Helvetica, sans-serif;
36
+ font-size: 2em;
37
+ position: absolute;
38
+ }
39
+ .cucumber h4, td h4, th h4 {
40
+ margin-bottom: 2px;
41
+ }
42
+ .cucumber div.feature, td div.feature, th div.feature {
43
+ padding: 2px;
44
+ margin: 0px 10px 5px 10px;
45
+ }
46
+ .cucumber div.examples, td div.examples, th div.examples {
47
+ padding: 0em 0em 0em 1em;
48
+ }
49
+ .cucumber .stats, td .stats, th .stats {
50
+ margin: 2em;
51
+ }
52
+ .cucumber .summary ul.features li, td .summary ul.features li, th .summary ul.features li {
53
+ display: inline;
54
+ }
55
+ .cucumber .step_name, td .step_name, th .step_name {
56
+ float: left;
57
+ }
58
+ .cucumber .step_file, td .step_file, th .step_file {
59
+ text-align: right;
60
+ color: #999999;
61
+ }
62
+ .cucumber .step_file a, td .step_file a, th .step_file a {
63
+ color: #999999;
64
+ }
65
+ .cucumber .scenario_file, td .scenario_file, th .scenario_file {
66
+ float: right;
67
+ color: #999999;
68
+ }
69
+ .cucumber .tag, td .tag, th .tag {
70
+ font-weight: bold;
71
+ color: #246ac1;
72
+ }
73
+ .cucumber .backtrace, td .backtrace, th .backtrace {
74
+ margin-top: 0;
75
+ margin-bottom: 0;
76
+ margin-left: 1em;
77
+ color: black;
78
+ }
79
+ .cucumber a, td a, th a {
80
+ text-decoration: none;
81
+ color: #be5c00;
82
+ }
83
+ .cucumber a:hover, td a:hover, th a:hover {
84
+ text-decoration: underline;
85
+ }
86
+ .cucumber a:visited, td a:visited, th a:visited {
87
+ font-weight: normal;
88
+ }
89
+ .cucumber a div.examples, td a div.examples, th a div.examples {
90
+ margin: 5px 0px 5px 15px;
91
+ color: black;
92
+ }
93
+ .cucumber .outline table, td .outline table, th .outline table {
94
+ margin: 0px 0px 5px 10px;
95
+ }
96
+ .cucumber table, td table, th table {
97
+ border-collapse: collapse;
98
+ }
99
+ .cucumber table td, td table td, th table td {
100
+ padding: 3px 3px 3px 5px;
101
+ }
102
+ .cucumber table td.failed, .cucumber table td.passed, .cucumber table td.skipped, .cucumber table td.pending, .cucumber table td.undefined, td table td.failed, td table td.passed, td table td.skipped, td table td.pending, td table td.undefined, th table td.failed, th table td.passed, th table td.skipped, th table td.pending, th table td.undefined {
103
+ padding-left: 18px;
104
+ padding-right: 10px;
105
+ }
106
+ .cucumber table td.failed, td table td.failed, th table td.failed {
107
+ border-left: 5px solid #c20000;
108
+ border-bottom: 1px solid #c20000;
109
+ background: #fffbd3;
110
+ color: #c20000;
111
+ }
112
+ .cucumber table td.passed, td table td.passed, th table td.passed {
113
+ border-left: 5px solid #65c400;
114
+ border-bottom: 1px solid #65c400;
115
+ background: #dbffb4;
116
+ color: #3d7700;
117
+ }
118
+ .cucumber table td.skipped, td table td.skipped, th table td.skipped {
119
+ border-left: 5px solid aqua;
120
+ border-bottom: 1px solid aqua;
121
+ background: #e0ffff;
122
+ color: #001111;
123
+ }
124
+ .cucumber table td.pending, td table td.pending, th table td.pending {
125
+ border-left: 5px solid #faf834;
126
+ border-bottom: 1px solid #faf834;
127
+ background: #fcfb98;
128
+ color: #131313;
129
+ }
130
+ .cucumber table td.undefined, td table td.undefined, th table td.undefined {
131
+ border-left: 5px solid #faf834;
132
+ border-bottom: 1px solid #faf834;
133
+ background: #fcfb98;
134
+ color: #131313;
135
+ }
136
+ .cucumber table td.message, td table td.message, th table td.message {
137
+ border-left: 5px solid aqua;
138
+ border-bottom: 1px solid aqua;
139
+ background: #e0ffff;
140
+ color: #001111;
141
+ }
142
+ .cucumber ol, td ol, th ol {
143
+ list-style: none;
144
+ margin: 0px;
145
+ padding: 0px;
146
+ }
147
+ .cucumber ol li.step, td ol li.step, th ol li.step {
148
+ padding: 3px 3px 3px 18px;
149
+ margin: 5px 0px 5px 5px;
150
+ }
151
+ .cucumber ol li, td ol li, th ol li {
152
+ margin: 0em 0em 0em 1em;
153
+ padding: 0em 0em 0em 0.2em;
154
+ }
155
+ .cucumber ol li span.param, td ol li span.param, th ol li span.param {
156
+ font-weight: bold;
157
+ }
158
+ .cucumber ol li.failed, td ol li.failed, th ol li.failed {
159
+ border-left: 5px solid #c20000;
160
+ border-bottom: 1px solid #c20000;
161
+ background: #fffbd3;
162
+ color: #c20000;
163
+ }
164
+ .cucumber ol li.passed, td ol li.passed, th ol li.passed {
165
+ border-left: 5px solid #65c400;
166
+ border-bottom: 1px solid #65c400;
167
+ background: #dbffb4;
168
+ color: #3d7700;
169
+ }
170
+ .cucumber ol li.skipped, td ol li.skipped, th ol li.skipped {
171
+ border-left: 5px solid aqua;
172
+ border-bottom: 1px solid aqua;
173
+ background: #e0ffff;
174
+ color: #001111;
175
+ }
176
+ .cucumber ol li.pending, td ol li.pending, th ol li.pending {
177
+ border-left: 5px solid #faf834;
178
+ border-bottom: 1px solid #faf834;
179
+ background: #fcfb98;
180
+ color: #131313;
181
+ }
182
+ .cucumber ol li.undefined, td ol li.undefined, th ol li.undefined {
183
+ border-left: 5px solid #faf834;
184
+ border-bottom: 1px solid #faf834;
185
+ background: #fcfb98;
186
+ color: #131313;
187
+ }
188
+ .cucumber ol li.message, td ol li.message, th ol li.message {
189
+ border-left: 5px solid aqua;
190
+ border-bottom: 1px solid aqua;
191
+ background: #e0ffff;
192
+ color: #001111;
193
+ margin-left: 10px;
194
+ }
195
+ .cucumber #summary, td #summary, th #summary {
196
+ margin: 0px;
197
+ padding: 5px 10px;
198
+ text-align: right;
199
+ top: 0px;
200
+ right: 0px;
201
+ float: right;
202
+ }
203
+ .cucumber #summary p, td #summary p, th #summary p {
204
+ margin: 0 0 0 2px;
205
+ }
206
+ .cucumber #summary #totals, td #summary #totals, th #summary #totals {
207
+ font-size: 1.2em;
208
+ }
209
+
210
+ .ruby {
211
+ font-size: 12px;
212
+ font-family: monospace;
213
+ color: white;
214
+ background: black;
215
+ padding: 0.1em 0 0.2em 0;
216
+ }
217
+ .ruby .keyword {
218
+ color: #ff6600;
219
+ }
220
+ .ruby .constant {
221
+ color: #339999;
222
+ }
223
+ .ruby .attribute {
224
+ color: white;
225
+ }
226
+ .ruby .global {
227
+ color: white;
228
+ }
229
+ .ruby .module {
230
+ color: white;
231
+ }
232
+ .ruby .class {
233
+ color: white;
234
+ }
235
+ .ruby .string {
236
+ color: #66ff00;
237
+ }
238
+ .ruby .ident {
239
+ color: white;
240
+ }
241
+ .ruby .method {
242
+ color: #ffcc00;
243
+ }
244
+ .ruby .number {
245
+ color: white;
246
+ }
247
+ .ruby .char {
248
+ color: white;
249
+ }
250
+ .ruby .comment {
251
+ color: #9933cc;
252
+ }
253
+ .ruby .symbol {
254
+ color: white;
255
+ }
256
+ .ruby .regex {
257
+ color: #44b4cc;
258
+ }
259
+ .ruby .punct {
260
+ color: white;
261
+ }
262
+ .ruby .escape {
263
+ color: white;
264
+ }
265
+ .ruby .interp {
266
+ color: white;
267
+ }
268
+ .ruby .expr {
269
+ color: white;
270
+ }
271
+ .ruby .offending {
272
+ background: #333333;
273
+ }
274
+ .ruby .linenum {
275
+ width: 75px;
276
+ padding: 0.1em 1em 0.2em 0;
277
+ color: black;
278
+ background: #fffbd3;
279
+ }