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,653 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
- require 'spec_helper'
4
- require 'cucumber/multiline_argument/data_table'
5
-
6
- module Cucumber
7
- module MultilineArgument
8
- describe DataTable do
9
- before do
10
- @table = DataTable.from([
11
- %w{one four seven},
12
- %w{4444 55555 666666}
13
- ])
14
- end
15
-
16
- it 'should have rows' do
17
- expect( @table.cells_rows[0].map{|cell| cell.value} ).to eq %w{one four seven}
18
- end
19
-
20
- it 'should have columns' do
21
- expect( @table.columns[1].map{|cell| cell.value} ).to eq %w{four 55555}
22
- end
23
-
24
- it 'should have same cell objects in rows and columns' do
25
- # 666666
26
- expect( @table.cells_rows[1][2] ).to equal(@table.columns[2][1])
27
- end
28
-
29
- it 'should be convertible to an array of hashes' do
30
- expect( @table.hashes ).to eq [
31
- {'one' => '4444', 'four' => '55555', 'seven' => '666666'}
32
- ]
33
- end
34
-
35
- it 'should accept symbols as keys for the hashes' do
36
- expect( @table.hashes.first[:one] ).to eq '4444'
37
- end
38
-
39
- it 'should return the row values in order' do
40
- expect( @table.rows.first ).to eq %w{4444 55555 666666}
41
- end
42
-
43
- describe '#symbolic_hashes' do
44
-
45
- it 'should covert data table to an array of hashes with symbols as keys' do
46
- ast_table = Cucumber::Core::Ast::DataTable.new([['foo', 'Bar', 'Foo Bar'], %w{1 22 333}], nil)
47
- data_table = DataTable.new(ast_table)
48
- expect(data_table.symbolic_hashes).to eq([{:foo => '1', :bar => '22', :foo_bar => '333'}])
49
- end
50
-
51
- it 'should be able to be accessed multiple times' do
52
- @table.symbolic_hashes
53
- expect{@table.symbolic_hashes}.to_not raise_error
54
- end
55
-
56
- it 'should not interfere with use of #hashes' do
57
- @table.symbolic_hashes
58
- expect{@table.hashes}.to_not raise_error
59
- end
60
-
61
- end
62
-
63
- describe '#map_column!' do
64
- it 'should allow mapping columns' do
65
- @table.map_column!('one') { |v| v.to_i }
66
- expect( @table.hashes.first['one'] ).to eq 4444
67
- end
68
-
69
- it 'applies the block once to each value' do
70
- headers = ['header']
71
- rows = ['value']
72
- table = DataTable.from [headers, rows]
73
- count = 0
74
- table.map_column!('header') { |value| count +=1 }
75
- table.rows
76
- expect( count ).to eq rows.size
77
- end
78
-
79
- it 'should allow mapping columns and take a symbol as the column name' do
80
- @table.map_column!(:one) { |v| v.to_i }
81
- expect( @table.hashes.first['one'] ).to eq 4444
82
- end
83
-
84
- it 'should allow mapping columns and modify the rows as well' do
85
- @table.map_column!(:one) { |v| v.to_i }
86
- expect( @table.rows.first ).to include(4444)
87
- expect( @table.rows.first ).to_not include('4444')
88
- end
89
-
90
- it 'should pass silently if a mapped column does not exist in non-strict mode' do
91
- expect {
92
- @table.map_column!('two', false) { |v| v.to_i }
93
- @table.hashes
94
- }.not_to raise_error
95
- end
96
-
97
- it 'should fail if a mapped column does not exist in strict mode' do
98
- expect {
99
- @table.map_column!('two', true) { |v| v.to_i }
100
- @table.hashes
101
- }.to raise_error('The column named "two" does not exist')
102
- end
103
-
104
- it 'should return the table' do
105
- expect( (@table.map_column!(:one) { |v| v.to_i }) ).to eq @table
106
- end
107
- end
108
-
109
- describe '#map_column' do
110
- it 'should allow mapping columns' do
111
- new_table = @table.map_column('one') { |v| v.to_i }
112
- expect( new_table.hashes.first['one'] ).to eq 4444
113
- end
114
-
115
- it 'applies the block once to each value' do
116
- headers = ['header']
117
- rows = ['value']
118
- table = DataTable.from [headers, rows]
119
- count = 0
120
- new_table = table.map_column('header') { |value| count +=1 }
121
- new_table.rows
122
- expect( count ).to eq rows.size
123
- end
124
-
125
- it 'should allow mapping columns and take a symbol as the column name' do
126
- new_table = @table.map_column(:one) { |v| v.to_i }
127
- expect( new_table.hashes.first['one'] ).to eq 4444
128
- end
129
-
130
- it 'should allow mapping columns and modify the rows as well' do
131
- new_table = @table.map_column(:one) { |v| v.to_i }
132
- expect( new_table.rows.first ).to include(4444)
133
- expect( new_table.rows.first ).to_not include('4444')
134
- end
135
-
136
- it 'should pass silently if a mapped column does not exist in non-strict mode' do
137
- expect {
138
- new_table = @table.map_column('two', false) { |v| v.to_i }
139
- new_table.hashes
140
- }.not_to raise_error
141
- end
142
-
143
- it 'should fail if a mapped column does not exist in strict mode' do
144
- expect {
145
- new_table = @table.map_column('two', true) { |v| v.to_i }
146
- new_table.hashes
147
- }.to raise_error('The column named "two" does not exist')
148
- end
149
-
150
- it 'should return a new table' do
151
- expect( (@table.map_column(:one) { |v| v.to_i }) ).to_not eq @table
152
- end
153
- end
154
-
155
- describe '#match' do
156
- before(:each) do
157
- @table = DataTable.from([
158
- %w{one four seven},
159
- %w{4444 55555 666666}
160
- ])
161
- end
162
-
163
- it 'returns nil if headers do not match' do
164
- expect( @table.match('does,not,match') ).to be_nil
165
- end
166
- it 'requires a table: prefix on match' do
167
- expect( @table.match('table:one,four,seven') ).to_not be_nil
168
- end
169
- it 'does not match if no table: prefix on match' do
170
- expect( @table.match('one,four,seven') ).to be_nil
171
- end
172
- end
173
-
174
- describe '#transpose' do
175
- before(:each) do
176
- @table = DataTable.from([
177
- %w{one 1111},
178
- %w{two 22222}
179
- ])
180
- end
181
-
182
- it 'should be convertible in to an array where each row is a hash' do
183
- expect( @table.transpose.hashes[0] ).to eq('one' => '1111', 'two' => '22222')
184
- end
185
- end
186
-
187
- describe '#rows_hash' do
188
-
189
- it 'should return a hash of the rows' do
190
- table = DataTable.from([
191
- %w{one 1111},
192
- %w{two 22222}
193
- ])
194
- expect( table.rows_hash ).to eq( 'one' => '1111', 'two' => '22222' )
195
- end
196
-
197
- it "should fail if the table doesn't have two columns" do
198
- faulty_table = DataTable.from([
199
- %w{one 1111 abc},
200
- %w{two 22222 def}
201
- ])
202
- expect {
203
- faulty_table.rows_hash
204
- }.to raise_error('The table must have exactly 2 columns')
205
- end
206
-
207
- it 'should support header and column mapping' do
208
- table = DataTable.from([
209
- %w{one 1111},
210
- %w{two 22222}
211
- ])
212
- t2 = table.map_headers({ 'two' => 'Two' }) { |header| header.upcase }.
213
- map_column('two', false) { |val| val.to_i }
214
- expect( t2.rows_hash ).to eq( 'ONE' => '1111', 'Two' => 22222 )
215
- end
216
- end
217
-
218
- describe '#map_headers!' do
219
- let(:table) do
220
- DataTable.from([
221
- %w{HELLO WORLD},
222
- %w{4444 55555}
223
- ])
224
- end
225
-
226
- it 'renames the columns to the specified values in the provided hash' do
227
- @table.map_headers!('one' => :three)
228
- expect( @table.hashes.first[:three] ).to eq '4444'
229
- end
230
-
231
- it 'allows renaming columns using regexp' do
232
- @table.map_headers!(/one|uno/ => :three)
233
- expect( @table.hashes.first[:three] ).to eq '4444'
234
- end
235
-
236
- it 'copies column mappings' do
237
- @table.map_column!('one') { |v| v.to_i }
238
- @table.map_headers!('one' => 'three')
239
- expect( @table.hashes.first['three'] ).to eq 4444
240
- end
241
-
242
- it 'takes a block and operates on all the headers with it' do
243
- table.map_headers! do |header|
244
- header.downcase
245
- end
246
- expect( table.hashes.first.keys ).to match %w[hello world]
247
- end
248
-
249
- it 'treats the mappings in the provided hash as overrides when used with a block' do
250
- table.map_headers!('WORLD' => 'foo') do |header|
251
- header.downcase
252
- end
253
-
254
- expect( table.hashes.first.keys ).to match %w[hello foo]
255
- end
256
- end
257
-
258
- describe '#map_headers' do
259
- let(:table) do
260
- DataTable.from([
261
- %w{HELLO WORLD},
262
- %w{4444 55555}
263
- ])
264
- end
265
-
266
- it 'renames the columns to the specified values in the provided hash' do
267
- table2 = @table.map_headers('one' => :three)
268
- expect( table2.hashes.first[:three] ).to eq '4444'
269
- end
270
-
271
- it 'allows renaming columns using regexp' do
272
- table2 = @table.map_headers(/one|uno/ => :three)
273
- expect( table2.hashes.first[:three] ).to eq '4444'
274
- end
275
-
276
- it 'copies column mappings' do
277
- @table.map_column!('one') { |v| v.to_i }
278
- table2 = @table.map_headers('one' => 'three')
279
- expect( table2.hashes.first['three'] ).to eq 4444
280
- end
281
-
282
- it 'takes a block and operates on all the headers with it' do
283
- table2 = table.map_headers do |header|
284
- header.downcase
285
- end
286
-
287
- expect( table2.hashes.first.keys ).to match %w[hello world]
288
- end
289
-
290
- it 'treats the mappings in the provided hash as overrides when used with a block' do
291
- table2 = table.map_headers('WORLD' => 'foo') do |header|
292
- header.downcase
293
- end
294
-
295
- expect( table2.hashes.first.keys ).to match %w[hello foo]
296
- end
297
- end
298
-
299
- describe 'diff!' do
300
- it 'should detect a complex diff' do
301
- t1 = DataTable.from(%{
302
- | 1 | 22 | 333 | 4444 |
303
- | 55555 | 666666 | 7777777 | 88888888 |
304
- | 999999999 | 0000000000 | 01010101010 | 121212121212 |
305
- | 4000 | ABC | DEF | 50000 |
306
- })
307
-
308
- t2 = DataTable.from(%{
309
- | a | 4444 | 1 |
310
- | bb | 88888888 | 55555 |
311
- | ccc | xxxxxxxx | 999999999 |
312
- | dddd | 4000 | 300 |
313
- | e | 50000 | 4000 |
314
- })
315
- expect { t1.diff!(t2) }.to raise_error(DataTable::Different) do |error|
316
- expect(error.table.to_s(indent: 14, color: false)).to eq %{
317
- | 1 | (-) 22 | (-) 333 | 4444 | (+) a |
318
- | 55555 | (-) 666666 | (-) 7777777 | 88888888 | (+) bb |
319
- | (-) 999999999 | (-) 0000000000 | (-) 01010101010 | (-) 121212121212 | (+) |
320
- | (+) 999999999 | (+) | (+) | (+) xxxxxxxx | (+) ccc |
321
- | (+) 300 | (+) | (+) | (+) 4000 | (+) dddd |
322
- | 4000 | (-) ABC | (-) DEF | 50000 | (+) e |
323
- }
324
- end
325
- end
326
-
327
- it 'should not change table when diffed with identical' do
328
- t = DataTable.from(%{
329
- |a|b|c|
330
- |d|e|f|
331
- |g|h|i|
332
- })
333
- t.diff!(t.dup)
334
- expect( t.to_s(:indent => 12, :color => false) ).to eq %{
335
- | a | b | c |
336
- | d | e | f |
337
- | g | h | i |
338
- }
339
- end
340
-
341
- context 'with empty tables' do
342
- it 'should allow diffing empty tables' do
343
- t1 = DataTable.from([[]])
344
- t2 = DataTable.from([[]])
345
- expect{ t1.diff!(t2) }.not_to raise_error
346
- end
347
-
348
- it 'should be able to diff when the right table is empty' do
349
- t1 = DataTable.from(%{
350
- |a|b|c|
351
- |d|e|f|
352
- |g|h|i|
353
- })
354
- t2 = DataTable.from([[]])
355
- expect { t1.diff!(t2) }.to raise_error(DataTable::Different) do |error|
356
- expect(error.table.to_s(indent: 16, color: false)).to eq %{
357
- | (-) a | (-) b | (-) c |
358
- | (-) d | (-) e | (-) f |
359
- | (-) g | (-) h | (-) i |
360
- }
361
- end
362
- end
363
-
364
- it 'should be able to diff when the left table is empty' do
365
- t1 = DataTable.from([[]])
366
- t2 = DataTable.from(%{
367
- |a|b|c|
368
- |d|e|f|
369
- |g|h|i|
370
- })
371
- expect { t1.diff!(t2) }.to raise_error(DataTable::Different) do |error|
372
- expect(error.table.to_s(indent: 16, color: false)).to eq %{
373
- | (+) a | (+) b | (+) c |
374
- | (+) d | (+) e | (+) f |
375
- | (+) g | (+) h | (+) i |
376
- }
377
- end
378
- end
379
- end
380
-
381
- context 'in case of duplicate header values' do
382
- it 'raises no error for two identical tables' do
383
- t = DataTable.from(%{
384
- |a|a|c|
385
- |d|e|f|
386
- |g|h|i|
387
- })
388
- t.diff!(t.dup)
389
- expect( t.to_s(:indent => 12, :color => false) ).to eq %{
390
- | a | a | c |
391
- | d | e | f |
392
- | g | h | i |
393
- }
394
- end
395
-
396
- it 'detects a diff in one cell' do
397
- t1 = DataTable.from(%{
398
- |a|a|c|
399
- |d|e|f|
400
- |g|h|i|
401
- })
402
- t2 = DataTable.from(%{
403
- |a|a|c|
404
- |d|oops|f|
405
- |g|h|i|
406
- })
407
- expect{ t1.diff!(t2) }.to raise_error(DataTable::Different) do |error|
408
- expect(error.table.to_s(indent: 16, color: false)).to eq %{
409
- | a | a | c |
410
- | (-) d | (-) e | (-) f |
411
- | (+) d | (+) oops | (+) f |
412
- | g | h | i |
413
- }
414
- end
415
- end
416
-
417
- it 'detects missing columns' do
418
- t1 = DataTable.from(%{
419
- |a|a|b|c|
420
- |d|d|e|f|
421
- |g|g|h|i|
422
- })
423
- t2 = DataTable.from(%{
424
- |a|b|c|
425
- |d|e|f|
426
- |g|h|i|
427
- })
428
- expect{ t1.diff!(t2) }.to raise_error(DataTable::Different) do |error|
429
- expect(error.table.to_s(indent: 16, color: false)).to eq %{
430
- | a | (-) a | b | c |
431
- | d | (-) d | e | f |
432
- | g | (-) g | h | i |
433
- }
434
- end
435
- end
436
-
437
- it 'detects surplus columns' do
438
- t1 = DataTable.from(%{
439
- |a|b|c|
440
- |d|e|f|
441
- |g|h|i|
442
- })
443
- t2 = DataTable.from(%{
444
- |a|b|a|c|
445
- |d|e|d|f|
446
- |g|h|g|i|
447
- })
448
- expect{ t1.diff!(t2, :surplus_col => true) }.to raise_error(DataTable::Different) do |error|
449
- expect(error.table.to_s(indent: 16, color: false)).to eq %{
450
- | a | b | c | (+) a |
451
- | d | e | f | (+) d |
452
- | g | h | i | (+) g |
453
- }
454
- end
455
- end
456
- end
457
-
458
- it 'should inspect missing and surplus cells' do
459
- t1 = DataTable.from([
460
- %w(name male lastname swedish),
461
- %w(aslak true hellesøy false)
462
- ])
463
- t2 = DataTable.from([
464
- %w(name male lastname swedish),
465
- ['aslak', true, 'hellesøy', false]
466
- ])
467
- expect { t1.diff!(t2) }.to raise_error(DataTable::Different) do |error|
468
- expect(error.table.to_s(indent: 14, color: false)).to eq %{
469
- | name | male | lastname | swedish |
470
- | (-) aslak | (-) (i) "true" | (-) hellesøy | (-) (i) "false" |
471
- | (+) aslak | (+) (i) true | (+) hellesøy | (+) (i) false |
472
- }
473
- end
474
- end
475
-
476
- it 'should allow column mapping of target before diffing' do
477
- t1 = DataTable.from([
478
- %w(name male),
479
- %w(aslak true)
480
- ])
481
- t1.map_column!('male') { |m| m == 'true' }
482
- t2 = DataTable.from([
483
- %w(name male),
484
- ['aslak', true]
485
- ])
486
- t1.diff!(t2)
487
- expect( t1.to_s(:indent => 12, :color => false) ).to eq %{
488
- | name | male |
489
- | aslak | true |
490
- }
491
- end
492
-
493
- it 'should allow column mapping of argument before diffing' do
494
- t1 = DataTable.from([
495
- %w(name male),
496
- ['aslak', true]
497
- ])
498
- t1.map_column!('male') {
499
- 'true'
500
- }
501
- t2 = DataTable.from([
502
- %w(name male),
503
- %w(aslak true)
504
- ])
505
- t2.diff!(t1)
506
- expect( t1.to_s(:indent => 12, :color => false) ).to eq %{
507
- | name | male |
508
- | aslak | true |
509
- }
510
- end
511
-
512
- it 'should allow header mapping before diffing' do
513
- t1 = DataTable.from([
514
- %w(Name Male),
515
- %w(aslak true)
516
- ])
517
- t1.map_headers!('Name' => 'name', 'Male' => 'male')
518
- t1.map_column!('male') { |m| m == 'true' }
519
- t2 = DataTable.from([
520
- %w(name male),
521
- ['aslak', true]
522
- ])
523
- t1.diff!(t2)
524
- expect( t1.to_s(:indent => 12, :color => false) ).to eq %{
525
- | name | male |
526
- | aslak | true |
527
- }
528
- end
529
-
530
- it 'should detect seemingly identical tables as different' do
531
- t1 = DataTable.from([
532
- %w(X Y),
533
- %w(2 1)
534
- ])
535
- t2 = DataTable.from([
536
- %w(X Y),
537
- [2, 1]
538
- ])
539
- expect { t1.diff!(t2) }.to raise_error(DataTable::Different) do |error|
540
- expect(error.table.to_s(indent: 14, color: false)).to eq %{
541
- | X | Y |
542
- | (-) (i) "2" | (-) (i) "1" |
543
- | (+) (i) 2 | (+) (i) 1 |
544
- }
545
- end
546
- end
547
-
548
- it 'should not allow mappings that match more than 1 column' do
549
- t1 = DataTable.from([
550
- %w(Cuke Duke),
551
- %w(Foo Bar)
552
- ])
553
- expect do
554
- t1.map_headers!(/uk/ => 'u')
555
- t1.hashes
556
- end.to raise_error(%{2 headers matched /uk/: ["Cuke", "Duke"]})
557
- end
558
-
559
- describe 'raising' do
560
- before do
561
- @t = DataTable.from(%{
562
- | a | b |
563
- | c | d |
564
- })
565
- expect( @t ).not_to eq nil
566
- end
567
-
568
- it 'should raise on missing rows' do
569
- t = DataTable.from(%{
570
- | a | b |
571
- })
572
- expect { @t.dup.diff!(t) }.to raise_error(DataTable::Different)
573
- expect { @t.dup.diff!(t, :missing_row => false) }.not_to raise_error
574
- end
575
-
576
- it 'should not raise on surplus rows when surplus is at the end' do
577
- t = DataTable.from(%{
578
- | a | b |
579
- | c | d |
580
- | e | f |
581
- })
582
- expect { @t.dup.diff!(t) }.to raise_error(DataTable::Different)
583
- expect { @t.dup.diff!(t, :surplus_row => false) }.not_to raise_error
584
- end
585
-
586
- it 'should not raise on surplus rows when surplus is interleaved' do
587
- t1 = DataTable.from(%{
588
- | row_1 | row_2 |
589
- | four | 4 |
590
- })
591
- t2 = DataTable.from(%{
592
- | row_1 | row_2 |
593
- | one | 1 |
594
- | two | 2 |
595
- | three | 3 |
596
- | four | 4 |
597
- | five | 5 |
598
- })
599
- expect { t1.dup.diff!(t2) }.to raise_error(DataTable::Different)
600
- expect { t1.dup.diff!(t2, :surplus_row => false) }.not_to raise_error
601
- end
602
-
603
- it 'should raise on missing columns' do
604
- t = DataTable.from(%{
605
- | a |
606
- | c |
607
- })
608
- expect { @t.dup.diff!(t) }.to raise_error(DataTable::Different)
609
- expect { @t.dup.diff!(t, :missing_col => false) }.not_to raise_error
610
- end
611
-
612
- it 'should not raise on surplus columns' do
613
- t = DataTable.from(%{
614
- | a | b | x |
615
- | c | d | y |
616
- })
617
- expect { @t.dup.diff!(t) }.not_to raise_error
618
- expect { @t.dup.diff!(t, :surplus_col => true) }.to raise_error(DataTable::Different)
619
- end
620
-
621
- it 'should not raise on misplaced columns' do
622
- t = DataTable.from(%{
623
- | b | a |
624
- | d | c |
625
- })
626
- expect { @t.dup.diff!(t) }.not_to raise_error
627
- expect { @t.dup.diff!(t, :misplaced_col => true) }.to raise_error(DataTable::Different)
628
- end
629
- end
630
-
631
- it 'can compare to an Array' do
632
- t = DataTable.from(%{
633
- | b | a |
634
- | d | c |
635
- })
636
- other = [ %w{b a}, %w{d c} ]
637
-
638
- expect { t.diff!(other) }.not_to raise_error
639
- end
640
- end
641
-
642
- describe '#from' do
643
- it 'should allow Array of Hash' do
644
- t1 = DataTable.from([{'name' => 'aslak', 'male' => 'true'}])
645
- expect( t1.to_s(:indent => 12, :color => false) ).to eq %{
646
- | male | name |
647
- | true | aslak |
648
- }
649
- end
650
- end
651
- end
652
- end
653
- end