cucumber 3.0.0 → 3.1.0

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 (429) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -3
  3. data/CONTRIBUTING.md +2 -4
  4. data/README.md +6 -5
  5. data/lib/cucumber/cli/options.rb +3 -1
  6. data/lib/cucumber/errors.rb +1 -1
  7. data/lib/cucumber/events/test_step_finished.rb +0 -2
  8. data/lib/cucumber/events/test_step_started.rb +0 -2
  9. data/lib/cucumber/events.rb +0 -1
  10. data/lib/cucumber/filters/quit.rb +0 -1
  11. data/lib/cucumber/formatter/html.rb +1 -1
  12. data/lib/cucumber/formatter/html_builder.rb +1 -1
  13. data/lib/cucumber/formatter/ignore_missing_messages.rb +0 -1
  14. data/lib/cucumber/formatter/json.rb +1 -1
  15. data/lib/cucumber/formatter/json_pretty.rb +0 -1
  16. data/lib/cucumber/formatter/junit.rb +6 -2
  17. data/lib/cucumber/formatter/rerun.rb +1 -1
  18. data/lib/cucumber/formatter/summary.rb +0 -1
  19. data/lib/cucumber/glue/dsl.rb +6 -2
  20. data/lib/cucumber/glue/proto_world.rb +2 -0
  21. data/lib/cucumber/glue/step_definition.rb +1 -1
  22. data/lib/cucumber/glue/world_factory.rb +1 -1
  23. data/lib/cucumber/hooks.rb +12 -0
  24. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +0 -1
  25. data/lib/cucumber/multiline_argument/data_table.rb +6 -10
  26. data/lib/cucumber/multiline_argument.rb +1 -1
  27. data/lib/cucumber/step_definitions.rb +1 -1
  28. data/lib/cucumber/step_match.rb +4 -1
  29. data/lib/cucumber/step_match_search.rb +1 -1
  30. data/lib/cucumber/version +1 -1
  31. metadata +32 -571
  32. data/.coveralls.yml +0 -1
  33. data/.cucumberproignore +0 -6
  34. data/.gitattributes +0 -32
  35. data/.github/ISSUE_TEMPLATE.md +0 -48
  36. data/.github/PULL_REQUEST_TEMPLATE.md +0 -40
  37. data/.rspec +0 -1
  38. data/.rubocop.yml +0 -13
  39. data/.rubocop_todo.yml +0 -991
  40. data/.ruby-gemset +0 -1
  41. data/.travis.yml +0 -69
  42. data/.yardopts +0 -1
  43. data/Gemfile +0 -28
  44. data/Rakefile +0 -32
  45. data/appveyor.yml +0 -27
  46. data/cucumber.gemspec +0 -52
  47. data/cucumber.yml +0 -19
  48. data/examples/i18n/README.textile +0 -3
  49. data/examples/i18n/Rakefile +0 -33
  50. data/examples/i18n/ar/Rakefile +0 -6
  51. data/examples/i18n/ar/features/addition.feature +0 -17
  52. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +0 -29
  53. data/examples/i18n/ar/lib/calculator.rb +0 -11
  54. data/examples/i18n/bg/Rakefile +0 -6
  55. data/examples/i18n/bg/features/addition.feature +0 -12
  56. data/examples/i18n/bg/features/consecutive_calculations.feature +0 -19
  57. data/examples/i18n/bg/features/division.feature +0 -17
  58. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +0 -24
  59. data/examples/i18n/bg/features/support/env.rb +0 -10
  60. data/examples/i18n/bg/features/support/world.rb +0 -8
  61. data/examples/i18n/bg/lib/calculator.rb +0 -25
  62. data/examples/i18n/ca/Rakefile +0 -6
  63. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -26
  64. data/examples/i18n/ca/features/suma.feature +0 -17
  65. data/examples/i18n/ca/lib/calculadora.rb +0 -16
  66. data/examples/i18n/cs/Rakefile +0 -6
  67. data/examples/i18n/cs/features/addition.feature +0 -17
  68. data/examples/i18n/cs/features/division.feature +0 -11
  69. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +0 -29
  70. data/examples/i18n/cs/lib/calculator.rb +0 -14
  71. data/examples/i18n/da/Rakefile +0 -6
  72. data/examples/i18n/da/features/sammenlaegning.feature +0 -18
  73. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +0 -29
  74. data/examples/i18n/da/lib/lommeregner.rb +0 -11
  75. data/examples/i18n/de/Rakefile +0 -6
  76. data/examples/i18n/de/features/addition.feature +0 -17
  77. data/examples/i18n/de/features/division.feature +0 -10
  78. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +0 -29
  79. data/examples/i18n/de/lib/calculator.rb +0 -14
  80. data/examples/i18n/el/Rakefile +0 -6
  81. data/examples/i18n/el/features/addition.feature +0 -17
  82. data/examples/i18n/el/features/division.feature +0 -10
  83. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +0 -29
  84. data/examples/i18n/el/lib/calculator.rb +0 -14
  85. data/examples/i18n/en/Rakefile +0 -6
  86. data/examples/i18n/en/features/addition.feature +0 -17
  87. data/examples/i18n/en/features/division.feature +0 -10
  88. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +0 -29
  89. data/examples/i18n/en/lib/calculator.rb +0 -14
  90. data/examples/i18n/en-lol/Rakefile +0 -4
  91. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +0 -16
  92. data/examples/i18n/en-lol/features/stuffing.feature +0 -8
  93. data/examples/i18n/en-lol/features/support/env.rb +0 -11
  94. data/examples/i18n/en-lol/lib/basket.rb +0 -12
  95. data/examples/i18n/en-lol/lib/belly.rb +0 -11
  96. data/examples/i18n/eo/Rakefile +0 -6
  97. data/examples/i18n/eo/features/adicio.feature +0 -17
  98. data/examples/i18n/eo/features/divido.feature +0 -10
  99. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +0 -29
  100. data/examples/i18n/eo/lib/calculator.rb +0 -14
  101. data/examples/i18n/es/Rakefile +0 -6
  102. data/examples/i18n/es/features/adicion.feature +0 -17
  103. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +0 -26
  104. data/examples/i18n/es/lib/calculador.rb +0 -14
  105. data/examples/i18n/et/Rakefile +0 -6
  106. data/examples/i18n/et/features/jagamine.feature +0 -10
  107. data/examples/i18n/et/features/liitmine.feature +0 -17
  108. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -29
  109. data/examples/i18n/et/lib/kalkulaator.rb +0 -14
  110. data/examples/i18n/fi/Rakefile +0 -6
  111. data/examples/i18n/fi/features/jakolasku.feature +0 -10
  112. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +0 -29
  113. data/examples/i18n/fi/features/yhteenlasku.feature +0 -17
  114. data/examples/i18n/fi/lib/laskin.rb +0 -14
  115. data/examples/i18n/fr/Rakefile +0 -8
  116. data/examples/i18n/fr/features/addition.feature +0 -18
  117. data/examples/i18n/fr/features/addition2.feature +0 -17
  118. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -32
  119. data/examples/i18n/fr/features/support/env.rb +0 -10
  120. data/examples/i18n/fr/lib/calculatrice.rb +0 -10
  121. data/examples/i18n/he/Rakefile +0 -6
  122. data/examples/i18n/he/features/addition.feature +0 -17
  123. data/examples/i18n/he/features/division.feature +0 -10
  124. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +0 -29
  125. data/examples/i18n/he/lib/calculator.rb +0 -15
  126. data/examples/i18n/hi/Rakefile +0 -6
  127. data/examples/i18n/hi/features/addition.feature +0 -16
  128. data/examples/i18n/hi/features/division.feature +0 -10
  129. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +0 -29
  130. data/examples/i18n/hi/lib/calculator.rb +0 -15
  131. data/examples/i18n/ht/Rakefile +0 -6
  132. data/examples/i18n/ht/features/adisyon.feature +0 -17
  133. data/examples/i18n/ht/features/divizyon.feature +0 -10
  134. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +0 -29
  135. data/examples/i18n/ht/lib/kalkilatris.rb +0 -14
  136. data/examples/i18n/hu/Rakefile +0 -6
  137. data/examples/i18n/hu/features/osszeadas.feature +0 -17
  138. data/examples/i18n/hu/features/osztas.feature +0 -10
  139. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +0 -30
  140. data/examples/i18n/hu/lib/calculator.rb +0 -14
  141. data/examples/i18n/id/Rakefile +0 -6
  142. data/examples/i18n/id/features/addition.feature +0 -17
  143. data/examples/i18n/id/features/division.feature +0 -10
  144. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +0 -29
  145. data/examples/i18n/id/lib/calculator.rb +0 -14
  146. data/examples/i18n/it/Rakefile +0 -6
  147. data/examples/i18n/it/features/somma.feature +0 -11
  148. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +0 -29
  149. data/examples/i18n/it/lib/calcolatrice.rb +0 -11
  150. data/examples/i18n/ja/Rakefile +0 -6
  151. data/examples/i18n/ja/features/addition.feature +0 -17
  152. data/examples/i18n/ja/features/division.feature +0 -10
  153. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +0 -19
  154. data/examples/i18n/ja/features/support/env.rb +0 -10
  155. data/examples/i18n/ja/lib/calculator.rb +0 -14
  156. data/examples/i18n/ko/Rakefile +0 -6
  157. data/examples/i18n/ko/features/addition.feature +0 -17
  158. data/examples/i18n/ko/features/division.feature +0 -11
  159. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +0 -29
  160. data/examples/i18n/ko/lib/calculator.rb +0 -14
  161. data/examples/i18n/lt/Rakefile +0 -6
  162. data/examples/i18n/lt/features/addition.feature +0 -17
  163. data/examples/i18n/lt/features/division.feature +0 -10
  164. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +0 -29
  165. data/examples/i18n/lt/lib/calculator.rb +0 -14
  166. data/examples/i18n/lv/Rakefile +0 -6
  167. data/examples/i18n/lv/features/addition.feature +0 -17
  168. data/examples/i18n/lv/features/division.feature +0 -10
  169. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +0 -29
  170. data/examples/i18n/lv/lib/calculator.rb +0 -14
  171. data/examples/i18n/no/Rakefile +0 -6
  172. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +0 -17
  173. data/examples/i18n/no/features/summering.feature +0 -19
  174. data/examples/i18n/no/features/support/env.rb +0 -11
  175. data/examples/i18n/no/lib/kalkulator.rb +0 -11
  176. data/examples/i18n/pl/Rakefile +0 -6
  177. data/examples/i18n/pl/features/addition.feature +0 -17
  178. data/examples/i18n/pl/features/division.feature +0 -10
  179. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +0 -29
  180. data/examples/i18n/pl/features/support/env.rb +0 -10
  181. data/examples/i18n/pl/lib/calculator.rb +0 -14
  182. data/examples/i18n/pt/Rakefile +0 -6
  183. data/examples/i18n/pt/features/adicao.feature +0 -11
  184. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -20
  185. data/examples/i18n/pt/features/support/env.rb +0 -10
  186. data/examples/i18n/pt/lib/calculadora.rb +0 -10
  187. data/examples/i18n/ro/Rakefile +0 -6
  188. data/examples/i18n/ro/features/adunare.feature +0 -12
  189. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +0 -26
  190. data/examples/i18n/ro/lib/calculator.rb +0 -11
  191. data/examples/i18n/ru/Rakefile +0 -6
  192. data/examples/i18n/ru/features/addition.feature +0 -11
  193. data/examples/i18n/ru/features/consecutive_calculations.feature +0 -17
  194. data/examples/i18n/ru/features/division.feature +0 -16
  195. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +0 -19
  196. data/examples/i18n/ru/features/support/env.rb +0 -10
  197. data/examples/i18n/ru/features/support/world.rb +0 -8
  198. data/examples/i18n/ru/lib/calculator.rb +0 -25
  199. data/examples/i18n/sk/Rakefile +0 -6
  200. data/examples/i18n/sk/features/addition.feature +0 -17
  201. data/examples/i18n/sk/features/division.feature +0 -10
  202. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +0 -29
  203. data/examples/i18n/sk/lib/calculator.rb +0 -14
  204. data/examples/i18n/sr-Cyrl/Rakefile +0 -6
  205. data/examples/i18n/sr-Cyrl/features/sabiranje.feature +0 -18
  206. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +0 -20
  207. data/examples/i18n/sr-Cyrl/features/support/env.rb +0 -10
  208. data/examples/i18n/sr-Cyrl/lib/calculator.rb +0 -12
  209. data/examples/i18n/sr-Latn/Rakefile +0 -6
  210. data/examples/i18n/sr-Latn/features/sabiranje.feature +0 -18
  211. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +0 -29
  212. data/examples/i18n/sr-Latn/lib/calculator.rb +0 -12
  213. data/examples/i18n/sv/Rakefile +0 -6
  214. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +0 -29
  215. data/examples/i18n/sv/features/summering.feature +0 -18
  216. data/examples/i18n/sv/lib/kalkulator.rb +0 -11
  217. data/examples/i18n/tr/Rakefile +0 -6
  218. data/examples/i18n/tr/features/bolme.feature +0 -10
  219. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +0 -29
  220. data/examples/i18n/tr/features/toplama.feature +0 -18
  221. data/examples/i18n/tr/lib/hesap_makinesi.rb +0 -15
  222. data/examples/i18n/uk/Rakefile +0 -6
  223. data/examples/i18n/uk/features/addition.feature +0 -11
  224. data/examples/i18n/uk/features/consecutive_calculations.feature +0 -17
  225. data/examples/i18n/uk/features/division.feature +0 -16
  226. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +0 -19
  227. data/examples/i18n/uk/features/support/env.rb +0 -10
  228. data/examples/i18n/uk/features/support/world.rb +0 -8
  229. data/examples/i18n/uk/lib/calculator.rb +0 -25
  230. data/examples/i18n/uz/Rakefile +0 -6
  231. data/examples/i18n/uz/features/addition.feature +0 -10
  232. data/examples/i18n/uz/features/consecutive_calculations.feature +0 -17
  233. data/examples/i18n/uz/features/division.feature +0 -17
  234. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +0 -19
  235. data/examples/i18n/uz/features/support/env.rb +0 -10
  236. data/examples/i18n/uz/features/support/world.rb +0 -8
  237. data/examples/i18n/uz/lib/calculator.rb +0 -25
  238. data/examples/i18n/zh-CN/Rakefile +0 -4
  239. data/examples/i18n/zh-CN/features/addition.feature +0 -18
  240. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +0 -31
  241. data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
  242. data/examples/i18n/zh-TW/Rakefile +0 -4
  243. data/examples/i18n/zh-TW/features/addition.feature +0 -17
  244. data/examples/i18n/zh-TW/features/division.feature +0 -11
  245. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +0 -29
  246. data/examples/i18n/zh-TW/lib/calculator.rb +0 -14
  247. data/examples/rspec_doubles/Rakefile +0 -4
  248. data/examples/rspec_doubles/features/mocking.feature +0 -9
  249. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +0 -19
  250. data/examples/rspec_doubles/features/support/env.rb +0 -12
  251. data/examples/sinatra/README.textile +0 -13
  252. data/examples/sinatra/Rakefile +0 -6
  253. data/examples/sinatra/app.rb +0 -14
  254. data/examples/sinatra/features/add.feature +0 -11
  255. data/examples/sinatra/features/step_definitions/add_steps.rb +0 -15
  256. data/examples/sinatra/features/support/env.rb +0 -15
  257. data/examples/sinatra/views/add.erb +0 -7
  258. data/examples/sinatra/views/layout.erb +0 -8
  259. data/examples/tcl/README.textile +0 -11
  260. data/examples/tcl/Rakefile +0 -6
  261. data/examples/tcl/features/fibonnacci.feature +0 -17
  262. data/examples/tcl/features/step_definitions/fib_steps.rb +0 -7
  263. data/examples/tcl/features/support/env.rb +0 -7
  264. data/examples/tcl/src/fib.tcl +0 -3
  265. data/examples/test_unit/Gemfile +0 -4
  266. data/examples/test_unit/Rakefile +0 -6
  267. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -20
  268. data/examples/test_unit/features/test_unit.feature +0 -9
  269. data/examples/watir/README.textile +0 -16
  270. data/examples/watir/Rakefile +0 -12
  271. data/examples/watir/cucumber.yml +0 -1
  272. data/examples/watir/features/search.feature +0 -12
  273. data/examples/watir/features/step_definitions/search_steps.rb +0 -27
  274. data/examples/watir/features/support/env.rb +0 -39
  275. data/examples/watir/features/support/screenshots.rb +0 -47
  276. data/features/docs/api/list_step_defs_as_json.feature +0 -64
  277. data/features/docs/api/listen_for_events.feature +0 -59
  278. data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -27
  279. data/features/docs/cli/backtraces.feature +0 -36
  280. data/features/docs/cli/dry_run.feature +0 -73
  281. data/features/docs/cli/exclude_files.feature +0 -18
  282. data/features/docs/cli/execute_with_tag_filter.feature +0 -119
  283. data/features/docs/cli/fail_fast.feature +0 -48
  284. data/features/docs/cli/finding_steps.feature +0 -28
  285. data/features/docs/cli/help.feature +0 -8
  286. data/features/docs/cli/i18n.feature +0 -42
  287. data/features/docs/cli/randomize.feature +0 -140
  288. data/features/docs/cli/require.feature +0 -27
  289. data/features/docs/cli/retry_failing_tests.feature +0 -92
  290. data/features/docs/cli/run_scenarios_matching_name.feature +0 -105
  291. data/features/docs/cli/run_specific_scenarios.feature +0 -77
  292. data/features/docs/cli/showing_differences.feature +0 -43
  293. data/features/docs/cli/specifying_multiple_formatters.feature +0 -68
  294. data/features/docs/cli/strict_mode.feature +0 -70
  295. data/features/docs/defining_steps/ambiguous_steps.feature +0 -89
  296. data/features/docs/defining_steps/nested_steps.feature +0 -181
  297. data/features/docs/defining_steps/nested_steps_i18n.feature +0 -37
  298. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -56
  299. data/features/docs/defining_steps/one_line_step_definitions.feature +0 -65
  300. data/features/docs/defining_steps/printing_messages.feature +0 -147
  301. data/features/docs/defining_steps/skip_scenario.feature +0 -31
  302. data/features/docs/defining_steps/snippets.feature +0 -56
  303. data/features/docs/defining_steps/table_diffing.feature +0 -50
  304. data/features/docs/events/gherkin_source_read_event.feature +0 -43
  305. data/features/docs/events/step_activated_event.feature +0 -36
  306. data/features/docs/events/step_definition_registered_event.feature +0 -29
  307. data/features/docs/events/test_case_finished_event.feature +0 -35
  308. data/features/docs/events/test_case_started_event.feature +0 -54
  309. data/features/docs/events/test_run_finished_event.feature +0 -40
  310. data/features/docs/events/test_run_started_event.feature +0 -41
  311. data/features/docs/events/test_step_finished_event.feature +0 -47
  312. data/features/docs/events/test_step_started_event.feature +0 -43
  313. data/features/docs/exception_in_after_hook.feature +0 -127
  314. data/features/docs/exception_in_after_step_hook.feature +0 -104
  315. data/features/docs/exception_in_around_hook.feature +0 -80
  316. data/features/docs/exception_in_before_hook.feature +0 -98
  317. data/features/docs/extending_cucumber/custom_filter.feature +0 -29
  318. data/features/docs/extending_cucumber/custom_formatter.feature +0 -94
  319. data/features/docs/formatters/api_methods.feature +0 -37
  320. data/features/docs/formatters/html_formatter.feature +0 -91
  321. data/features/docs/formatters/json_formatter.feature +0 -767
  322. data/features/docs/formatters/junit_formatter.feature +0 -455
  323. data/features/docs/formatters/pretty_formatter.feature +0 -74
  324. data/features/docs/formatters/progress_formatter.feature +0 -32
  325. data/features/docs/formatters/rerun_formatter.feature +0 -190
  326. data/features/docs/formatters/summary_formatter.feature +0 -35
  327. data/features/docs/formatters/usage_formatter.feature +0 -101
  328. data/features/docs/getting_started.feature +0 -28
  329. data/features/docs/gherkin/background.feature +0 -548
  330. data/features/docs/gherkin/doc_strings.feature +0 -76
  331. data/features/docs/gherkin/expand_option_for_outlines.feature +0 -47
  332. data/features/docs/gherkin/language_from_header.feature +0 -32
  333. data/features/docs/gherkin/outlines.feature +0 -158
  334. data/features/docs/gherkin/unicode_table.feature +0 -33
  335. data/features/docs/gherkin/using_descriptions.feature +0 -83
  336. data/features/docs/gherkin/using_star_notation.feature +0 -37
  337. data/features/docs/iso-8859-1.feature +0 -6
  338. data/features/docs/post_configuration_hook.feature +0 -33
  339. data/features/docs/profiles.feature +0 -120
  340. data/features/docs/rake_task.feature +0 -146
  341. data/features/docs/raketask.feature +0 -46
  342. data/features/docs/work_in_progress.feature +0 -157
  343. data/features/docs/writing_support_code/after_hooks.feature +0 -102
  344. data/features/docs/writing_support_code/after_step_hooks.feature +0 -55
  345. data/features/docs/writing_support_code/around_hooks.feature +0 -266
  346. data/features/docs/writing_support_code/before_hook.feature +0 -66
  347. data/features/docs/writing_support_code/hook_order.feature +0 -63
  348. data/features/docs/writing_support_code/load_path.feature +0 -17
  349. data/features/docs/writing_support_code/parameter_types.feature +0 -53
  350. data/features/docs/writing_support_code/state.feature +0 -32
  351. data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
  352. data/features/docs/writing_support_code/world.feature +0 -129
  353. data/features/lib/step_definitions/aruba_steps.rb +0 -21
  354. data/features/lib/step_definitions/cli_steps.rb +0 -4
  355. data/features/lib/step_definitions/cucumber_steps.rb +0 -75
  356. data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -16
  357. data/features/lib/step_definitions/json_steps.rb +0 -8
  358. data/features/lib/step_definitions/junit_steps.rb +0 -14
  359. data/features/lib/step_definitions/language_steps.rb +0 -9
  360. data/features/lib/step_definitions/profile_steps.rb +0 -16
  361. data/features/lib/step_definitions/retry_steps.rb +0 -55
  362. data/features/lib/step_definitions/ruby_steps.rb +0 -4
  363. data/features/lib/support/env.rb +0 -22
  364. data/features/lib/support/fake_wire_server.rb +0 -94
  365. data/features/lib/support/feature_factory.rb +0 -68
  366. data/features/lib/support/normalise_output.rb +0 -52
  367. data/features/lib/support/parameter_types.rb +0 -5
  368. data/gem_tasks/contributors.rake +0 -19
  369. data/gem_tasks/cov.rake +0 -6
  370. data/gem_tasks/downloads.rb +0 -8
  371. data/gem_tasks/environment.rake +0 -4
  372. data/gem_tasks/examples.rake +0 -12
  373. data/gem_tasks/fix_cr_lf.rake +0 -22
  374. data/gem_tasks/flog.rake +0 -5
  375. data/gem_tasks/rspec.rake +0 -7
  376. data/gem_tasks/sass.rake +0 -5
  377. data/gem_tasks/stats +0 -16
  378. data/gem_tasks/versions.txt +0 -74
  379. data/scripts/invite-collaborator +0 -40
  380. data/scripts/update-changelog +0 -86
  381. data/spec/cucumber/cli/configuration_spec.rb +0 -446
  382. data/spec/cucumber/cli/main_spec.rb +0 -84
  383. data/spec/cucumber/cli/options_spec.rb +0 -445
  384. data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
  385. data/spec/cucumber/cli/rerun_spec.rb +0 -86
  386. data/spec/cucumber/configuration_spec.rb +0 -148
  387. data/spec/cucumber/constantize_spec.rb +0 -20
  388. data/spec/cucumber/events_spec.rb +0 -9
  389. data/spec/cucumber/file_specs_spec.rb +0 -61
  390. data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
  391. data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
  392. data/spec/cucumber/filters/retry_spec.rb +0 -98
  393. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
  394. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
  395. data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
  396. data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
  397. data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
  398. data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
  399. data/spec/cucumber/formatter/duration_spec.rb +0 -23
  400. data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
  401. data/spec/cucumber/formatter/html_spec.rb +0 -543
  402. data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
  403. data/spec/cucumber/formatter/json_spec.rb +0 -815
  404. data/spec/cucumber/formatter/junit_spec.rb +0 -251
  405. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2175
  406. data/spec/cucumber/formatter/pretty_spec.rb +0 -907
  407. data/spec/cucumber/formatter/progress_spec.rb +0 -170
  408. data/spec/cucumber/formatter/rerun_spec.rb +0 -97
  409. data/spec/cucumber/formatter/spec_helper.rb +0 -84
  410. data/spec/cucumber/glue/proto_world_spec.rb +0 -63
  411. data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
  412. data/spec/cucumber/glue/snippet_spec.rb +0 -174
  413. data/spec/cucumber/glue/step_definition_spec.rb +0 -207
  414. data/spec/cucumber/hooks_spec.rb +0 -31
  415. data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -653
  416. data/spec/cucumber/project_initializer_spec.rb +0 -88
  417. data/spec/cucumber/rake/forked_spec.rb +0 -58
  418. data/spec/cucumber/rake/task_spec.rb +0 -86
  419. data/spec/cucumber/running_test_case_spec.rb +0 -140
  420. data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
  421. data/spec/cucumber/runtime/support_code_spec.rb +0 -17
  422. data/spec/cucumber/runtime_spec.rb +0 -21
  423. data/spec/cucumber/sell_cucumbers.feature +0 -19
  424. data/spec/cucumber/step_argument_spec.rb +0 -19
  425. data/spec/cucumber/step_match_search_spec.rb +0 -113
  426. data/spec/cucumber/step_match_spec.rb +0 -86
  427. data/spec/cucumber/world/pending_spec.rb +0 -48
  428. data/spec/spec_helper.rb +0 -30
  429. data/spec/support/standard_step_actions.rb +0 -19
@@ -1,543 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/formatter/spec_helper'
4
- require 'cucumber/formatter/html'
5
- require 'nokogiri'
6
- require 'cucumber/glue/registry_and_more'
7
- require 'rspec/mocks'
8
-
9
- module Cucumber
10
- module Formatter
11
- describe Html do
12
- extend SpecHelperDsl
13
- include SpecHelper
14
-
15
- RSpec::Matchers.define :have_css_node do |css, regexp|
16
- match do |doc|
17
- nodes = doc.css(css)
18
- nodes.detect{ |node| node.text =~ regexp }
19
- end
20
- end
21
-
22
- before(:each) do
23
- @out = StringIO.new
24
- @formatter = Html.new(runtime, @out, {})
25
- end
26
-
27
- it 'does not raise an error when visiting a blank feature name' do
28
- expect(-> {
29
- @formatter.feature_name('Feature', '')
30
- }).not_to raise_error
31
- end
32
-
33
- describe 'when writing the report to a file' do
34
- before(:each) do
35
- allow(@out).to receive(:respond_to?).with(:path).and_return(true)
36
- expect(@out).to receive(:path).and_return('out/file.html')
37
- run_defined_feature
38
- @doc = Nokogiri.HTML(@out.string)
39
- end
40
-
41
- describe 'with a step that embeds a snapshot' do
42
- define_steps do
43
- Given(/snap/) {
44
- RSpec::Mocks.allow_message(File, :file?) { true }
45
- embed('out/snapshot.jpeg', 'image/jpeg')
46
- }
47
- end
48
-
49
- define_feature(<<-FEATURE)
50
- Feature:
51
- Scenario:
52
- Given snap
53
- FEATURE
54
-
55
- it 'converts the snapshot path to a relative path' do
56
- expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'snapshot.jpeg'
57
- end
58
- end
59
- end
60
-
61
- describe 'given a single feature' do
62
- before(:each) do
63
- run_defined_feature
64
- @doc = Nokogiri.HTML(@out.string)
65
- end
66
-
67
- describe 'basic feature' do
68
- define_feature <<-FEATURE
69
- Feature: Bananas
70
- In order to find my inner monkey
71
- As a human
72
- I must eat bananas
73
- FEATURE
74
-
75
- it 'should output a main container div' do
76
- expect(@out.string).to match(/\<div class="cucumber"\>/)
77
- end
78
- end
79
-
80
- describe 'with a comment' do
81
- define_feature <<-FEATURE
82
- # Healthy
83
- Feature: Foo
84
- Scenario:
85
- Given passing
86
- FEATURE
87
-
88
- it { expect(@out.string).to match(/^\<!DOCTYPE/) }
89
- it { expect(@out.string).to match(/\<\/html\>$/) }
90
-
91
- it 'nests the comment within the feature' do
92
- expect(@doc).to have_css_node('.feature .comment', /Healthy/)
93
- end
94
-
95
- it 'properly closes the comment' do
96
- expect(@out.string).to match(%r{<pre class="comment"># Healthy<br/></pre>})
97
- end
98
- end
99
-
100
- describe 'with a comment at scenario level' do
101
- define_feature <<-FEATURE
102
- Feature: Foo
103
- # Healthy Scenario
104
- Scenario:
105
- Given passing
106
- FEATURE
107
-
108
- it { expect(@doc).to have_css_node('.scenario .comment', /Healthy Scenario/) }
109
- end
110
-
111
- describe 'with a tag' do
112
- define_feature <<-FEATURE
113
- @foo
114
- Feature: can't have standalone tag :)
115
- Scenario:
116
- Given passing
117
- FEATURE
118
-
119
- it { expect(@doc).to have_css_node('.feature .tag', /foo/) }
120
- end
121
-
122
- describe 'with a narrative' do
123
- define_feature <<-FEATURE
124
- Feature: Bananas
125
- In order to find my inner monkey
126
- As a human
127
- I must eat bananas
128
-
129
- Scenario:
130
- Given passing
131
- FEATURE
132
-
133
- it { expect(@doc).to have_css_node('.feature h2', /Bananas/) }
134
- it { expect(@doc).to have_css_node('.feature .narrative', /must eat bananas/) }
135
- end
136
-
137
- describe 'with a background' do
138
- define_feature <<-FEATURE
139
- Feature: Bananas
140
-
141
- Background:
142
- Given there are bananas
143
-
144
- Scenario:
145
- When the monkey eats a banana
146
- FEATURE
147
-
148
- it { expect(@doc).to have_css_node('.feature .background', /there are bananas/) }
149
- end
150
-
151
- describe 'with a scenario' do
152
- define_feature <<-FEATURE
153
- Feature: Banana party
154
-
155
- Scenario: Monkey eats banana
156
- Given there are bananas
157
- FEATURE
158
-
159
- it { expect(@doc).to have_css_node('.feature h3', /Monkey eats banana/) }
160
- it { expect(@doc).to have_css_node('.feature .scenario .step', /there are bananas/) }
161
- end
162
-
163
- describe 'with a scenario outline' do
164
- define_feature <<-FEATURE
165
- Feature: Fud Pyramid
166
-
167
- Scenario Outline: Monkey eats a balanced diet
168
- Given there are <Things>
169
-
170
- Examples: Fruit
171
- | Things |
172
- | apples |
173
- | bananas |
174
- Examples: Vegetables
175
- | Things |
176
- | broccoli |
177
- | carrots |
178
- FEATURE
179
-
180
- it { expect(@doc).to have_css_node('.feature .scenario.outline h4', /Fruit/) }
181
- it { expect(@doc).to have_css_node('.feature .scenario.outline h4', /Vegetables/) }
182
- it { expect(@doc.css('.feature .scenario.outline h4').length).to eq 2}
183
- it { expect(@doc).to have_css_node('.feature .scenario.outline table', //) }
184
- it { expect(@doc).to have_css_node('.feature .scenario.outline table td', /carrots/) }
185
- end
186
-
187
- describe 'with a step with a py string' do
188
- define_feature <<-FEATURE
189
- Feature: Traveling circus
190
-
191
- Scenario: Monkey goes to town
192
- Given there is a monkey called:
193
- """
194
- foo
195
- """
196
- FEATURE
197
-
198
- it { expect(@doc).to have_css_node('.feature .scenario .val', /foo/) }
199
- end
200
-
201
- describe 'with a multiline step arg' do
202
- define_steps do
203
- Given(/there are monkeys:/) { |table| }
204
- end
205
- define_feature <<-FEATURE
206
- Feature: Traveling circus
207
-
208
- Scenario: Monkey goes to town
209
- Given there are monkeys:
210
- | name |
211
- | foo |
212
- | bar |
213
- FEATURE
214
-
215
- it { expect(@doc).to have_css_node('.feature .scenario table td', /foo/) }
216
- it { expect(@out.string.include?('makeYellow(\'scenario_1\')')).to be false }
217
- end
218
-
219
- describe 'with a table in the background and the scenario' do
220
- define_feature <<-FEATURE
221
- Feature: accountant monkey
222
-
223
- Background:
224
- Given table:
225
- | a | b |
226
- | c | d |
227
- Scenario:
228
- Given another table:
229
- | e | f |
230
- | g | h |
231
- FEATURE
232
-
233
- it { expect(@doc.css('td').length).to eq 8 }
234
- end
235
-
236
- describe 'with a py string in the background and the scenario' do
237
- define_feature <<-FEATURE
238
- Feature: py strings
239
-
240
- Background:
241
- Given stuff:
242
- """
243
- foo
244
- """
245
- Scenario:
246
- Given more stuff:
247
- """
248
- bar
249
- """
250
- FEATURE
251
-
252
- it { expect(@doc.css('.feature .background pre.val').length).to eq 1 }
253
- it { expect(@doc.css('.feature .scenario pre.val').length).to eq 1 }
254
- end
255
-
256
- describe 'with a step that fails in the scenario' do
257
- define_steps do
258
- Given(/boo/) { raise StandardError, 'eek'.freeze }
259
- end
260
-
261
- define_feature(<<-FEATURE)
262
- Feature: Animal Cruelty
263
-
264
- Scenario: Monkey gets a fright
265
- Given boo
266
- FEATURE
267
-
268
- it { expect(@doc).to have_css_node('.feature .scenario .step.failed .message', /eek/) }
269
- it { expect(@doc).to have_css_node('.feature .scenario .step.failed .message', /StandardError/) }
270
- it 'has the backtrace embeded in the output once and only once' do
271
- html_str = @doc.to_s
272
- expect(html_str).not_to match(%r{<pre\b.*html_spec.rb:.*html_spec.rb:.*</pre>}m)
273
- expect(html_str).to match(%r{<pre\b.*html_spec.rb:.*</pre>}m)
274
- end
275
- end
276
-
277
- describe 'with a step that fails in the background' do
278
- define_steps do
279
- Given(/boo/) { raise 'eek' }
280
- end
281
-
282
- define_feature(<<-FEATURE)
283
- Feature: shouting
284
- Background:
285
- Given boo
286
- Scenario:
287
- Given yay
288
- FEATURE
289
-
290
- it { expect(@doc).to have_css_node('.feature .background .step.failed', /eek/) }
291
- it { expect(@out.string).not_to include('makeRed(\'scenario_0\')') }
292
- it { expect(@out.string).to include('makeRed(\'background_0\')') }
293
- it { expect(@doc).not_to have_css_node('.feature .scenario .step.failed', //) }
294
- it { expect(@doc).to have_css_node('.feature .scenario .step.undefined', /yay/) }
295
- it { expect(@doc).to have_css_node('.feature .background .backtrace', //) }
296
- it { expect(@doc).not_to have_css_node('.feature .scenario .backtrace', //) }
297
- end
298
-
299
- context 'with a before hook that fails' do
300
- describe 'in a scenario' do
301
- define_steps do
302
- Before { raise 'eek' }
303
- Given(/yay/) {}
304
- end
305
-
306
- define_feature(<<-FEATURE)
307
- Feature: shouting
308
- Scenario:
309
- Given yay
310
- FEATURE
311
-
312
- it { expect(@out.string).to include('makeRed(\'scenario_1\')') }
313
- it { expect(@doc).not_to have_css_node('.feature .scenario .step.failed', //) }
314
- it { expect(@doc).to have_css_node('.feature .scenario .step.skipped', /yay/) }
315
- end
316
-
317
- describe 'in a scenario outline' do
318
- define_steps do
319
- Before { raise 'eek' }
320
- Given(/yay/) {}
321
- end
322
-
323
- define_feature(<<-FEATURE)
324
- Feature: shouting
325
- Scenario Outline:
326
- Given <step>
327
- Examples:
328
- | step |
329
- | yay |
330
- FEATURE
331
-
332
- it { expect(@out.string).to include('makeRed(\'scenario_1\')') }
333
- it { expect(@doc).not_to have_css_node('.feature .scenario .step.failed', //) }
334
- it { expect(@doc).to have_css_node('.feature .scenario .step.skipped', /yay/) }
335
- end
336
-
337
- end
338
-
339
- describe 'with a step that embeds a snapshot' do
340
- define_steps do
341
- Given(/snap/) {
342
- RSpec::Mocks.allow_message(File, :file?) { true }
343
- embed('snapshot.jpeg', 'image/jpeg')
344
- }
345
- end
346
-
347
- define_feature(<<-FEATURE)
348
- Feature:
349
- Scenario:
350
- Given snap
351
- FEATURE
352
-
353
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'snapshot.jpeg' }
354
- end
355
-
356
- describe 'with a step that embeds a text' do
357
- define_steps do
358
- Given(/log/) { embed('log.txt', 'text/plain', 'foo') }
359
- end
360
-
361
- define_feature(<<-FEATURE)
362
- Feature:
363
- Scenario:
364
- Given log
365
- FEATURE
366
-
367
- it { expect(@doc.at('a#text_0')['href'].to_s).to eq 'log.txt' }
368
- end
369
-
370
- describe 'with a step that embeds a snapshot content manually' do
371
- define_steps do
372
- Given(/snap/) { embed('data:image/png;base64,YWJj', 'image/png') }
373
- end
374
-
375
- define_feature(<<-FEATURE)
376
- Feature:
377
- Scenario:
378
- Given snap
379
- FEATURE
380
-
381
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'data:image/png;base64,YWJj' }
382
- end
383
-
384
- describe 'with a step that embeds a snapshot content' do
385
- define_steps do
386
- Given(/snap/) { embed('YWJj', 'image/png;base64') }
387
- end
388
-
389
- define_feature(<<-FEATURE)
390
- Feature:
391
- Scenario:
392
- Given snap
393
- FEATURE
394
-
395
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'data:image/png;base64,YWJj' }
396
- end
397
-
398
- describe 'with an undefined Given step then an undefined And step' do
399
- define_feature(<<-FEATURE)
400
- Feature:
401
- Scenario:
402
- Given some undefined step
403
- And another undefined step
404
- FEATURE
405
-
406
- it { expect(@doc.css('pre').map { |pre| /^(Given|And)/.match(pre.text)[1] }).to eq %w(Given Given) }
407
- end
408
-
409
- describe 'with an undefined When step then an undefined And step' do
410
- define_feature(<<-FEATURE)
411
- Feature:
412
- Scenario:
413
- Given some undefined step
414
- When a different undefined step
415
- And another undefined step
416
- FEATURE
417
-
418
- it { expect(@doc.css('pre').map { |pre| /^(Given|When|And)/.match(pre.text)[1] }).to eq %w(Given When When) }
419
- end
420
-
421
- describe 'with an passing Then step and an undefined And step' do
422
- define_feature <<-FEATURE
423
- Feature:
424
- Scenario:
425
- Given this step passes
426
- Then this step passes
427
- And this step is undefined
428
- FEATURE
429
-
430
- define_steps do
431
- Given(/^this step passes$/) {}
432
- end
433
-
434
- it { expect(@doc.css('pre').map { |pre| /^(Given|Then)/.match(pre.text)[1] }).to eq ['Then'] }
435
- end
436
-
437
- describe 'with a output from hooks' do
438
- describe 'in a scenario' do
439
- define_feature <<-FEATURE
440
- Feature:
441
- Scenario:
442
- Given this step passes
443
- FEATURE
444
-
445
- define_steps do
446
- Before do
447
- puts 'Before hook'
448
- end
449
- AfterStep do
450
- puts 'AfterStep hook'
451
- end
452
- After do
453
- puts 'After hook'
454
- end
455
- Given(/^this step passes$/) {}
456
- end
457
-
458
- it 'should have ccs nodes ".step.message" for all the hooks' do
459
- expect(@doc.css('.step.message').length).to eq 3
460
- expect(@doc.css('.step.message')[0].text).to eq 'Before hook'
461
- expect(@doc.css('.step.message')[1].text).to eq 'AfterStep hook'
462
- expect(@doc.css('.step.message')[2].text).to eq 'After hook'
463
- end
464
- end
465
-
466
- describe 'in a scenario outline' do
467
- define_feature <<-FEATURE
468
- Feature:
469
- Scenario Outline:
470
- Given this step <status>
471
- Examples:
472
- | status |
473
- | passes |
474
- FEATURE
475
-
476
- define_steps do
477
- Before do
478
- puts 'Before hook'
479
- end
480
- AfterStep do
481
- puts 'AfterStep hook'
482
- end
483
- After do
484
- puts 'After hook'
485
- end
486
- Given(/^this step passes$/) {}
487
- end
488
-
489
- it { expect(@doc).to have_css_node('.message', /Before hook, AfterStep hook, After hook/) }
490
- end
491
- end
492
- end
493
- context 'in --expand mode' do
494
- let(:options) { { expand: true } }
495
- before(:each) do
496
- @out = StringIO.new
497
- @formatter = Html.new(runtime, @out, {:expand => true})
498
- run_defined_feature
499
- @doc = Nokogiri.HTML(@out.string)
500
- end
501
- describe 'with undefined * steps in a Scenario Outline' do
502
- define_feature <<-FEATURE
503
- Feature:
504
- Scenario Outline:
505
- * this step is <status>
506
- Then this step passes
507
- Examples:
508
- | status |
509
- | undefined |
510
- | undefined |
511
- FEATURE
512
-
513
- define_steps do
514
- Given(/^this step passes$/) {}
515
- end
516
-
517
- it { expect(@doc.css('pre').map { |pre| /^(Given|Then|When)/.match(pre.text)[1] }).to eq %w(Given Given) }
518
- end
519
-
520
- describe 'with a scenario outline and a before hook that fails' do
521
- define_steps do
522
- Before { raise 'eek' }
523
- Given(/yay/) {}
524
- end
525
-
526
- define_feature(<<-FEATURE)
527
- Feature: shouting
528
- Scenario Outline:
529
- Given <step>
530
- Examples:
531
- | step |
532
- | yay |
533
- FEATURE
534
-
535
- it { expect(@out.string).to include('makeRed(\'scenario_1\')') }
536
- it { expect(@out.string).to include('makeRed(\'scenario_1_1\')') }
537
- it { expect(@doc).not_to have_css_node('.feature .scenario .step.failed', //) }
538
- it { expect(@doc).to have_css_node('.feature .scenario .step.skipped', /yay/) }
539
- end
540
- end
541
- end
542
- end
543
- end
@@ -1,137 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/formatter/interceptor'
4
-
5
- module Cucumber::Formatter
6
- describe Interceptor::Pipe do
7
- let(:pipe) do
8
- pipe = double('original pipe')
9
-
10
- allow(pipe).to receive(:instance_of?) { true }
11
-
12
- pipe
13
- end
14
-
15
- describe '#wrap!' do
16
- it 'raises an ArgumentError if its not passed :stderr/:stdout' do
17
- expect {
18
- Interceptor::Pipe.wrap(:nonsense)
19
- }.to raise_error(ArgumentError)
20
- end
21
-
22
- context 'when passed :stderr' do
23
- before :each do
24
- @stderr = $stdout
25
- end
26
-
27
- it 'wraps $stderr' do
28
- wrapped = Interceptor::Pipe.wrap(:stderr)
29
-
30
- expect($stderr).to be_instance_of Interceptor::Pipe
31
- expect($stderr).to be wrapped
32
- end
33
-
34
- after :each do
35
- $stderr = @stderr
36
- end
37
- end
38
-
39
- context 'when passed :stdout' do
40
- before :each do
41
- @stdout = $stdout
42
- end
43
-
44
- it 'wraps $stdout' do
45
- wrapped = Interceptor::Pipe.wrap(:stdout)
46
-
47
- expect($stdout).to be_instance_of Interceptor::Pipe
48
- expect($stdout).to be wrapped
49
- end
50
-
51
- after :each do
52
- $stdout = @stdout
53
- end
54
- end
55
- end
56
-
57
- describe '#unwrap!' do
58
- before :each do
59
- @stdout = $stdout
60
- @wrapped = Interceptor::Pipe.wrap(:stdout)
61
- end
62
-
63
- it 'raises an ArgumentError if it wasn\'t passed :stderr/:stdout' do
64
- expect {
65
- Interceptor::Pipe.unwrap!(:nonsense)
66
- }.to raise_error(ArgumentError)
67
- end
68
-
69
- it 'resets $stdout when #unwrap! is called' do
70
- interceptor = Interceptor::Pipe.unwrap! :stdout
71
-
72
- expect(interceptor).to be_instance_of Interceptor::Pipe
73
- expect($stdout).not_to be interceptor
74
- end
75
-
76
- it 'noops if $stdout or $stderr has been overwritten' do
77
- $stdout = StringIO.new
78
- pipe = Interceptor::Pipe.unwrap! :stdout
79
- expect(pipe).to eq $stdout
80
-
81
- $stderr = StringIO.new
82
- pipe = Interceptor::Pipe.unwrap! :stderr
83
- expect(pipe).to eq $stderr
84
- end
85
-
86
- it 'disables the pipe bypass' do
87
- buffer = '(::)'
88
- Interceptor::Pipe.unwrap! :stdout
89
-
90
- expect(@wrapped).to receive(:write).with(buffer)
91
- expect(@wrapped.buffer).not_to receive(:<<)
92
-
93
- @wrapped.write(buffer)
94
- end
95
-
96
- after :each do
97
- $stdout = @stdout
98
- end
99
- end
100
-
101
- describe '#write' do
102
- let(:buffer) { 'Some stupid buffer' }
103
- let(:pi) { Interceptor::Pipe.new(pipe) }
104
-
105
- it 'writes arguments to the original pipe' do
106
- expect(pipe).to receive(:write).with(buffer) { buffer.size }
107
- expect(pi.write(buffer)).to eq buffer.size
108
- end
109
-
110
- it 'adds the buffer to its stored output' do
111
- allow(pipe).to receive(:write)
112
-
113
- pi.write(buffer)
114
-
115
- expect(pi.buffer).not_to be_empty
116
- expect(pi.buffer.first).to eq buffer
117
- end
118
- end
119
-
120
- describe '#method_missing' do
121
- let(:pi) { Interceptor::Pipe.new(pipe) }
122
-
123
- it 'passes #tty? to the original pipe' do
124
- expect(pipe).to receive(:tty?) { true }
125
- expect(pi.tty?).to be true
126
- end
127
- end
128
-
129
- describe '#respond_to' do
130
- let(:pi) { Interceptor::Pipe.wrap(:stderr) }
131
-
132
- it 'responds to all methods $stderr has' do
133
- $stderr.methods.each { |m| expect(pi.respond_to?(m)).to be true }
134
- end
135
- end
136
- end
137
- end