gherkin 2.12.2 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (333) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -15
  3. data/CONTRIBUTING.md +23 -0
  4. data/Gemfile +0 -3
  5. data/LICENSE +18 -17
  6. data/Makefile +65 -0
  7. data/README.md +9 -268
  8. data/Rakefile +17 -19
  9. data/bin/gherkin-generate-ast +21 -0
  10. data/bin/gherkin-generate-pickles +25 -0
  11. data/bin/gherkin-generate-tokens +12 -0
  12. data/gherkin-ruby.razor +218 -0
  13. data/gherkin.gemspec +22 -76
  14. data/lib/gherkin/ast_builder.rb +243 -0
  15. data/lib/gherkin/ast_node.rb +30 -0
  16. data/lib/gherkin/dialect.rb +58 -0
  17. data/lib/gherkin/errors.rb +45 -0
  18. data/lib/gherkin/gherkin-languages.json +2968 -0
  19. data/lib/gherkin/gherkin_line.rb +95 -0
  20. data/lib/gherkin/parser.rb +1910 -0
  21. data/lib/gherkin/pickles/compiler.rb +164 -0
  22. data/lib/gherkin/token.rb +18 -0
  23. data/lib/gherkin/token_formatter_builder.rb +39 -0
  24. data/lib/gherkin/token_matcher.rb +169 -0
  25. data/lib/gherkin/token_scanner.rb +40 -0
  26. data/spec/capture_warnings.rb +68 -0
  27. data/spec/coverage.rb +10 -0
  28. data/spec/gherkin/parser_spec.rb +146 -0
  29. metadata +60 -567
  30. data/.gitattributes +0 -2
  31. data/.mailmap +0 -2
  32. data/.rbenv-gemsets +0 -1
  33. data/.rspec +0 -1
  34. data/.ruby-gemset +0 -1
  35. data/.ruby-version +0 -1
  36. data/.yardopts +0 -5
  37. data/History.md +0 -881
  38. data/build_native_gems.sh +0 -7
  39. data/cucumber.yml +0 -5
  40. data/examples/parse_and_output_json.rb +0 -19
  41. data/ext/gherkin_lexer_ar/extconf.rb +0 -6
  42. data/ext/gherkin_lexer_ar/gherkin_lexer_ar.c +0 -1432
  43. data/ext/gherkin_lexer_bg/extconf.rb +0 -6
  44. data/ext/gherkin_lexer_bg/gherkin_lexer_bg.c +0 -1655
  45. data/ext/gherkin_lexer_bm/extconf.rb +0 -6
  46. data/ext/gherkin_lexer_bm/gherkin_lexer_bm.c +0 -1516
  47. data/ext/gherkin_lexer_ca/extconf.rb +0 -6
  48. data/ext/gherkin_lexer_ca/gherkin_lexer_ca.c +0 -1581
  49. data/ext/gherkin_lexer_cs/extconf.rb +0 -6
  50. data/ext/gherkin_lexer_cs/gherkin_lexer_cs.c +0 -1515
  51. data/ext/gherkin_lexer_cy_gb/extconf.rb +0 -6
  52. data/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c +0 -1282
  53. data/ext/gherkin_lexer_da/extconf.rb +0 -6
  54. data/ext/gherkin_lexer_da/gherkin_lexer_da.c +0 -1298
  55. data/ext/gherkin_lexer_de/extconf.rb +0 -6
  56. data/ext/gherkin_lexer_de/gherkin_lexer_de.c +0 -1425
  57. data/ext/gherkin_lexer_el/extconf.rb +0 -6
  58. data/ext/gherkin_lexer_el/gherkin_lexer_el.c +0 -1919
  59. data/ext/gherkin_lexer_en/extconf.rb +0 -6
  60. data/ext/gherkin_lexer_en/gherkin_lexer_en.c +0 -1418
  61. data/ext/gherkin_lexer_en_au/extconf.rb +0 -6
  62. data/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c +0 -1765
  63. data/ext/gherkin_lexer_en_lol/extconf.rb +0 -6
  64. data/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c +0 -1177
  65. data/ext/gherkin_lexer_en_old/extconf.rb +0 -6
  66. data/ext/gherkin_lexer_en_old/gherkin_lexer_en_old.c +0 -1309
  67. data/ext/gherkin_lexer_en_pirate/extconf.rb +0 -6
  68. data/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c +0 -1471
  69. data/ext/gherkin_lexer_en_scouse/extconf.rb +0 -6
  70. data/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c +0 -1634
  71. data/ext/gherkin_lexer_en_tx/extconf.rb +0 -6
  72. data/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c +0 -1265
  73. data/ext/gherkin_lexer_eo/extconf.rb +0 -6
  74. data/ext/gherkin_lexer_eo/gherkin_lexer_eo.c +0 -1241
  75. data/ext/gherkin_lexer_es/extconf.rb +0 -6
  76. data/ext/gherkin_lexer_es/gherkin_lexer_es.c +0 -1399
  77. data/ext/gherkin_lexer_et/extconf.rb +0 -6
  78. data/ext/gherkin_lexer_et/gherkin_lexer_et.c +0 -1236
  79. data/ext/gherkin_lexer_fa/extconf.rb +0 -6
  80. data/ext/gherkin_lexer_fa/gherkin_lexer_fa.c +0 -1475
  81. data/ext/gherkin_lexer_fi/extconf.rb +0 -6
  82. data/ext/gherkin_lexer_fi/gherkin_lexer_fi.c +0 -1215
  83. data/ext/gherkin_lexer_fr/extconf.rb +0 -6
  84. data/ext/gherkin_lexer_fr/gherkin_lexer_fr.c +0 -1493
  85. data/ext/gherkin_lexer_gl/extconf.rb +0 -6
  86. data/ext/gherkin_lexer_gl/gherkin_lexer_gl.c +0 -1374
  87. data/ext/gherkin_lexer_he/extconf.rb +0 -6
  88. data/ext/gherkin_lexer_he/gherkin_lexer_he.c +0 -1374
  89. data/ext/gherkin_lexer_hi/extconf.rb +0 -6
  90. data/ext/gherkin_lexer_hi/gherkin_lexer_hi.c +0 -1848
  91. data/ext/gherkin_lexer_hr/extconf.rb +0 -6
  92. data/ext/gherkin_lexer_hr/gherkin_lexer_hr.c +0 -1323
  93. data/ext/gherkin_lexer_hu/extconf.rb +0 -6
  94. data/ext/gherkin_lexer_hu/gherkin_lexer_hu.c +0 -1376
  95. data/ext/gherkin_lexer_id/extconf.rb +0 -6
  96. data/ext/gherkin_lexer_id/gherkin_lexer_id.c +0 -1208
  97. data/ext/gherkin_lexer_is/extconf.rb +0 -6
  98. data/ext/gherkin_lexer_is/gherkin_lexer_is.c +0 -1376
  99. data/ext/gherkin_lexer_it/extconf.rb +0 -6
  100. data/ext/gherkin_lexer_it/gherkin_lexer_it.c +0 -1340
  101. data/ext/gherkin_lexer_ja/extconf.rb +0 -6
  102. data/ext/gherkin_lexer_ja/gherkin_lexer_ja.c +0 -1699
  103. data/ext/gherkin_lexer_kn/extconf.rb +0 -6
  104. data/ext/gherkin_lexer_kn/gherkin_lexer_kn.c +0 -1965
  105. data/ext/gherkin_lexer_ko/extconf.rb +0 -6
  106. data/ext/gherkin_lexer_ko/gherkin_lexer_ko.c +0 -1360
  107. data/ext/gherkin_lexer_lt/extconf.rb +0 -6
  108. data/ext/gherkin_lexer_lt/gherkin_lexer_lt.c +0 -1296
  109. data/ext/gherkin_lexer_lu/extconf.rb +0 -6
  110. data/ext/gherkin_lexer_lu/gherkin_lexer_lu.c +0 -1389
  111. data/ext/gherkin_lexer_lv/extconf.rb +0 -6
  112. data/ext/gherkin_lexer_lv/gherkin_lexer_lv.c +0 -1425
  113. data/ext/gherkin_lexer_nl/extconf.rb +0 -6
  114. data/ext/gherkin_lexer_nl/gherkin_lexer_nl.c +0 -1368
  115. data/ext/gherkin_lexer_no/extconf.rb +0 -6
  116. data/ext/gherkin_lexer_no/gherkin_lexer_no.c +0 -1311
  117. data/ext/gherkin_lexer_pa/extconf.rb +0 -6
  118. data/ext/gherkin_lexer_pa/gherkin_lexer_pa.c +0 -2160
  119. data/ext/gherkin_lexer_pl/extconf.rb +0 -6
  120. data/ext/gherkin_lexer_pl/gherkin_lexer_pl.c +0 -1738
  121. data/ext/gherkin_lexer_pt/extconf.rb +0 -6
  122. data/ext/gherkin_lexer_pt/gherkin_lexer_pt.c +0 -1711
  123. data/ext/gherkin_lexer_ro/extconf.rb +0 -6
  124. data/ext/gherkin_lexer_ro/gherkin_lexer_ro.c +0 -1427
  125. data/ext/gherkin_lexer_ru/extconf.rb +0 -6
  126. data/ext/gherkin_lexer_ru/gherkin_lexer_ru.c +0 -2071
  127. data/ext/gherkin_lexer_sk/extconf.rb +0 -6
  128. data/ext/gherkin_lexer_sk/gherkin_lexer_sk.c +0 -1739
  129. data/ext/gherkin_lexer_sr_cyrl/extconf.rb +0 -6
  130. data/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c +0 -2112
  131. data/ext/gherkin_lexer_sr_latn/extconf.rb +0 -6
  132. data/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c +0 -1567
  133. data/ext/gherkin_lexer_sv/extconf.rb +0 -6
  134. data/ext/gherkin_lexer_sv/gherkin_lexer_sv.c +0 -1324
  135. data/ext/gherkin_lexer_th/extconf.rb +0 -6
  136. data/ext/gherkin_lexer_th/gherkin_lexer_th.c +0 -2840
  137. data/ext/gherkin_lexer_tl/extconf.rb +0 -6
  138. data/ext/gherkin_lexer_tl/gherkin_lexer_tl.c +0 -2021
  139. data/ext/gherkin_lexer_tr/extconf.rb +0 -6
  140. data/ext/gherkin_lexer_tr/gherkin_lexer_tr.c +0 -1347
  141. data/ext/gherkin_lexer_tt/extconf.rb +0 -6
  142. data/ext/gherkin_lexer_tt/gherkin_lexer_tt.c +0 -1936
  143. data/ext/gherkin_lexer_uk/extconf.rb +0 -6
  144. data/ext/gherkin_lexer_uk/gherkin_lexer_uk.c +0 -1941
  145. data/ext/gherkin_lexer_uz/extconf.rb +0 -6
  146. data/ext/gherkin_lexer_uz/gherkin_lexer_uz.c +0 -1651
  147. data/ext/gherkin_lexer_vi/extconf.rb +0 -6
  148. data/ext/gherkin_lexer_vi/gherkin_lexer_vi.c +0 -1458
  149. data/ext/gherkin_lexer_zh_cn/extconf.rb +0 -6
  150. data/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c +0 -1314
  151. data/ext/gherkin_lexer_zh_tw/extconf.rb +0 -6
  152. data/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c +0 -1307
  153. data/features/.cucumber/stepdefs.json +0 -244
  154. data/features/escaped_pipes.feature +0 -8
  155. data/features/feature_parser.feature +0 -237
  156. data/features/json_formatter.feature +0 -498
  157. data/features/json_parser.feature +0 -331
  158. data/features/native_lexer.feature +0 -19
  159. data/features/parser_with_native_lexer.feature +0 -205
  160. data/features/pretty_formatter.feature +0 -17
  161. data/features/step_definitions/eyeball_steps.rb +0 -3
  162. data/features/step_definitions/gherkin_steps.rb +0 -29
  163. data/features/step_definitions/json_formatter_steps.rb +0 -30
  164. data/features/step_definitions/json_parser_steps.rb +0 -21
  165. data/features/step_definitions/pretty_formatter_steps.rb +0 -85
  166. data/features/steps_parser.feature +0 -46
  167. data/features/support/env.rb +0 -41
  168. data/install_mingw_os_x.sh +0 -5
  169. data/js/.npmignore +0 -1
  170. data/js/lib/gherkin/lexer/.npmignore +0 -0
  171. data/lib/gherkin.rb +0 -2
  172. data/lib/gherkin/README.md +0 -7
  173. data/lib/gherkin/c_lexer.rb +0 -17
  174. data/lib/gherkin/formatter/ansi_escapes.rb +0 -97
  175. data/lib/gherkin/formatter/argument.rb +0 -16
  176. data/lib/gherkin/formatter/escaping.rb +0 -15
  177. data/lib/gherkin/formatter/filter_formatter.rb +0 -150
  178. data/lib/gherkin/formatter/hashable.rb +0 -25
  179. data/lib/gherkin/formatter/json_formatter.rb +0 -133
  180. data/lib/gherkin/formatter/line_filter.rb +0 -26
  181. data/lib/gherkin/formatter/model.rb +0 -281
  182. data/lib/gherkin/formatter/pretty_formatter.rb +0 -245
  183. data/lib/gherkin/formatter/regexp_filter.rb +0 -21
  184. data/lib/gherkin/formatter/step_printer.rb +0 -21
  185. data/lib/gherkin/formatter/tag_count_formatter.rb +0 -47
  186. data/lib/gherkin/formatter/tag_filter.rb +0 -19
  187. data/lib/gherkin/i18n.json +0 -786
  188. data/lib/gherkin/i18n.rb +0 -176
  189. data/lib/gherkin/json_parser.rb +0 -177
  190. data/lib/gherkin/lexer/ar.rb +0 -1170
  191. data/lib/gherkin/lexer/bg.rb +0 -1382
  192. data/lib/gherkin/lexer/bm.rb +0 -1250
  193. data/lib/gherkin/lexer/ca.rb +0 -1310
  194. data/lib/gherkin/lexer/cs.rb +0 -1246
  195. data/lib/gherkin/lexer/cy_gb.rb +0 -1032
  196. data/lib/gherkin/lexer/da.rb +0 -1048
  197. data/lib/gherkin/lexer/de.rb +0 -1166
  198. data/lib/gherkin/lexer/el.rb +0 -1628
  199. data/lib/gherkin/lexer/en.rb +0 -1156
  200. data/lib/gherkin/lexer/en_au.rb +0 -1486
  201. data/lib/gherkin/lexer/en_lol.rb +0 -934
  202. data/lib/gherkin/lexer/en_old.rb +0 -1037
  203. data/lib/gherkin/lexer/en_pirate.rb +0 -1210
  204. data/lib/gherkin/lexer/en_scouse.rb +0 -1362
  205. data/lib/gherkin/lexer/en_tx.rb +0 -1016
  206. data/lib/gherkin/lexer/encoding.rb +0 -41
  207. data/lib/gherkin/lexer/eo.rb +0 -995
  208. data/lib/gherkin/lexer/es.rb +0 -1140
  209. data/lib/gherkin/lexer/et.rb +0 -990
  210. data/lib/gherkin/lexer/fa.rb +0 -1214
  211. data/lib/gherkin/lexer/fi.rb +0 -969
  212. data/lib/gherkin/lexer/fr.rb +0 -1228
  213. data/lib/gherkin/lexer/gl.rb +0 -1117
  214. data/lib/gherkin/lexer/he.rb +0 -1118
  215. data/lib/gherkin/lexer/hi.rb +0 -1559
  216. data/lib/gherkin/lexer/hr.rb +0 -1066
  217. data/lib/gherkin/lexer/hu.rb +0 -1118
  218. data/lib/gherkin/lexer/i18n_lexer.rb +0 -48
  219. data/lib/gherkin/lexer/id.rb +0 -963
  220. data/lib/gherkin/lexer/is.rb +0 -1120
  221. data/lib/gherkin/lexer/it.rb +0 -1086
  222. data/lib/gherkin/lexer/ja.rb +0 -1418
  223. data/lib/gherkin/lexer/kn.rb +0 -1672
  224. data/lib/gherkin/lexer/ko.rb +0 -1102
  225. data/lib/gherkin/lexer/lt.rb +0 -1045
  226. data/lib/gherkin/lexer/lu.rb +0 -1132
  227. data/lib/gherkin/lexer/lv.rb +0 -1166
  228. data/lib/gherkin/lexer/nl.rb +0 -1115
  229. data/lib/gherkin/lexer/no.rb +0 -1060
  230. data/lib/gherkin/lexer/pa.rb +0 -1852
  231. data/lib/gherkin/lexer/pl.rb +0 -1457
  232. data/lib/gherkin/lexer/pt.rb +0 -1430
  233. data/lib/gherkin/lexer/ro.rb +0 -1164
  234. data/lib/gherkin/lexer/ru.rb +0 -1766
  235. data/lib/gherkin/lexer/sk.rb +0 -1452
  236. data/lib/gherkin/lexer/sr_cyrl.rb +0 -1803
  237. data/lib/gherkin/lexer/sr_latn.rb +0 -1294
  238. data/lib/gherkin/lexer/sv.rb +0 -1070
  239. data/lib/gherkin/lexer/th.rb +0 -2492
  240. data/lib/gherkin/lexer/tl.rb +0 -1726
  241. data/lib/gherkin/lexer/tr.rb +0 -1092
  242. data/lib/gherkin/lexer/tt.rb +0 -1643
  243. data/lib/gherkin/lexer/uk.rb +0 -1646
  244. data/lib/gherkin/lexer/uz.rb +0 -1376
  245. data/lib/gherkin/lexer/vi.rb +0 -1198
  246. data/lib/gherkin/lexer/zh_cn.rb +0 -1058
  247. data/lib/gherkin/lexer/zh_tw.rb +0 -1052
  248. data/lib/gherkin/listener/event.rb +0 -45
  249. data/lib/gherkin/listener/formatter_listener.rb +0 -150
  250. data/lib/gherkin/native.rb +0 -7
  251. data/lib/gherkin/native/java.rb +0 -72
  252. data/lib/gherkin/native/null.rb +0 -5
  253. data/lib/gherkin/native/therubyracer.rb +0 -41
  254. data/lib/gherkin/parser/meta.txt +0 -5
  255. data/lib/gherkin/parser/parser.rb +0 -166
  256. data/lib/gherkin/parser/root.txt +0 -11
  257. data/lib/gherkin/parser/steps.txt +0 -4
  258. data/lib/gherkin/platform.rb +0 -13
  259. data/lib/gherkin/rubify.rb +0 -31
  260. data/lib/gherkin/tag_expression.rb +0 -63
  261. data/ragel/lexer.c.rl.erb +0 -454
  262. data/ragel/lexer.java.rl.erb +0 -219
  263. data/ragel/lexer.js.rl.erb +0 -322
  264. data/ragel/lexer.rb.rl.erb +0 -179
  265. data/ragel/lexer_common.rl.erb +0 -50
  266. data/spec/gherkin/c_lexer_spec.rb +0 -22
  267. data/spec/gherkin/fixtures/1.feature +0 -8
  268. data/spec/gherkin/fixtures/comments_in_table.feature +0 -9
  269. data/spec/gherkin/fixtures/complex.feature +0 -45
  270. data/spec/gherkin/fixtures/complex.json +0 -139
  271. data/spec/gherkin/fixtures/complex_for_filtering.feature +0 -60
  272. data/spec/gherkin/fixtures/complex_with_tags.feature +0 -61
  273. data/spec/gherkin/fixtures/dos_line_endings.feature +0 -45
  274. data/spec/gherkin/fixtures/examples_with_only_header.feature +0 -14
  275. data/spec/gherkin/fixtures/hantu_pisang.feature +0 -35
  276. data/spec/gherkin/fixtures/i18n_fr.feature +0 -14
  277. data/spec/gherkin/fixtures/i18n_fr2.feature +0 -8
  278. data/spec/gherkin/fixtures/i18n_no.feature +0 -7
  279. data/spec/gherkin/fixtures/i18n_pt1.feature +0 -44
  280. data/spec/gherkin/fixtures/i18n_pt2.feature +0 -4
  281. data/spec/gherkin/fixtures/i18n_pt3.feature +0 -4
  282. data/spec/gherkin/fixtures/i18n_pt4.feature +0 -4
  283. data/spec/gherkin/fixtures/i18n_zh-CN.feature +0 -9
  284. data/spec/gherkin/fixtures/iso-8859-1.feature +0 -6
  285. data/spec/gherkin/fixtures/issue_145.feature +0 -22
  286. data/spec/gherkin/fixtures/scenario_outline_with_tags.feature +0 -13
  287. data/spec/gherkin/fixtures/scenario_without_steps.feature +0 -5
  288. data/spec/gherkin/fixtures/simple_with_comments.feature +0 -7
  289. data/spec/gherkin/fixtures/simple_with_tags.feature +0 -11
  290. data/spec/gherkin/fixtures/with_bom.feature +0 -3
  291. data/spec/gherkin/fixtures/with_bom_and_language_spec.feature +0 -4
  292. data/spec/gherkin/formatter/ansi_escapes_spec.rb +0 -32
  293. data/spec/gherkin/formatter/filter_formatter_spec.rb +0 -204
  294. data/spec/gherkin/formatter/json_formatter_spec.rb +0 -179
  295. data/spec/gherkin/formatter/model_spec.rb +0 -28
  296. data/spec/gherkin/formatter/pretty_formatter_spec.rb +0 -184
  297. data/spec/gherkin/formatter/spaces.feature +0 -9
  298. data/spec/gherkin/formatter/step_printer_spec.rb +0 -55
  299. data/spec/gherkin/formatter/tabs.feature +0 -9
  300. data/spec/gherkin/formatter/tag_count_formatter_spec.rb +0 -30
  301. data/spec/gherkin/i18n_spec.rb +0 -256
  302. data/spec/gherkin/java_lexer_spec.rb +0 -20
  303. data/spec/gherkin/json_parser_spec.rb +0 -165
  304. data/spec/gherkin/lexer/i18n_lexer_spec.rb +0 -65
  305. data/spec/gherkin/native_lexer_spec.rb +0 -29
  306. data/spec/gherkin/parser/parser_spec.rb +0 -16
  307. data/spec/gherkin/rubify_spec.rb +0 -23
  308. data/spec/gherkin/sexp_recorder.rb +0 -59
  309. data/spec/gherkin/shared/doc_string_group.rb +0 -161
  310. data/spec/gherkin/shared/encoding_group.rb +0 -48
  311. data/spec/gherkin/shared/lexer_group.rb +0 -589
  312. data/spec/gherkin/shared/row_group.rb +0 -123
  313. data/spec/gherkin/shared/tags_group.rb +0 -52
  314. data/spec/gherkin/tag_expression_spec.rb +0 -146
  315. data/spec/spec_helper.rb +0 -94
  316. data/tasks/apidoc.rake +0 -32
  317. data/tasks/bench.rake +0 -184
  318. data/tasks/bench/feature_builder.rb +0 -49
  319. data/tasks/bench/null_listener.rb +0 -4
  320. data/tasks/compile.rake +0 -83
  321. data/tasks/cucumber.rake +0 -23
  322. data/tasks/gems.rake +0 -46
  323. data/tasks/ikvm.rake +0 -126
  324. data/tasks/ragel_task.rb +0 -124
  325. data/tasks/release.rake +0 -34
  326. data/tasks/rspec.rake +0 -6
  327. data/tasks/yard/default/layout/html/bubble_32x32.png +0 -0
  328. data/tasks/yard/default/layout/html/bubble_48x48.png +0 -0
  329. data/tasks/yard/default/layout/html/footer.erb +0 -5
  330. data/tasks/yard/default/layout/html/index.erb +0 -1
  331. data/tasks/yard/default/layout/html/layout.erb +0 -25
  332. data/tasks/yard/default/layout/html/logo.erb +0 -1
  333. data/tasks/yard/default/layout/html/setup.rb +0 -4
@@ -1,498 +0,0 @@
1
- Feature: JSON formatter
2
- In order to support greater access to features
3
- we want JSON
4
-
5
- Background:
6
- Given a JSON formatter
7
- And a "ruby" "root" parser
8
-
9
- Scenario: Only a Feature
10
- Given the following text is parsed:
11
- """
12
- # language: no
13
- # Another comment
14
- Egenskap: Kjapp
15
- """
16
- And the following text is parsed:
17
- """
18
- # language: no
19
- # Yet another comment
20
- Egenskap: Kjappere
21
- """
22
- Then the outputted JSON should be:
23
- """
24
- [
25
- {
26
- "comments": [
27
- {
28
- "line": 1,
29
- "value": "# language: no"
30
- },
31
- {
32
- "line": 2,
33
- "value": "# Another comment"
34
- }
35
- ],
36
- "description": "",
37
- "keyword": "Egenskap",
38
- "line": 3,
39
- "name": "Kjapp",
40
- "uri": "test.feature",
41
- "id": "kjapp"
42
- },
43
- {
44
- "comments": [
45
- {
46
- "line": 1,
47
- "value": "# language: no"
48
- },
49
- {
50
- "line": 2,
51
- "value": "# Yet another comment"
52
- }
53
- ],
54
- "description": "",
55
- "keyword": "Egenskap",
56
- "line": 3,
57
- "name": "Kjappere",
58
- "uri": "test.feature",
59
- "id": "kjappere"
60
- }
61
- ]
62
- """
63
-
64
- Scenario: Feature with scenarios and outlines
65
- Given the following text is parsed:
66
- """
67
- @one
68
- Feature: OH HAI
69
-
70
- Scenario: Fujin
71
- Given wind
72
- Then spirit
73
-
74
- @two
75
- Scenario: _why
76
- Given chunky
77
- Then bacon
78
-
79
- @three @four
80
- Scenario Outline: Life
81
- Given some <boredom>
82
-
83
- @five
84
- Examples: Real life
85
- |boredom|
86
- |airport|
87
- |meeting|
88
-
89
- Scenario: who stole my mojo?
90
- When I was
91
- |asleep|
92
- And so
93
- \"\"\"plaintext
94
- innocent
95
- \"\"\"
96
-
97
- # The
98
- Scenario Outline: with
99
- # all
100
- Then nice
101
-
102
- # comments
103
- # everywhere
104
- Examples: An example
105
- # I mean
106
- | partout |
107
- """
108
- Then the outputted JSON should be:
109
- """
110
- [
111
- {
112
- "uri": "test.feature",
113
- "description": "",
114
- "elements": [
115
- {
116
- "description": "",
117
- "keyword": "Scenario",
118
- "line": 4,
119
- "id": "oh-hai;fujin",
120
- "name": "Fujin",
121
- "steps": [
122
- {
123
- "keyword": "Given ",
124
- "line": 5,
125
- "name": "wind"
126
- },
127
- {
128
- "keyword": "Then ",
129
- "line": 6,
130
- "name": "spirit"
131
- }
132
- ],
133
- "type": "scenario"
134
- },
135
- {
136
- "description": "",
137
- "keyword": "Scenario",
138
- "line": 9,
139
- "id": "oh-hai;-why",
140
- "name": "_why",
141
- "steps": [
142
- {
143
- "keyword": "Given ",
144
- "line": 10,
145
- "name": "chunky"
146
- },
147
- {
148
- "keyword": "Then ",
149
- "line": 11,
150
- "name": "bacon"
151
- }
152
- ],
153
- "tags": [
154
- {
155
- "line": 8,
156
- "name": "@two"
157
- }
158
- ],
159
- "type": "scenario"
160
- },
161
- {
162
- "description": "",
163
- "examples": [
164
- {
165
- "description": "",
166
- "keyword": "Examples",
167
- "line": 18,
168
- "id": "oh-hai;life;real-life",
169
- "name": "Real life",
170
- "rows": [
171
- {
172
- "id": "oh-hai;life;real-life;1",
173
- "cells": [
174
- "boredom"
175
- ],
176
- "line": 19
177
- },
178
- {
179
- "id": "oh-hai;life;real-life;2",
180
- "cells": [
181
- "airport"
182
- ],
183
- "line": 20
184
- },
185
- {
186
- "id": "oh-hai;life;real-life;3",
187
- "cells": [
188
- "meeting"
189
- ],
190
- "line": 21
191
- }
192
- ],
193
- "tags": [
194
- {
195
- "line": 17,
196
- "name": "@five"
197
- }
198
- ]
199
- }
200
- ],
201
- "keyword": "Scenario Outline",
202
- "line": 14,
203
- "id": "oh-hai;life",
204
- "name": "Life",
205
- "steps": [
206
- {
207
- "keyword": "Given ",
208
- "line": 15,
209
- "name": "some <boredom>"
210
- }
211
- ],
212
- "tags": [
213
- {
214
- "line": 13,
215
- "name": "@three"
216
- },
217
- {
218
- "line": 13,
219
- "name": "@four"
220
- }
221
- ],
222
- "type": "scenario_outline"
223
- },
224
- {
225
- "description": "",
226
- "keyword": "Scenario",
227
- "line": 23,
228
- "id": "oh-hai;who-stole-my-mojo?",
229
- "name": "who stole my mojo?",
230
- "steps": [
231
- {
232
- "keyword": "When ",
233
- "line": 24,
234
- "name": "I was",
235
- "rows": [
236
- {
237
- "cells": [
238
- "asleep"
239
- ],
240
- "line": 25
241
- }
242
- ]
243
- },
244
- {
245
- "doc_string": {
246
- "content_type": "plaintext",
247
- "line": 27,
248
- "value": "innocent"
249
- },
250
- "keyword": "And ",
251
- "line": 26,
252
- "name": "so"
253
- }
254
- ],
255
- "type": "scenario"
256
- },
257
- {
258
- "comments": [
259
- {
260
- "line": 31,
261
- "value": "# The"
262
- }
263
- ],
264
- "description": "",
265
- "examples": [
266
- {
267
- "comments": [
268
- {
269
- "line": 36,
270
- "value": "# comments"
271
- },
272
- {
273
- "line": 37,
274
- "value": "# everywhere"
275
- }
276
- ],
277
- "description": "",
278
- "keyword": "Examples",
279
- "line": 38,
280
- "id": "oh-hai;with;an-example",
281
- "name": "An example",
282
- "rows": [
283
- {
284
- "id": "oh-hai;with;an-example;1",
285
- "cells": [
286
- "partout"
287
- ],
288
- "comments": [
289
- {
290
- "line": 39,
291
- "value": "# I mean"
292
- }
293
- ],
294
- "line": 40
295
- }
296
- ]
297
- }
298
- ],
299
- "keyword": "Scenario Outline",
300
- "line": 32,
301
- "id": "oh-hai;with",
302
- "name": "with",
303
- "steps": [
304
- {
305
- "comments": [
306
- {
307
- "line": 33,
308
- "value": "# all"
309
- }
310
- ],
311
- "keyword": "Then ",
312
- "line": 34,
313
- "name": "nice"
314
- }
315
- ],
316
- "type": "scenario_outline"
317
- }
318
- ],
319
- "keyword": "Feature",
320
- "line": 2,
321
- "id": "oh-hai",
322
- "name": "OH HAI",
323
- "tags": [
324
- {
325
- "line": 1,
326
- "name": "@one"
327
- }
328
- ]
329
- }
330
- ]
331
- """
332
-
333
- Scenario: Feature with Background
334
- Given the following text is parsed:
335
- """
336
- Feature: Kjapp
337
-
338
- Background: No idea what Kjapp means
339
- Given I Google it
340
-
341
- # Writing JSON by hand sucks
342
- Scenario:
343
- Then I think it means "fast"
344
- """
345
- Then the outputted JSON should be:
346
- """
347
- [
348
- {
349
- "uri": "test.feature",
350
- "keyword": "Feature",
351
- "name": "Kjapp",
352
- "id": "kjapp",
353
- "description": "",
354
- "line": 1,
355
- "elements": [
356
- {
357
- "type": "background",
358
- "keyword": "Background",
359
- "line": 3,
360
- "name": "No idea what Kjapp means",
361
- "description": "",
362
- "steps": [
363
- {
364
- "keyword": "Given ",
365
- "line": 4,
366
- "name": "I Google it"
367
- }
368
- ]
369
- },
370
- {
371
- "type": "scenario",
372
- "comments": [{"value": "# Writing JSON by hand sucks", "line": 6}],
373
- "keyword": "Scenario",
374
- "id": "kjapp;",
375
- "name": "",
376
- "description": "",
377
- "line": 7,
378
- "steps": [
379
- {
380
- "keyword": "Then ",
381
- "name": "I think it means \"fast\"",
382
- "line": 8
383
- }
384
- ]
385
- }
386
- ]
387
- }
388
- ]
389
- """
390
-
391
- Scenario: Feature with a description
392
-
393
- We want people to be able to put markdown formatting into their descriptions
394
- but this means we need to respect whitespace at the start and end of lines
395
- in the description.
396
-
397
- Pay close attention to the whitespace in this example.
398
-
399
- Given the following text is parsed:
400
- """
401
- Feature: Foo
402
- one line
403
- another line
404
-
405
- some pre-formatted stuff
406
-
407
- Background: b name
408
- test
409
- test
410
-
411
- Scenario: s name
412
- test
413
- test
414
-
415
- Scenario Outline: s o name
416
- test
417
- test
418
-
419
- Given <foo>
420
-
421
- Examples: e name
422
- test
423
- test
424
- | foo |
425
- | table |
426
- """
427
- Then the outputted JSON should be:
428
- """
429
- [
430
- {
431
- "uri": "test.feature",
432
- "keyword": "Feature",
433
- "id": "foo",
434
- "name": "Foo",
435
- "description": "one line \nanother line \n\n some pre-formatted stuff",
436
- "line": 1,
437
- "elements": [
438
- {
439
- "description": " test \n test",
440
- "keyword": "Background",
441
- "line": 7,
442
- "name": "b name",
443
- "type": "background"
444
- },
445
- {
446
- "description": " test \n test",
447
- "keyword": "Scenario",
448
- "line": 11,
449
- "id": "foo;s-name",
450
- "name": "s name",
451
- "type": "scenario"
452
- },
453
- {
454
- "description": " test \n test",
455
- "examples": [
456
- {
457
- "description": " test \n test",
458
- "keyword": "Examples",
459
- "line": 21,
460
- "id": "foo;s-o-name;e-name",
461
- "name": "e name",
462
- "rows": [
463
- {
464
- "id": "foo;s-o-name;e-name;1",
465
- "cells": [
466
- "foo"
467
- ],
468
- "line": 24
469
- },
470
- {
471
- "id": "foo;s-o-name;e-name;2",
472
- "cells": [
473
- "table"
474
- ],
475
- "line": 25
476
- }
477
- ]
478
- }
479
- ],
480
- "keyword": "Scenario Outline",
481
- "line": 15,
482
- "id": "foo;s-o-name",
483
- "name": "s o name",
484
- "steps": [
485
- {
486
- "keyword": "Given ",
487
- "line": 19,
488
- "name": "<foo>"
489
- }
490
- ],
491
- "type": "scenario_outline"
492
- }
493
- ]
494
- }
495
- ]
496
- """
497
-
498
-