busser-behave 0.1.3

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 (418) hide show
  1. checksums.yaml +7 -0
  2. data/.cane +0 -0
  3. data/.gitignore +17 -0
  4. data/.tailor +4 -0
  5. data/.travis.yml +11 -0
  6. data/CHANGELOG.md +3 -0
  7. data/Gemfile +3 -0
  8. data/LICENSE +15 -0
  9. data/README.md +41 -0
  10. data/Rakefile +68 -0
  11. data/busser-behave.gemspec +30 -0
  12. data/features/plugin_install_command.feature +11 -0
  13. data/features/plugin_list_command.feature +8 -0
  14. data/features/support/env.rb +13 -0
  15. data/features/test_command.feature +31 -0
  16. data/lib/busser/behave/version.rb +26 -0
  17. data/lib/busser/runner_plugin/behave.rb +37 -0
  18. data/vendor/behave/CHANGES.rst +483 -0
  19. data/vendor/behave/LICENSE +23 -0
  20. data/vendor/behave/MANIFEST.in +37 -0
  21. data/vendor/behave/PROJECT_INFO.rst +21 -0
  22. data/vendor/behave/README.rst +112 -0
  23. data/vendor/behave/VERSION.txt +1 -0
  24. data/vendor/behave/behave.ini +22 -0
  25. data/vendor/behave/behave/__init__.py +30 -0
  26. data/vendor/behave/behave/__main__.py +187 -0
  27. data/vendor/behave/behave/_stepimport.py +185 -0
  28. data/vendor/behave/behave/_types.py +134 -0
  29. data/vendor/behave/behave/api/__init__.py +7 -0
  30. data/vendor/behave/behave/api/async_step.py +283 -0
  31. data/vendor/behave/behave/capture.py +227 -0
  32. data/vendor/behave/behave/compat/__init__.py +5 -0
  33. data/vendor/behave/behave/compat/collections.py +20 -0
  34. data/vendor/behave/behave/configuration.py +788 -0
  35. data/vendor/behave/behave/contrib/__init__.py +0 -0
  36. data/vendor/behave/behave/contrib/scenario_autoretry.py +73 -0
  37. data/vendor/behave/behave/formatter/__init__.py +12 -0
  38. data/vendor/behave/behave/formatter/_builtins.py +39 -0
  39. data/vendor/behave/behave/formatter/_registry.py +135 -0
  40. data/vendor/behave/behave/formatter/ansi_escapes.py +91 -0
  41. data/vendor/behave/behave/formatter/base.py +200 -0
  42. data/vendor/behave/behave/formatter/formatters.py +57 -0
  43. data/vendor/behave/behave/formatter/json.py +253 -0
  44. data/vendor/behave/behave/formatter/null.py +12 -0
  45. data/vendor/behave/behave/formatter/plain.py +158 -0
  46. data/vendor/behave/behave/formatter/pretty.py +351 -0
  47. data/vendor/behave/behave/formatter/progress.py +287 -0
  48. data/vendor/behave/behave/formatter/rerun.py +114 -0
  49. data/vendor/behave/behave/formatter/sphinx_steps.py +372 -0
  50. data/vendor/behave/behave/formatter/sphinx_util.py +118 -0
  51. data/vendor/behave/behave/formatter/steps.py +497 -0
  52. data/vendor/behave/behave/formatter/tags.py +178 -0
  53. data/vendor/behave/behave/i18n.py +614 -0
  54. data/vendor/behave/behave/importer.py +102 -0
  55. data/vendor/behave/behave/json_parser.py +264 -0
  56. data/vendor/behave/behave/log_capture.py +233 -0
  57. data/vendor/behave/behave/matchers.py +402 -0
  58. data/vendor/behave/behave/model.py +1737 -0
  59. data/vendor/behave/behave/model_core.py +416 -0
  60. data/vendor/behave/behave/model_describe.py +105 -0
  61. data/vendor/behave/behave/parser.py +615 -0
  62. data/vendor/behave/behave/reporter/__init__.py +0 -0
  63. data/vendor/behave/behave/reporter/base.py +45 -0
  64. data/vendor/behave/behave/reporter/junit.py +473 -0
  65. data/vendor/behave/behave/reporter/summary.py +94 -0
  66. data/vendor/behave/behave/runner.py +753 -0
  67. data/vendor/behave/behave/runner_util.py +417 -0
  68. data/vendor/behave/behave/step_registry.py +112 -0
  69. data/vendor/behave/behave/tag_expression.py +111 -0
  70. data/vendor/behave/behave/tag_matcher.py +465 -0
  71. data/vendor/behave/behave/textutil.py +137 -0
  72. data/vendor/behave/behave/userdata.py +130 -0
  73. data/vendor/behave/behave4cmd0/__all_steps__.py +12 -0
  74. data/vendor/behave/behave4cmd0/__init__.py +5 -0
  75. data/vendor/behave/behave4cmd0/__setup.py +11 -0
  76. data/vendor/behave/behave4cmd0/command_shell.py +216 -0
  77. data/vendor/behave/behave4cmd0/command_shell_proc.py +256 -0
  78. data/vendor/behave/behave4cmd0/command_steps.py +532 -0
  79. data/vendor/behave/behave4cmd0/command_util.py +147 -0
  80. data/vendor/behave/behave4cmd0/failing_steps.py +49 -0
  81. data/vendor/behave/behave4cmd0/log/__init__.py +1 -0
  82. data/vendor/behave/behave4cmd0/log/steps.py +395 -0
  83. data/vendor/behave/behave4cmd0/note_steps.py +29 -0
  84. data/vendor/behave/behave4cmd0/passing_steps.py +36 -0
  85. data/vendor/behave/behave4cmd0/pathutil.py +146 -0
  86. data/vendor/behave/behave4cmd0/setup_command_shell.py +24 -0
  87. data/vendor/behave/behave4cmd0/textutil.py +304 -0
  88. data/vendor/behave/bin/behave +44 -0
  89. data/vendor/behave/bin/behave.cmd +10 -0
  90. data/vendor/behave/bin/behave.junit_filter.py +85 -0
  91. data/vendor/behave/bin/behave.step_durations.py +163 -0
  92. data/vendor/behave/bin/behave2cucumber_json.py +63 -0
  93. data/vendor/behave/bin/behave_cmd.py +44 -0
  94. data/vendor/behave/bin/convert_i18n_yaml.py +77 -0
  95. data/vendor/behave/bin/explore_platform_encoding.py +24 -0
  96. data/vendor/behave/bin/i18n.yml +621 -0
  97. data/vendor/behave/bin/invoke +8 -0
  98. data/vendor/behave/bin/invoke.cmd +9 -0
  99. data/vendor/behave/bin/json.format.py +167 -0
  100. data/vendor/behave/bin/jsonschema_validate.py +122 -0
  101. data/vendor/behave/bin/make_localpi.py +279 -0
  102. data/vendor/behave/bin/project_bootstrap.sh +30 -0
  103. data/vendor/behave/bin/toxcmd.py +270 -0
  104. data/vendor/behave/bin/toxcmd3.py +270 -0
  105. data/vendor/behave/conftest.py +27 -0
  106. data/vendor/behave/docs/Makefile +154 -0
  107. data/vendor/behave/docs/_static/agogo.css +501 -0
  108. data/vendor/behave/docs/_static/behave_logo.png +0 -0
  109. data/vendor/behave/docs/_static/behave_logo1.png +0 -0
  110. data/vendor/behave/docs/_static/behave_logo2.png +0 -0
  111. data/vendor/behave/docs/_static/behave_logo3.png +0 -0
  112. data/vendor/behave/docs/_themes/LICENSE +45 -0
  113. data/vendor/behave/docs/_themes/kr/layout.html +17 -0
  114. data/vendor/behave/docs/_themes/kr/relations.html +19 -0
  115. data/vendor/behave/docs/_themes/kr/static/flasky.css_t +480 -0
  116. data/vendor/behave/docs/_themes/kr/static/small_flask.css +90 -0
  117. data/vendor/behave/docs/_themes/kr/theme.conf +7 -0
  118. data/vendor/behave/docs/_themes/kr_small/layout.html +22 -0
  119. data/vendor/behave/docs/_themes/kr_small/static/flasky.css_t +287 -0
  120. data/vendor/behave/docs/_themes/kr_small/theme.conf +10 -0
  121. data/vendor/behave/docs/api.rst +408 -0
  122. data/vendor/behave/docs/appendix.rst +19 -0
  123. data/vendor/behave/docs/behave.rst +640 -0
  124. data/vendor/behave/docs/behave.rst-template +86 -0
  125. data/vendor/behave/docs/behave_ecosystem.rst +81 -0
  126. data/vendor/behave/docs/comparison.rst +85 -0
  127. data/vendor/behave/docs/conf.py +293 -0
  128. data/vendor/behave/docs/context_attributes.rst +66 -0
  129. data/vendor/behave/docs/django.rst +192 -0
  130. data/vendor/behave/docs/formatters.rst +61 -0
  131. data/vendor/behave/docs/gherkin.rst +673 -0
  132. data/vendor/behave/docs/index.rst +57 -0
  133. data/vendor/behave/docs/install.rst +60 -0
  134. data/vendor/behave/docs/more_info.rst +184 -0
  135. data/vendor/behave/docs/new_and_noteworthy.rst +18 -0
  136. data/vendor/behave/docs/new_and_noteworthy_v1.2.4.rst +11 -0
  137. data/vendor/behave/docs/new_and_noteworthy_v1.2.5.rst +814 -0
  138. data/vendor/behave/docs/new_and_noteworthy_v1.2.6.rst +255 -0
  139. data/vendor/behave/docs/parse_builtin_types.rst +59 -0
  140. data/vendor/behave/docs/philosophy.rst +235 -0
  141. data/vendor/behave/docs/regular_expressions.rst +71 -0
  142. data/vendor/behave/docs/related.rst +14 -0
  143. data/vendor/behave/docs/test_domains.rst +62 -0
  144. data/vendor/behave/docs/tutorial.rst +636 -0
  145. data/vendor/behave/docs/update_behave_rst.py +100 -0
  146. data/vendor/behave/etc/json/behave.json-schema +172 -0
  147. data/vendor/behave/etc/junit.xml/behave_junit.xsd +103 -0
  148. data/vendor/behave/etc/junit.xml/junit-4.xsd +92 -0
  149. data/vendor/behave/examples/async_step/README.txt +8 -0
  150. data/vendor/behave/examples/async_step/behave.ini +14 -0
  151. data/vendor/behave/examples/async_step/features/async_dispatch.feature +8 -0
  152. data/vendor/behave/examples/async_step/features/async_run.feature +6 -0
  153. data/vendor/behave/examples/async_step/features/environment.py +28 -0
  154. data/vendor/behave/examples/async_step/features/steps/async_dispatch_steps.py +26 -0
  155. data/vendor/behave/examples/async_step/features/steps/async_steps34.py +10 -0
  156. data/vendor/behave/examples/async_step/features/steps/async_steps35.py +10 -0
  157. data/vendor/behave/examples/async_step/testrun_example.async_dispatch.txt +11 -0
  158. data/vendor/behave/examples/async_step/testrun_example.async_run.txt +9 -0
  159. data/vendor/behave/examples/env_vars/README.rst +26 -0
  160. data/vendor/behave/examples/env_vars/behave.ini +15 -0
  161. data/vendor/behave/examples/env_vars/behave_run.output_example.txt +12 -0
  162. data/vendor/behave/examples/env_vars/features/env_var.feature +6 -0
  163. data/vendor/behave/examples/env_vars/features/steps/env_var_steps.py +38 -0
  164. data/vendor/behave/features/README.txt +12 -0
  165. data/vendor/behave/features/background.feature +392 -0
  166. data/vendor/behave/features/capture_stderr.feature +172 -0
  167. data/vendor/behave/features/capture_stdout.feature +125 -0
  168. data/vendor/behave/features/cmdline.lang_list.feature +33 -0
  169. data/vendor/behave/features/configuration.default_paths.feature +116 -0
  170. data/vendor/behave/features/context.global_params.feature +35 -0
  171. data/vendor/behave/features/context.local_params.feature +17 -0
  172. data/vendor/behave/features/directory_layout.advanced.feature +147 -0
  173. data/vendor/behave/features/directory_layout.basic.feature +75 -0
  174. data/vendor/behave/features/directory_layout.basic2.feature +87 -0
  175. data/vendor/behave/features/environment.py +53 -0
  176. data/vendor/behave/features/exploratory_testing.with_table.feature +141 -0
  177. data/vendor/behave/features/feature.description.feature +0 -0
  178. data/vendor/behave/features/feature.exclude_from_run.feature +96 -0
  179. data/vendor/behave/features/formatter.help.feature +30 -0
  180. data/vendor/behave/features/formatter.json.feature +420 -0
  181. data/vendor/behave/features/formatter.progress3.feature +235 -0
  182. data/vendor/behave/features/formatter.rerun.feature +296 -0
  183. data/vendor/behave/features/formatter.steps.feature +181 -0
  184. data/vendor/behave/features/formatter.steps_catalog.feature +100 -0
  185. data/vendor/behave/features/formatter.steps_doc.feature +140 -0
  186. data/vendor/behave/features/formatter.steps_usage.feature +404 -0
  187. data/vendor/behave/features/formatter.tags.feature +134 -0
  188. data/vendor/behave/features/formatter.tags_location.feature +183 -0
  189. data/vendor/behave/features/formatter.user_defined.feature +196 -0
  190. data/vendor/behave/features/i18n.unicode_problems.feature +445 -0
  191. data/vendor/behave/features/logcapture.clear_handlers.feature +114 -0
  192. data/vendor/behave/features/logcapture.feature +188 -0
  193. data/vendor/behave/features/logcapture.filter.feature +130 -0
  194. data/vendor/behave/features/logging.no_capture.feature +99 -0
  195. data/vendor/behave/features/logging.setup_format.feature +157 -0
  196. data/vendor/behave/features/logging.setup_level.feature +168 -0
  197. data/vendor/behave/features/logging.setup_with_configfile.feature +137 -0
  198. data/vendor/behave/features/parser.background.sad_cases.feature +129 -0
  199. data/vendor/behave/features/parser.feature.sad_cases.feature +144 -0
  200. data/vendor/behave/features/runner.abort_by_user.feature +305 -0
  201. data/vendor/behave/features/runner.continue_after_failed_step.feature +136 -0
  202. data/vendor/behave/features/runner.default_format.feature +175 -0
  203. data/vendor/behave/features/runner.dry_run.feature +184 -0
  204. data/vendor/behave/features/runner.feature_listfile.feature +223 -0
  205. data/vendor/behave/features/runner.hook_errors.feature +382 -0
  206. data/vendor/behave/features/runner.multiple_formatters.feature +285 -0
  207. data/vendor/behave/features/runner.scenario_autoretry.feature +131 -0
  208. data/vendor/behave/features/runner.select_files_by_regexp.example.feature +71 -0
  209. data/vendor/behave/features/runner.select_files_by_regexp.feature +84 -0
  210. data/vendor/behave/features/runner.select_scenarios_by_file_location.feature +403 -0
  211. data/vendor/behave/features/runner.select_scenarios_by_name.feature +289 -0
  212. data/vendor/behave/features/runner.select_scenarios_by_tag.feature +225 -0
  213. data/vendor/behave/features/runner.stop_after_failure.feature +122 -0
  214. data/vendor/behave/features/runner.tag_logic.feature +67 -0
  215. data/vendor/behave/features/runner.unknown_formatter.feature +23 -0
  216. data/vendor/behave/features/runner.use_stage_implementations.feature +126 -0
  217. data/vendor/behave/features/scenario.description.feature +171 -0
  218. data/vendor/behave/features/scenario.exclude_from_run.feature +217 -0
  219. data/vendor/behave/features/scenario_outline.basics.feature +100 -0
  220. data/vendor/behave/features/scenario_outline.improved.feature +177 -0
  221. data/vendor/behave/features/scenario_outline.name_annotation.feature +157 -0
  222. data/vendor/behave/features/scenario_outline.parametrized.feature +401 -0
  223. data/vendor/behave/features/scenario_outline.tagged_examples.feature +118 -0
  224. data/vendor/behave/features/step.async_steps.feature +225 -0
  225. data/vendor/behave/features/step.duplicated_step.feature +106 -0
  226. data/vendor/behave/features/step.execute_steps.feature +59 -0
  227. data/vendor/behave/features/step.execute_steps.with_table.feature +65 -0
  228. data/vendor/behave/features/step.import_other_step_module.feature +103 -0
  229. data/vendor/behave/features/step.pending_steps.feature +128 -0
  230. data/vendor/behave/features/step.undefined_steps.feature +307 -0
  231. data/vendor/behave/features/step.use_step_library.feature +44 -0
  232. data/vendor/behave/features/step_dialect.generic_steps.feature +189 -0
  233. data/vendor/behave/features/step_dialect.given_when_then.feature +89 -0
  234. data/vendor/behave/features/step_param.builtin_types.with_float.feature +239 -0
  235. data/vendor/behave/features/step_param.builtin_types.with_integer.feature +305 -0
  236. data/vendor/behave/features/step_param.custom_types.feature +134 -0
  237. data/vendor/behave/features/steps/behave_active_tags_steps.py +86 -0
  238. data/vendor/behave/features/steps/behave_context_steps.py +67 -0
  239. data/vendor/behave/features/steps/behave_model_tag_logic_steps.py +105 -0
  240. data/vendor/behave/features/steps/behave_model_util.py +105 -0
  241. data/vendor/behave/features/steps/behave_select_files_steps.py +83 -0
  242. data/vendor/behave/features/steps/behave_tag_expression_steps.py +166 -0
  243. data/vendor/behave/features/steps/behave_undefined_steps.py +101 -0
  244. data/vendor/behave/features/steps/use_steplib_behave4cmd.py +12 -0
  245. data/vendor/behave/features/summary.undefined_steps.feature +114 -0
  246. data/vendor/behave/features/tags.active_tags.feature +385 -0
  247. data/vendor/behave/features/tags.default_tags.feature +104 -0
  248. data/vendor/behave/features/tags.tag_expression.feature +105 -0
  249. data/vendor/behave/features/userdata.feature +331 -0
  250. data/vendor/behave/invoke.yaml +21 -0
  251. data/vendor/behave/issue.features/README.txt +17 -0
  252. data/vendor/behave/issue.features/environment.py +97 -0
  253. data/vendor/behave/issue.features/issue0030.feature +21 -0
  254. data/vendor/behave/issue.features/issue0031.feature +16 -0
  255. data/vendor/behave/issue.features/issue0032.feature +28 -0
  256. data/vendor/behave/issue.features/issue0035.feature +74 -0
  257. data/vendor/behave/issue.features/issue0040.feature +154 -0
  258. data/vendor/behave/issue.features/issue0041.feature +135 -0
  259. data/vendor/behave/issue.features/issue0042.feature +230 -0
  260. data/vendor/behave/issue.features/issue0044.feature +51 -0
  261. data/vendor/behave/issue.features/issue0046.feature +77 -0
  262. data/vendor/behave/issue.features/issue0052.feature +66 -0
  263. data/vendor/behave/issue.features/issue0059.feature +29 -0
  264. data/vendor/behave/issue.features/issue0063.feature +102 -0
  265. data/vendor/behave/issue.features/issue0064.feature +97 -0
  266. data/vendor/behave/issue.features/issue0065.feature +18 -0
  267. data/vendor/behave/issue.features/issue0066.feature +80 -0
  268. data/vendor/behave/issue.features/issue0067.feature +90 -0
  269. data/vendor/behave/issue.features/issue0069.feature +64 -0
  270. data/vendor/behave/issue.features/issue0072.feature +32 -0
  271. data/vendor/behave/issue.features/issue0073.feature +228 -0
  272. data/vendor/behave/issue.features/issue0075.feature +18 -0
  273. data/vendor/behave/issue.features/issue0077.feature +89 -0
  274. data/vendor/behave/issue.features/issue0080.feature +49 -0
  275. data/vendor/behave/issue.features/issue0081.feature +138 -0
  276. data/vendor/behave/issue.features/issue0083.feature +69 -0
  277. data/vendor/behave/issue.features/issue0084.feature +69 -0
  278. data/vendor/behave/issue.features/issue0085.feature +119 -0
  279. data/vendor/behave/issue.features/issue0092.feature +66 -0
  280. data/vendor/behave/issue.features/issue0096.feature +173 -0
  281. data/vendor/behave/issue.features/issue0099.feature +130 -0
  282. data/vendor/behave/issue.features/issue0109.feature +60 -0
  283. data/vendor/behave/issue.features/issue0111.feature +53 -0
  284. data/vendor/behave/issue.features/issue0112.feature +64 -0
  285. data/vendor/behave/issue.features/issue0114.feature +118 -0
  286. data/vendor/behave/issue.features/issue0116.feature +71 -0
  287. data/vendor/behave/issue.features/issue0125.feature +49 -0
  288. data/vendor/behave/issue.features/issue0127.feature +64 -0
  289. data/vendor/behave/issue.features/issue0139.feature +67 -0
  290. data/vendor/behave/issue.features/issue0142.feature +37 -0
  291. data/vendor/behave/issue.features/issue0143.feature +54 -0
  292. data/vendor/behave/issue.features/issue0145.feature +63 -0
  293. data/vendor/behave/issue.features/issue0148.feature +105 -0
  294. data/vendor/behave/issue.features/issue0152.feature +52 -0
  295. data/vendor/behave/issue.features/issue0159.feature +74 -0
  296. data/vendor/behave/issue.features/issue0162.feature +86 -0
  297. data/vendor/behave/issue.features/issue0171.feature +16 -0
  298. data/vendor/behave/issue.features/issue0172.feature +51 -0
  299. data/vendor/behave/issue.features/issue0175.feature +91 -0
  300. data/vendor/behave/issue.features/issue0177.feature +40 -0
  301. data/vendor/behave/issue.features/issue0181.feature +36 -0
  302. data/vendor/behave/issue.features/issue0184.feature +144 -0
  303. data/vendor/behave/issue.features/issue0186.feature +12 -0
  304. data/vendor/behave/issue.features/issue0188.feature +60 -0
  305. data/vendor/behave/issue.features/issue0191.feature +178 -0
  306. data/vendor/behave/issue.features/issue0194.feature +215 -0
  307. data/vendor/behave/issue.features/issue0197.feature +11 -0
  308. data/vendor/behave/issue.features/issue0216.feature +129 -0
  309. data/vendor/behave/issue.features/issue0226.feature +51 -0
  310. data/vendor/behave/issue.features/issue0228.feature +41 -0
  311. data/vendor/behave/issue.features/issue0230.feature +46 -0
  312. data/vendor/behave/issue.features/issue0231.feature +77 -0
  313. data/vendor/behave/issue.features/issue0238.feature +52 -0
  314. data/vendor/behave/issue.features/issue0251.feature +15 -0
  315. data/vendor/behave/issue.features/issue0280.feature +118 -0
  316. data/vendor/behave/issue.features/issue0288.feature +95 -0
  317. data/vendor/behave/issue.features/issue0300.feature +49 -0
  318. data/vendor/behave/issue.features/issue0302.feature +91 -0
  319. data/vendor/behave/issue.features/issue0309.feature +52 -0
  320. data/vendor/behave/issue.features/issue0330.feature +124 -0
  321. data/vendor/behave/issue.features/issue0349.feature +9 -0
  322. data/vendor/behave/issue.features/issue0361.feature +79 -0
  323. data/vendor/behave/issue.features/issue0383.feature +76 -0
  324. data/vendor/behave/issue.features/issue0384.feature +103 -0
  325. data/vendor/behave/issue.features/issue0385.feature +109 -0
  326. data/vendor/behave/issue.features/issue0424.feature +66 -0
  327. data/vendor/behave/issue.features/issue0446.feature +116 -0
  328. data/vendor/behave/issue.features/issue0449.feature +42 -0
  329. data/vendor/behave/issue.features/issue0453.feature +42 -0
  330. data/vendor/behave/issue.features/issue0457.feature +65 -0
  331. data/vendor/behave/issue.features/issue0462.feature +38 -0
  332. data/vendor/behave/issue.features/issue0476.feature +39 -0
  333. data/vendor/behave/issue.features/issue0487.feature +92 -0
  334. data/vendor/behave/issue.features/issue0506.feature +77 -0
  335. data/vendor/behave/issue.features/issue0510.feature +51 -0
  336. data/vendor/behave/issue.features/requirements.txt +12 -0
  337. data/vendor/behave/issue.features/steps/ansi_steps.py +20 -0
  338. data/vendor/behave/issue.features/steps/behave_hooks_steps.py +10 -0
  339. data/vendor/behave/issue.features/steps/use_steplib_behave4cmd.py +13 -0
  340. data/vendor/behave/more.features/formatter.json.validate_output.feature +37 -0
  341. data/vendor/behave/more.features/steps/tutorial_steps.py +16 -0
  342. data/vendor/behave/more.features/steps/use_steplib_behave4cmd.py +7 -0
  343. data/vendor/behave/more.features/tutorial.feature +6 -0
  344. data/vendor/behave/py.requirements/README.txt +5 -0
  345. data/vendor/behave/py.requirements/all.txt +16 -0
  346. data/vendor/behave/py.requirements/basic.txt +21 -0
  347. data/vendor/behave/py.requirements/develop.txt +28 -0
  348. data/vendor/behave/py.requirements/docs.txt +6 -0
  349. data/vendor/behave/py.requirements/json.txt +7 -0
  350. data/vendor/behave/py.requirements/more_py26.txt +8 -0
  351. data/vendor/behave/py.requirements/testing.txt +10 -0
  352. data/vendor/behave/pytest.ini +24 -0
  353. data/vendor/behave/setup.cfg +29 -0
  354. data/vendor/behave/setup.py +118 -0
  355. data/vendor/behave/setuptools_behave.py +130 -0
  356. data/vendor/behave/tasks/__behave.py +45 -0
  357. data/vendor/behave/tasks/__init__.py +55 -0
  358. data/vendor/behave/tasks/__main__.py +70 -0
  359. data/vendor/behave/tasks/_setup.py +135 -0
  360. data/vendor/behave/tasks/_vendor/README.rst +35 -0
  361. data/vendor/behave/tasks/_vendor/invoke.zip +0 -0
  362. data/vendor/behave/tasks/_vendor/path.py +1725 -0
  363. data/vendor/behave/tasks/_vendor/pathlib.py +1280 -0
  364. data/vendor/behave/tasks/_vendor/six.py +868 -0
  365. data/vendor/behave/tasks/clean.py +246 -0
  366. data/vendor/behave/tasks/docs.py +97 -0
  367. data/vendor/behave/tasks/requirements.txt +17 -0
  368. data/vendor/behave/tasks/test.py +192 -0
  369. data/vendor/behave/test/__init__.py +0 -0
  370. data/vendor/behave/test/_importer_candidate.py +3 -0
  371. data/vendor/behave/test/reporters/__init__.py +0 -0
  372. data/vendor/behave/test/reporters/test_summary.py +240 -0
  373. data/vendor/behave/test/test_ansi_escapes.py +73 -0
  374. data/vendor/behave/test/test_configuration.py +172 -0
  375. data/vendor/behave/test/test_formatter.py +265 -0
  376. data/vendor/behave/test/test_formatter_progress.py +39 -0
  377. data/vendor/behave/test/test_formatter_rerun.py +97 -0
  378. data/vendor/behave/test/test_formatter_tags.py +57 -0
  379. data/vendor/behave/test/test_importer.py +151 -0
  380. data/vendor/behave/test/test_log_capture.py +29 -0
  381. data/vendor/behave/test/test_matchers.py +236 -0
  382. data/vendor/behave/test/test_model.py +871 -0
  383. data/vendor/behave/test/test_parser.py +1590 -0
  384. data/vendor/behave/test/test_runner.py +1074 -0
  385. data/vendor/behave/test/test_step_registry.py +96 -0
  386. data/vendor/behave/test/test_tag_expression.py +506 -0
  387. data/vendor/behave/test/test_tag_expression2.py +462 -0
  388. data/vendor/behave/test/test_tag_matcher.py +729 -0
  389. data/vendor/behave/test/test_userdata.py +184 -0
  390. data/vendor/behave/tests/README.txt +12 -0
  391. data/vendor/behave/tests/__init__.py +0 -0
  392. data/vendor/behave/tests/api/__ONLY_PY34_or_newer.txt +0 -0
  393. data/vendor/behave/tests/api/__init__.py +0 -0
  394. data/vendor/behave/tests/api/_test_async_step34.py +130 -0
  395. data/vendor/behave/tests/api/_test_async_step35.py +75 -0
  396. data/vendor/behave/tests/api/test_async_step.py +18 -0
  397. data/vendor/behave/tests/api/testing_support.py +94 -0
  398. data/vendor/behave/tests/api/testing_support_async.py +21 -0
  399. data/vendor/behave/tests/issues/test_issue0336.py +66 -0
  400. data/vendor/behave/tests/issues/test_issue0449.py +55 -0
  401. data/vendor/behave/tests/issues/test_issue0453.py +62 -0
  402. data/vendor/behave/tests/issues/test_issue0458.py +54 -0
  403. data/vendor/behave/tests/issues/test_issue0495.py +65 -0
  404. data/vendor/behave/tests/unit/__init__.py +0 -0
  405. data/vendor/behave/tests/unit/test_behave4cmd_command_shell_proc.py +135 -0
  406. data/vendor/behave/tests/unit/test_capture.py +280 -0
  407. data/vendor/behave/tests/unit/test_model_core.py +56 -0
  408. data/vendor/behave/tests/unit/test_textutil.py +267 -0
  409. data/vendor/behave/tools/test-features/background.feature +9 -0
  410. data/vendor/behave/tools/test-features/environment.py +8 -0
  411. data/vendor/behave/tools/test-features/french.feature +11 -0
  412. data/vendor/behave/tools/test-features/outline.feature +39 -0
  413. data/vendor/behave/tools/test-features/parse.feature +10 -0
  414. data/vendor/behave/tools/test-features/step-data.feature +60 -0
  415. data/vendor/behave/tools/test-features/steps/steps.py +120 -0
  416. data/vendor/behave/tools/test-features/tags.feature +18 -0
  417. data/vendor/behave/tox.ini +159 -0
  418. metadata +562 -0
@@ -0,0 +1,122 @@
1
+ @sequential
2
+ Feature: Runner should stop after first failure if --stop option is used
3
+
4
+ As a tester
5
+ To abort testing early (sometimes)
6
+ When the first failure occurs.
7
+
8
+
9
+ @setup
10
+ Scenario: Test Setup
11
+ Given a new working directory
12
+ And a file named "features/steps/steps.py" with:
13
+ """
14
+ from behave import step
15
+ import sys
16
+
17
+ @step('a step passes')
18
+ def step_passes(context):
19
+ pass
20
+
21
+ @step('a step fails')
22
+ def step_fails(context):
23
+ assert False, "XFAIL"
24
+ """
25
+ And a file named "features/alice_fails.feature" with:
26
+ """
27
+ Feature: Alice
28
+ Scenario: A1
29
+ Given a step passes
30
+ When a step passes
31
+ Then a step passes
32
+
33
+ Scenario: A2 fails
34
+ Given a step passes
35
+ When a step fails
36
+ Then a step passes
37
+
38
+ Scenario: A3
39
+ Given a step passes
40
+
41
+ Scenario: A4 fails
42
+ Given a step fails
43
+ """
44
+ And a file named "features/bob_passes.feature" with:
45
+ """
46
+ Feature: Bob
47
+ Scenario: B1
48
+ Given a step passes
49
+ When a step passes
50
+ Then a step passes
51
+
52
+ Scenario: B2 fails
53
+ Given a step passes
54
+ When a step passes
55
+ Then a step passes
56
+ """
57
+
58
+
59
+ Scenario: Stop running after first failure with one feature
60
+ When I run "behave -f plain -T --stop features/alice_fails.feature"
61
+ Then it should fail with:
62
+ """
63
+ Failing scenarios:
64
+ features/alice_fails.feature:7 A2 fails
65
+
66
+ 0 features passed, 1 failed, 0 skipped
67
+ 1 scenario passed, 1 failed, 0 skipped, 2 untested
68
+ 4 steps passed, 1 failed, 1 skipped, 0 undefined, 2 untested
69
+ """
70
+ And the command output should contain:
71
+ """
72
+ Feature: Alice
73
+ Scenario: A1
74
+ Given a step passes ... passed
75
+ When a step passes ... passed
76
+ Then a step passes ... passed
77
+
78
+ Scenario: A2 fails
79
+ Given a step passes ... passed
80
+ When a step fails ... failed
81
+ Assertion Failed: XFAIL
82
+ """
83
+ But the command output should not contain:
84
+ """
85
+ Scenario: A3
86
+ """
87
+
88
+ Scenario: Stop running after first failure with several features (CASE 1)
89
+ When I run "behave -f plain -T --stop features/alice_fails.feature features/bob_passes.feature "
90
+ Then it should fail with:
91
+ """
92
+ Failing scenarios:
93
+ features/alice_fails.feature:7 A2 fails
94
+
95
+ 0 features passed, 1 failed, 0 skipped, 1 untested
96
+ 1 scenario passed, 1 failed, 0 skipped, 4 untested
97
+ 4 steps passed, 1 failed, 1 skipped, 0 undefined, 8 untested
98
+ """
99
+
100
+ Scenario: Stop running after first failure with several features (CASE 2: Different order)
101
+ When I run "behave -f plain -T --stop features/bob_passes.feature features/alice_fails.feature"
102
+ Then it should fail with:
103
+ """
104
+ Failing scenarios:
105
+ features/alice_fails.feature:7 A2 fails
106
+
107
+ 1 feature passed, 1 failed, 0 skipped
108
+ 3 scenarios passed, 1 failed, 0 skipped, 2 untested
109
+ 10 steps passed, 1 failed, 1 skipped, 0 undefined, 2 untested
110
+ """
111
+
112
+ Scenario: Stop running after first failure with several features (CASE 3: Use directory)
113
+ When I run "behave -f plain -T --stop features/"
114
+ Then it should fail with:
115
+ """
116
+ Failing scenarios:
117
+ features/alice_fails.feature:7 A2 fails
118
+
119
+ 0 features passed, 1 failed, 0 skipped, 1 untested
120
+ 1 scenario passed, 1 failed, 0 skipped, 4 untested
121
+ 4 steps passed, 1 failed, 1 skipped, 0 undefined, 8 untested
122
+ """
@@ -0,0 +1,67 @@
1
+ Feature: Runner Tag logic
2
+
3
+ As a tester
4
+ I want to select scenarios using logical AND/OR of tags
5
+ In order to conveniently run subsets of these scenarios
6
+
7
+ . SPECIFICATION: Tag logic
8
+ . See "tag_expression.feature" description.
9
+ .
10
+ . RELATED:
11
+ . * tag_expression.feature
12
+
13
+ Scenario: Select scenarios with 1 tag (@foo)
14
+ Given a behave model with:
15
+ | statement | name | tags | Comment |
16
+ | Scenario | S0 | | Untagged |
17
+ | Scenario | S1 | @foo | With 1 tag |
18
+ | Scenario | S2 | @other | |
19
+ | Scenario | S3 | @foo @other | With 2 tags |
20
+ And note that "are all combinations of 0..2 tags"
21
+ When I run the behave model with "tags"
22
+ Then the following scenarios are selected with cmdline:
23
+ | cmdline | selected? | Logic comment |
24
+ | | S0, S1, S2, S3 | ALL, no selector |
25
+ | --tags=@foo | S1, S3 | @foo |
26
+ | --tags=-@foo | S0, S2 | not @foo |
27
+
28
+
29
+ Scenario: Use other tag expression variants
30
+ Given a behave model with:
31
+ | statement | name | tags | Comment |
32
+ | Scenario | S0 | | Untagged |
33
+ | Scenario | S1 | @foo | With 1 tag |
34
+ | Scenario | S2 | @other | |
35
+ | Scenario | S3 | @foo @other | With 2 tags |
36
+ Then the following scenarios are selected with cmdline:
37
+ | cmdline | selected? | Logic comment |
38
+ | --tags=foo | S1, S3 | @foo, without optional @ |
39
+ | --tags=-foo | S0, S2 | not @foo, without optional @ |
40
+ | --tags=~foo | S0, S2 | not @foo, with tilde as minus |
41
+ | --tags=~@foo | S0, S2 | not @foo, with tilde and @ |
42
+ And note that "these tag expression variants can also be used"
43
+
44
+
45
+ Scenario: Select scenarios with 2 tags (@foo, @bar)
46
+ Given a behave model with:
47
+ | statement | name | tags | Comment |
48
+ | Scenario | S0 | | Untagged |
49
+ | Scenario | S1 | @foo | With a tag |
50
+ | Scenario | S2 | @bar | |
51
+ | Scenario | S3 | @other | |
52
+ | Scenario | S4 | @foo @bar | With 2 tags |
53
+ | Scenario | S5 | @foo @other | |
54
+ | Scenario | S6 | @bar @other | |
55
+ | Scenario | S7 | @foo @bar @other | With 3 tags |
56
+ And note that "are all combinations of 0..3 tags"
57
+ When I run the behave model with "tags"
58
+ Then the following scenarios are selected with cmdline:
59
+ | cmdline | selected? | Logic comment |
60
+ | | S0, S1, S2, S3, S4, S5, S6, S7 | ALL, no selector |
61
+ | --tags=@foo,@bar | S1, S2, S4, S5, S6, S7 | @foo or @bar |
62
+ | --tags=@foo,-@bar | S0, S1, S3, S4, S5, S7 | @foo or not @bar |
63
+ | --tags=-@foo,-@bar | S0, S1, S2, S3, S5, S6 | not @foo or not @bar |
64
+ | --tags=@foo --tags=@bar | S4, S7 | @foo and @bar |
65
+ | --tags=@foo --tags=-@bar | S1, S5 | @foo and not @bar |
66
+ | --tags=-@foo --tags=-@bar | S0, S3 | not @foo and not @bar |
67
+
@@ -0,0 +1,23 @@
1
+ Feature: When an unknown formatter is used
2
+
3
+
4
+ Scenario: Unknown formatter is used
5
+ When I run "behave -f unknown1"
6
+ Then it should fail with:
7
+ """
8
+ behave: error: format=unknown1 is unknown
9
+ """
10
+
11
+ Scenario: Unknown formatter is used together with another formatter
12
+ When I run "behave -f plain -f unknown1"
13
+ Then it should fail with:
14
+ """
15
+ behave: error: format=unknown1 is unknown
16
+ """
17
+
18
+ Scenario: Two unknown formatters are used
19
+ When I run "behave -f plain -f unknown1 -f tags -f unknown2"
20
+ Then it should fail with:
21
+ """
22
+ behave: error: format=unknown1, unknown2 is unknown
23
+ """
@@ -0,0 +1,126 @@
1
+ Feature: Use Alternate Step Implementations for Each Test Stage
2
+
3
+ As I tester and test writer
4
+ I want to run the same feature with other step implementations during different testing stages
5
+ So I can run quick checks in a development environment and detailed checks in a testlab.
6
+
7
+ . CONCEPT: TEST STAGE
8
+ . A test stage allows you to use different step/environment implementations
9
+ . compared to other test stage or the default, unnamed test stage.
10
+ .
11
+ . Examples for test stages are:
12
+ . * develop (using the development environment with more diagnostics)
13
+ . * product (using the product database, ...)
14
+ . * systemtest
15
+ . * systemint (system integration)
16
+ . * ...
17
+ .
18
+ . NOTE:
19
+ . Test stages can be used to adapt to different test environments
20
+ . while using these test stages.
21
+ .
22
+ .
23
+ . EXAMPLE DIRECTORY LAYOUT (with default stage and stage=testlab):
24
+ .
25
+ . features/
26
+ . +-- steps/ # -- Step implementations for default stage.
27
+ . | +-- foo_steps.py
28
+ . +-- testlab_steps/ # -- Step implementations for stage=testlab.
29
+ . | +-- foo_steps.py
30
+ . +-- *.feature
31
+ . +-- environment.py # -- Environment for default stage.
32
+ . +-- testlab_environment.py # -- Environment for stage=testlab.
33
+
34
+
35
+ @setup
36
+ Scenario: Feature Setup
37
+ Given a new working directory
38
+ And a file named "features/example1.feature" with:
39
+ """
40
+ Feature:
41
+ Scenario:
42
+ Given I do something in a test stage
43
+ """
44
+ And a file named "features/environment.py" with:
45
+ """
46
+ def before_all(context):
47
+ context.use_develop_environment = False
48
+ """
49
+ And a file named "features/steps/foo_steps.py" with:
50
+ """
51
+ from behave import step
52
+
53
+ @step('I do something in a test stage')
54
+ def step_do_something(context):
55
+ assert not context.config.stage
56
+ assert not context.use_develop_environment
57
+ """
58
+ And I remove the environment variable "BEHAVE_STAGE"
59
+
60
+ Scenario: Use stage=develop
61
+ Given a file named "features/develop_environment.py" with:
62
+ """
63
+ def before_all(context):
64
+ context.use_develop_environment = True
65
+ """
66
+ And a file named "features/develop_steps/foo_steps.py" with:
67
+ """
68
+ from behave import step
69
+
70
+ @step('I do something in a test stage')
71
+ def step_do_something(context):
72
+ assert context.config.stage == "develop"
73
+ assert context.use_develop_environment
74
+ """
75
+ When I run "behave -c --stage=develop features/example1.feature"
76
+ Then it should pass with:
77
+ """
78
+ 1 feature passed, 0 failed, 0 skipped
79
+ 1 scenario passed, 0 failed, 0 skipped
80
+ 1 step passed, 0 failed, 0 skipped, 0 undefined
81
+ """
82
+ And the command output should contain:
83
+ """
84
+ Scenario: # features/example1.feature:2
85
+ Given I do something in a test stage # features/develop_steps/foo_steps.py:3
86
+ """
87
+
88
+ Scenario: Use default stage
89
+ Given I remove the environment variable "BEHAVE_STAGE"
90
+ When I run "behave -c features/example1.feature"
91
+ Then it should pass with:
92
+ """
93
+ 1 feature passed, 0 failed, 0 skipped
94
+ 1 scenario passed, 0 failed, 0 skipped
95
+ 1 step passed, 0 failed, 0 skipped, 0 undefined
96
+ """
97
+ And the command output should contain:
98
+ """
99
+ Scenario: # features/example1.feature:2
100
+ Given I do something in a test stage # features/steps/foo_steps.py:3
101
+ """
102
+
103
+ Scenario: Use the BEHAVE_STAGE environment variable to define the test stage
104
+ Given I set the environment variable "BEHAVE_STAGE" to "develop"
105
+ When I run "behave -c features/example1.feature"
106
+ Then it should pass with:
107
+ """
108
+ 1 feature passed, 0 failed, 0 skipped
109
+ 1 scenario passed, 0 failed, 0 skipped
110
+ 1 step passed, 0 failed, 0 skipped, 0 undefined
111
+ """
112
+ And the command output should contain:
113
+ """
114
+ Scenario: # features/example1.feature:2
115
+ Given I do something in a test stage # features/develop_steps/foo_steps.py:3
116
+ """
117
+ But note that "I should better remove it again (TEARDOWN PHASE)"
118
+ And I remove the environment variable "BEHAVE_STAGE"
119
+
120
+
121
+ Scenario: Using an unknown stage
122
+ When I run "behave -c --stage=unknown features/example1.feature"
123
+ Then it should fail with:
124
+ """
125
+ ConfigError: No unknown_steps directory
126
+ """
@@ -0,0 +1,171 @@
1
+ Feature: Scenario Description
2
+
3
+ As a tester
4
+ I want to explain the rationale of a test scenario or scenario outline
5
+ Before I actually execute the steps.
6
+
7
+ . SPECIFICATION: Scenario Description
8
+ . * Scenario descriptions are in optional section between
9
+ . Scenario line and the first step.
10
+ . * All description lines are added to the scenario description.
11
+ . * Empty lines are not part of the scenario description (are removed).
12
+ . * Comment lines are not part of the scenario description (are removed).
13
+ . * A Scenario/ScenarioOutline with a scenario description,
14
+ . but without steps is valid (to support preparation of scenarios).
15
+ .
16
+ . SPECIFICATION: A scenario description line...
17
+ . * must not start with step keywords, like:
18
+ .
19
+ . Given, When, Then, And, But, etc.
20
+ . (including lower-case versions)
21
+ .
22
+ . * must not start with '*' (ASTERISK) due to generic step keyword ambiguity
23
+ . * must not start with '@' (AT) due to tag ambiguity
24
+ . (supporting: scenario without steps but with step description).
25
+ . * may start with '|' (table-cell-separator).
26
+ . * does not contain only whitespace chars (empty line, filtered-out).
27
+ . * does not start with '#' (HASH) after whitespace chars (comment line).
28
+ .
29
+ . GRAMMAR STRUCTURE:
30
+ . Scenario-Line : 1
31
+ . Scenario-Description-Line : 0 .. N
32
+ . Step-Line : 0 .. N
33
+ .
34
+ . Scenario-Line := Scenario-Keyword ':' Scenario-Name
35
+ . Scenario-Description-Line := Line does not start with Step-Keyword
36
+ . Step-Line := Step-Keyword Words+
37
+
38
+
39
+ @setup
40
+ Scenario: Feature Setup
41
+ Given a new working directory
42
+ And a file named "features/steps/steps.py" with:
43
+ """
44
+ from behave import step
45
+ import sys
46
+
47
+ @step('a step passes')
48
+ def step_passes(context):
49
+ pass
50
+
51
+ @step('a step passes with "{comment}"')
52
+ def step_passes(context, comment):
53
+ sys.stdout.write("PASSING-STEP: %s;\n" % comment)
54
+
55
+ @step('a step fails')
56
+ def step_fails(context):
57
+ assert False, "XFAIL-STEP"
58
+ """
59
+
60
+
61
+ Scenario: First Example for a Scenario Description
62
+ Given a file named "features/example_description1.feature" with:
63
+ """
64
+ Feature:
65
+ Scenario: E1
66
+
67
+ This is a simple scenario description before the steps start.
68
+ It explains why this scenario is important.
69
+
70
+ Here another scenario description line after an empty line.
71
+
72
+ Given a step passes with "Alice"
73
+ When a step passes with "Bob"
74
+ Then a step passes with "Charly"
75
+ """
76
+ When I run "behave -f plain -T features/example_description1.feature"
77
+ Then it should pass with:
78
+ """
79
+ 1 feature passed, 0 failed, 0 skipped
80
+ 1 scenario passed, 0 failed, 0 skipped
81
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
82
+ """
83
+ And the command output should contain:
84
+ """
85
+ Feature:
86
+ Scenario: E1
87
+ Given a step passes with "Alice" ... passed
88
+ When a step passes with "Bob" ... passed
89
+ Then a step passes with "Charly" ... passed
90
+ """
91
+
92
+
93
+ Scenario: Inspect the Scenario Description by using JSON
94
+ Given a file named "features/example_description1.feature" exists
95
+ When I run "behave -f json.pretty -o example1.json -f plain -T features/example_description1.feature"
96
+ Then it should pass
97
+ And the file "example1.json" should contain:
98
+ """
99
+ "description": [
100
+ "This is a simple scenario description before the steps start.",
101
+ "It explains why this scenario is important.",
102
+ "Here another scenario description line after an empty line."
103
+ ],
104
+ "keyword": "Scenario",
105
+ "location": "features/example_description1.feature:2",
106
+ "name": "E1",
107
+ """
108
+
109
+
110
+ Scenario: Second Example with 2 scenario with scenario descriptions
111
+ Given a file named "features/example_description2.feature" with:
112
+ """
113
+ @one
114
+ Feature: F2
115
+
116
+ Feature description line 1.
117
+ Feature description line 2.
118
+
119
+ @foo
120
+ Scenario: S2.1
121
+
122
+ Scenario description line S2.1-1.
123
+ Scenario description line S2.1-2 (indentation is removed).
124
+
125
+ Given a step passes with "Alice"
126
+ Then a step passes with "Charly"
127
+
128
+ @foo
129
+ @bar @baz
130
+ Scenario: S2.2
131
+
132
+ Scenario description line S2.2-1.
133
+
134
+ When a step passes with "Bob"
135
+ """
136
+ When I run "behave -f json.pretty -o example2.json -f plain -T features/example_description2.feature"
137
+ Then it should pass with:
138
+ """
139
+ 1 feature passed, 0 failed, 0 skipped
140
+ 2 scenarios passed, 0 failed, 0 skipped
141
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
142
+ """
143
+ And the command output should contain:
144
+ """
145
+ Feature: F2
146
+ Scenario: S2.1
147
+ Given a step passes with "Alice" ... passed
148
+ Then a step passes with "Charly" ... passed
149
+
150
+ Scenario: S2.2
151
+ When a step passes with "Bob" ... passed
152
+ """
153
+ And the file "example2.json" should contain:
154
+ """
155
+ "description": [
156
+ "Scenario description line S2.1-1.",
157
+ "Scenario description line S2.1-2 (indentation is removed)."
158
+ ],
159
+ "keyword": "Scenario",
160
+ "location": "features/example_description2.feature:8",
161
+ "name": "S2.1",
162
+ """
163
+ And the file "example2.json" should contain:
164
+ """
165
+ "description": [
166
+ "Scenario description line S2.2-1."
167
+ ],
168
+ "keyword": "Scenario",
169
+ "location": "features/example_description2.feature:18",
170
+ "name": "S2.2",
171
+ """