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,168 @@
1
+ Feature: Setup logging_level
2
+
3
+ As a tester
4
+ I want to configure the logging_level for --logcapture mode
5
+ So that I see only the important log-records when a scenario fails.
6
+
7
+ As a tester
8
+ I want to configure the logging_level for --nologcapture mode
9
+ So that I see only the important log-records up to this level.
10
+
11
+ . SPECIFICATION:
12
+ . * logging_level can be defined on command-line
13
+ . * logging_level can be defined in behave configuration file
14
+ . * logging_level should be applied in before_all() hook in --nologcapture mode
15
+
16
+
17
+ @setup
18
+ Scenario: Feature Setup
19
+ Given a new working directory
20
+ And a file named "features/steps/use_behave4cmd_steps.py" with:
21
+ """
22
+ import behave4cmd0.log.steps
23
+ import behave4cmd0.failing_steps
24
+ import behave4cmd0.passing_steps
25
+ """
26
+ And a file named "features/environment.py" with:
27
+ """
28
+ def before_all(context):
29
+ context.config.setup_logging()
30
+ """
31
+ And a file named "features/example.log_with_failure.feature" with:
32
+ """
33
+ Feature:
34
+ Scenario: S1
35
+ Given I create log records with:
36
+ | category | level | message |
37
+ | root | ERROR | Hello1 log-error-record |
38
+ | root | WARN | Hello1 log-warn-record |
39
+ | root | INFO | Hello1 log-info-record |
40
+ | root | DEBUG | Hello1 log-debug-record |
41
+ When a step fails
42
+ """
43
+ And a file named "features/example.log_with_pass.feature" with:
44
+ """
45
+ Feature:
46
+ Scenario: S2
47
+ Given I create log records with:
48
+ | category | level | message |
49
+ | root | ERROR | Hello2 log-error-record |
50
+ | root | WARN | Hello2 log-warn-record |
51
+ | root | INFO | Hello2 log-info-record |
52
+ | root | DEBUG | Hello2 log-debug-record |
53
+ When a step passes
54
+ """
55
+
56
+ @capture
57
+ Scenario: Logcapture mode: Use logging_level on command-line
58
+
59
+ Also ensure that command-line option can override configuration file info.
60
+
61
+ Given a file named "behave.ini" with:
62
+ """
63
+ [behave]
64
+ logging_level = INFO
65
+ """
66
+ When I run "behave -f plain -T --logging-level=WARN features/"
67
+ Then it should fail with:
68
+ """
69
+ 1 scenario passed, 1 failed, 0 skipped
70
+ 3 steps passed, 1 failed, 0 skipped, 0 undefined
71
+ """
72
+ And the command output should contain:
73
+ """
74
+ Captured logging:
75
+ ERROR:root:Hello1 log-error-record
76
+ WARNING:root:Hello1 log-warn-record
77
+ """
78
+ But the command output should not contain the following log records:
79
+ | category | level | message | Comment |
80
+ | root | INFO | Hello1 log-info-record | Log-level too low |
81
+ | root | DEBUG | Hello1 log-debug-record | Log-level too low |
82
+ | root | ERROR | Hello2 log-error-record | Scenario passes, capture log is suppressed |
83
+ | root | WARN | Hello2 log-warn-record | Scenario passes, capture log is suppressed |
84
+ | root | INFO | Hello2 log-info-record | Scenario passes, capture log is suppressed |
85
+ | root | DEBUG | Hello2 log-debug-record | Scenario passes, capture log is suppressed |
86
+
87
+
88
+ @capture
89
+ Scenario: Logcapture mode: Use logging_level in configuration file
90
+ Given a file named "behave.ini" with:
91
+ """
92
+ [behave]
93
+ logging_level = ERROR
94
+ """
95
+ When I run "behave -f plain -T features/"
96
+ Then it should fail with:
97
+ """
98
+ 1 scenario passed, 1 failed, 0 skipped
99
+ 3 steps passed, 1 failed, 0 skipped, 0 undefined
100
+ """
101
+ And the command output should contain:
102
+ """
103
+ Captured logging:
104
+ ERROR:root:Hello1 log-error-record
105
+ """
106
+ But the command output should not contain the following log records:
107
+ | category | level | message | Comment |
108
+ | root | WARN | Hello1 log-warn-record | Log-level too low |
109
+ | root | INFO | Hello1 log-info-record | Log-level too low |
110
+ | root | DEBUG | Hello1 log-debug-record | Log-level too low |
111
+ | root | ERROR | Hello2 log-error-record | Scenario passes |
112
+ | root | WARN | Hello2 log-warn-record | Scenario passes |
113
+ | root | INFO | Hello2 log-info-record | Scenario passes |
114
+ | root | DEBUG | Hello2 log-debug-record | Scenario passes |
115
+
116
+
117
+ @no_capture
118
+ Scenario: Normal mode: Use logging_level on command-line
119
+ Given a file named "behave.ini" with:
120
+ """
121
+ [behave]
122
+ logging_level = INFO
123
+ """
124
+ When I run "behave -f plain -T --logging-level=WARN --no-logcapture features/"
125
+ Then it should fail with:
126
+ """
127
+ 1 scenario passed, 1 failed, 0 skipped
128
+ 3 steps passed, 1 failed, 0 skipped, 0 undefined
129
+ """
130
+ And the command output should contain the following log records:
131
+ | category | level | message |
132
+ | root | ERROR | Hello1 log-error-record |
133
+ | root | WARN | Hello1 log-warn-record |
134
+ | root | ERROR | Hello2 log-error-record |
135
+ | root | WARN | Hello2 log-warn-record |
136
+ But the command output should not contain the following log records:
137
+ | category | level | message | Comment |
138
+ | root | INFO | Hello1 log-info-record | Log-level too low |
139
+ | root | DEBUG | Hello1 log-debug-record | Same reason |
140
+ | root | INFO | Hello2 log-info-record | Same reason |
141
+ | root | DEBUG | Hello2 log-debug-record | Same reason |
142
+
143
+ @no_capture
144
+ Scenario: Normal mode: Use logging_level in configuration file
145
+ Given a file named "behave.ini" with:
146
+ """
147
+ [behave]
148
+ log_capture = false
149
+ logging_level = ERROR
150
+ """
151
+ When I run "behave -f plain -T features/"
152
+ Then it should fail with:
153
+ """
154
+ 1 scenario passed, 1 failed, 0 skipped
155
+ 3 steps passed, 1 failed, 0 skipped, 0 undefined
156
+ """
157
+ And the command output should contain the following log records:
158
+ | category | level | message |
159
+ | root | ERROR | Hello1 log-error-record |
160
+ | root | ERROR | Hello2 log-error-record |
161
+ But the command output should not contain the following log records:
162
+ | category | level | message | Comment |
163
+ | root | WARN | Hello1 log-warn-record | Log-level too low |
164
+ | root | INFO | Hello1 log-info-record | Same reason |
165
+ | root | DEBUG | Hello1 log-debug-record | Same reason |
166
+ | root | WARN | Hello2 log-warn-record | Same reason |
167
+ | root | INFO | Hello2 log-info-record | Same reason |
168
+ | root | DEBUG | Hello2 log-debug-record | Same reason |
@@ -0,0 +1,137 @@
1
+ Feature: Setup logging subsystem by using a logging configfile
2
+
3
+ As a tester
4
+ I want to setup the logging subsystem by using a configfile
5
+ To be more flexible even in complex situations
6
+
7
+ @setup
8
+ Scenario: Feature setup
9
+ Given a new working directory
10
+ And a file named "features/steps/use_behave4cmd_steps.py" with:
11
+ """
12
+ import behave4cmd0.log.steps
13
+ import behave4cmd0.failing_steps
14
+ import behave4cmd0.passing_steps
15
+ """
16
+ And a file named "features/example.log_and_pass.feature" with:
17
+ """
18
+ Feature:
19
+ Scenario: Passing
20
+ Given I create log records with:
21
+ | category | level | message |
22
+ | root | FATAL | Hello Alice |
23
+ | foo | ERROR | Hello Bob |
24
+ | foo.bar | WARN | Hello Charly |
25
+ | bar | INFO | Hello Dora |
26
+ | baz | DEBUG | Hello Emily |
27
+ And another step passes
28
+ """
29
+ And a file named "features/example.log_and_fail.feature" with:
30
+ """
31
+ Feature:
32
+ Scenario: Failing
33
+ Given I create log records with:
34
+ | category | level | message |
35
+ | root | FATAL | Hello Alice |
36
+ | foo | ERROR | Hello Bob |
37
+ | foo.bar | WARN | Hello Charly |
38
+ | bar | INFO | Hello Dora |
39
+ | baz | DEBUG | Hello Emily |
40
+ And another step fails
41
+ """
42
+ And a file named "behave.ini" with:
43
+ """
44
+ [behave]
45
+ log_capture = false
46
+ logging_level = DEBUG
47
+ logging_format = LOG.%(levelname)-8s %(name)-10s: %(message)s
48
+ """
49
+ And a file named "behave_logging.ini" with:
50
+ """
51
+ [loggers]
52
+ keys=root
53
+
54
+ [handlers]
55
+ keys=Console,File
56
+
57
+ [formatters]
58
+ keys=Brief
59
+
60
+ [logger_root]
61
+ level = NOTSET
62
+ handlers = File
63
+ # handlers = Console,File
64
+
65
+ [handler_File]
66
+ class=FileHandler
67
+ args=("behave.log", 'w')
68
+ level=NOTSET
69
+ formatter=Brief
70
+
71
+ [handler_Console]
72
+ class=StreamHandler
73
+ args=(sys.stderr,)
74
+ level=NOTSET
75
+ formatter=Brief
76
+
77
+ [formatter_Brief]
78
+ format= LOG.%(levelname)-8s %(name)-10s: %(message)s
79
+ datefmt=
80
+ """
81
+
82
+ Scenario: Setup logging subsystem via environment (case: logging mode)
83
+ Given a file named "features/environment.py" with:
84
+ """
85
+ def before_all(context):
86
+ context.config.setup_logging(configfile="behave_logging.ini")
87
+ """
88
+ And I use the log record configuration:
89
+ | property | value |
90
+ | format | LOG.%(levelname)-8s %(name)-10s: %(message)s |
91
+ When I run "behave -f plain features/example.log_and_pass.feature"
92
+ Then it should pass
93
+ And the file "behave.log" should contain the log records:
94
+ | category | level | message |
95
+ | root | FATAL | Hello Alice |
96
+ | foo | ERROR | Hello Bob |
97
+ | foo.bar | WARN | Hello Charly |
98
+ | bar | INFO | Hello Dora |
99
+ | baz | DEBUG | Hello Emily |
100
+ And the command output should not contain the following log records:
101
+ | category | level | message |
102
+ | root | FATAL | Hello Alice |
103
+ | foo | ERROR | Hello Bob |
104
+ | foo.bar | WARN | Hello Charly |
105
+ | bar | INFO | Hello Dora |
106
+ | baz | DEBUG | Hello Emily |
107
+
108
+
109
+ Scenario: Setup logging subsystem via environment (case: log-capture mode)
110
+ Given a file named "features/environment.py" with:
111
+ """
112
+ def before_all(context):
113
+ context.config.setup_logging(configfile="behave_logging.ini")
114
+ """
115
+ And I use the log record configuration:
116
+ | property | value |
117
+ | format | LOG.%(levelname)-8s %(name)-10s: %(message)s |
118
+ When I run "behave -f plain --logcapture features/example.log_and_fail.feature"
119
+ Then it should fail with:
120
+ """
121
+ 0 scenarios passed, 1 failed, 0 skipped
122
+ 1 step passed, 1 failed, 0 skipped, 0 undefined
123
+ """
124
+ And the file "behave.log" should contain the log records:
125
+ | category | level | message |
126
+ | root | FATAL | Hello Alice |
127
+ | foo | ERROR | Hello Bob |
128
+ | foo.bar | WARN | Hello Charly |
129
+ | bar | INFO | Hello Dora |
130
+ | baz | DEBUG | Hello Emily |
131
+ And the command output should contain the following log records:
132
+ | category | level | message |
133
+ | root | FATAL | Hello Alice |
134
+ | foo | ERROR | Hello Bob |
135
+ | foo.bar | WARN | Hello Charly |
136
+ | bar | INFO | Hello Dora |
137
+ | baz | DEBUG | Hello Emily |
@@ -0,0 +1,129 @@
1
+ Feature: Ensure that BAD/SAD Use cases of Background are detected
2
+
3
+ To improve diagnostics when parser failures occur
4
+ As a test writer
5
+ I expect reasonable explanations what went wrong.
6
+
7
+ @setup
8
+ Scenario: Feature Setup
9
+ Given a new working directory
10
+ And a file named "features/steps/passing_steps.py" with
11
+ """
12
+ from behave import step
13
+
14
+ @step('a step passes')
15
+ def step_passes(context):
16
+ pass
17
+
18
+ @step('a step passes with "{text}"')
19
+ def step_passes(context, text):
20
+ pass
21
+ """
22
+
23
+
24
+ Scenario: Background with tags is not supported
25
+ Given a file named "features/syndrome.background_with_tags.feature" with
26
+ """
27
+ Feature: Ensure this fails
28
+
29
+ @tags_are @not_supported @here
30
+ Background: Oops...
31
+ Given a step passes
32
+
33
+ Scenario: More...
34
+ Given a step passes
35
+ """
36
+ When I run "behave -f plain -T features/syndrome.background_with_tags.feature"
37
+ Then it should fail with
38
+ """
39
+ Failed to parse "{__WORKDIR__}/features/syndrome.background_with_tags.feature":
40
+ Parser failure in state taggable_statement, at line 4: "Background: Oops..."
41
+ REASON: Background does not support tags.
42
+ """
43
+
44
+
45
+ Scenario: Background should not occur after a Scenario
46
+ Given a file named "features/syndrome.background_after_scenario.feature" with
47
+ """
48
+ Feature: Ensure this fails1
49
+
50
+ Scenario: One...
51
+ Given a step passes
52
+
53
+ Background: Oops, too late (after Scenario)
54
+ When a step passes
55
+ """
56
+ When I run "behave -f plain -T features/syndrome.background_after_scenario.feature"
57
+ Then it should fail with
58
+ """
59
+ Failed to parse "{__WORKDIR__}/features/syndrome.background_after_scenario.feature":
60
+ Parser failure in state steps, at line 6: "Background: Oops, too late (after Scenario)"
61
+ REASON: Background may not occur after Scenario/ScenarioOutline.
62
+ """
63
+
64
+
65
+ Scenario: Tagged Background should not occur after a Scenario
66
+ Given a file named "features/syndrome.tagged_background_after_scenario.feature" with
67
+ """
68
+ Feature: Ensure this fails1
69
+
70
+ Scenario: One...
71
+ Given a step passes
72
+
73
+ @tags_are @not_supported @here
74
+ Background: Oops, too late (after Scenario)
75
+ When a step passes
76
+ """
77
+ When I run "behave -f plain -T features/syndrome.tagged_background_after_scenario.feature"
78
+ Then it should fail with
79
+ """
80
+ Parser failure in state taggable_statement, at line 7: "Background: Oops, too late (after Scenario)"
81
+ REASON: Background may not occur after Scenario/ScenarioOutline.
82
+ """
83
+
84
+
85
+ Scenario: Background should not occur after a Scenario Outline
86
+ Given a file named "features/syndrome.background_after_scenario_outline.feature" with
87
+ """
88
+ Feature: Ensure this fails3
89
+
90
+ Scenario Outline: Two...
91
+ Given a step passes with "<name>"
92
+
93
+ Examples:
94
+ | name |
95
+ | Alice |
96
+
97
+ Background: Oops, too late (after Scenario Outline)
98
+ When a step passes
99
+ """
100
+ When I run "behave -f plain -T features/syndrome.background_after_scenario_outline.feature"
101
+ Then it should fail with
102
+ """
103
+ Parser failure in state steps, at line 10: "Background: Oops, too late (after Scenario Outline)"
104
+ REASON: Background may not occur after Scenario/ScenarioOutline.
105
+ """
106
+
107
+
108
+ Scenario: Tagged Background should not occur after a Scenario Outline
109
+ Given a file named "features/syndrome.background_after_scenario_outline.feature" with
110
+ """
111
+ Feature: Ensure this fails4
112
+
113
+ Scenario Outline: Two...
114
+ Given a step passes with "<name>"
115
+
116
+ Examples:
117
+ | name |
118
+ | Alice |
119
+
120
+ @tags_are @not_supported @here
121
+ Background: Oops, too late (after Scenario Outline)
122
+ When a step passes
123
+ """
124
+ When I run "behave -f plain -T features/syndrome.background_after_scenario_outline.feature"
125
+ Then it should fail with
126
+ """
127
+ Parser failure in state taggable_statement, at line 11: "Background: Oops, too late (after Scenario Outline)"
128
+ REASON: Background may not occur after Scenario/ScenarioOutline.
129
+ """
@@ -0,0 +1,144 @@
1
+ Feature: Parsing a Feature File without a Feature or with several Features
2
+
3
+
4
+ @setup
5
+ Scenario: Feature Setup
6
+ Given a new working directory
7
+ And an empty file named "features/steps/empty_steps.py"
8
+ And a file named "features/steps/passing_steps.py" with:
9
+ """
10
+ from behave import step
11
+
12
+ @step('a step passes')
13
+ def step_passes(context):
14
+ pass
15
+ """
16
+
17
+ @no_feature
18
+ Scenario: Empty Feature File
19
+ Given an empty file named "features/empty.feature"
20
+ When I run "behave -f plain features/empty.feature"
21
+ Then it should pass with:
22
+ """
23
+ 0 features passed, 0 failed, 0 skipped
24
+ 0 scenarios passed, 0 failed, 0 skipped
25
+ 0 steps passed, 0 failed, 0 skipped, 0 undefined
26
+ """
27
+
28
+
29
+ @no_feature
30
+ Scenario: Feature File without Feature, only with Comments
31
+ Given a file named "features/only_comments.feature" with:
32
+ """
33
+ # COMMENT: Comment starts at begin of line.
34
+ # INDENTED-COMMENT: Comment starts after some whitespace.
35
+ """
36
+ When I run "behave -f plain features/only_comments.feature"
37
+ Then it should pass with:
38
+ """
39
+ 0 features passed, 0 failed, 0 skipped
40
+ 0 scenarios passed, 0 failed, 0 skipped
41
+ 0 steps passed, 0 failed, 0 skipped, 0 undefined
42
+ """
43
+
44
+
45
+ @no_feature
46
+ Scenario: Feature File without Feature, only with Empty Lines
47
+ Given a file named "features/only_empty_lines.feature" with:
48
+ """
49
+
50
+ """
51
+ When I run "behave -f plain features/only_empty_lines.feature"
52
+ Then it should pass with:
53
+ """
54
+ 0 features passed, 0 failed, 0 skipped
55
+ 0 scenarios passed, 0 failed, 0 skipped
56
+ 0 steps passed, 0 failed, 0 skipped, 0 undefined
57
+ """
58
+
59
+
60
+ @no_feature
61
+ Scenario: Feature File without Feature, only with Tags
62
+ Given a file named "features/only_tags.feature" with:
63
+ """
64
+ @weird
65
+ @no_feature
66
+ """
67
+ When I run "behave -f plain features/only_tags.feature"
68
+ Then it should pass with:
69
+ """
70
+ 0 features passed, 0 failed, 0 skipped
71
+ 0 scenarios passed, 0 failed, 0 skipped
72
+ 0 steps passed, 0 failed, 0 skipped, 0 undefined
73
+ """
74
+
75
+ @no_feature
76
+ @parser.with_parse_error
77
+ Scenario: Feature File with Text
78
+ Given a file named "features/only_text.feature" with:
79
+ """
80
+ This File: Contains only text without keywords.
81
+ OOPS.
82
+ """
83
+ When I run "behave -f plain features/only_text.feature"
84
+ Then it should fail with:
85
+ """
86
+ Failed to parse "{__WORKDIR__}/features/only_text.feature":
87
+ Parser failure in state init, at line 1: "This File: Contains only text without keywords."
88
+ REASON: No feature found.
89
+ """
90
+
91
+
92
+ @no_feature
93
+ @parser.with_parse_error
94
+ Scenario: Feature File with Scenario, but without Feature keyword
95
+ Given a file named "features/naked_scenario_only.feature" with:
96
+ """
97
+ Scenario:
98
+ Given a step passes
99
+ When a step passes
100
+ Then a step passes
101
+ """
102
+ When I run "behave -f plain features/naked_scenario_only.feature"
103
+ Then it should fail with:
104
+ """
105
+ Failed to parse "{__WORKDIR__}/features/naked_scenario_only.feature":
106
+ Parser failure in state init, at line 1: "Scenario:"
107
+ REASON: Scenario may not occur before Feature.
108
+ """
109
+
110
+
111
+ @many_features
112
+ @parser.with_parse_error
113
+ Scenario: Feature file with 2 features
114
+
115
+ NOTE: Gherkin parser supports only one feature per feature file.
116
+
117
+ Given a file named "features/steps/passing_steps.py" with:
118
+ """
119
+ from behave import step
120
+
121
+ @step('a step passes')
122
+ def step_passes(context):
123
+ pass
124
+ """
125
+ And a file named "features/two_features.feature" with:
126
+ """
127
+ Feature: F1
128
+ Scenario: F1.1
129
+ Given a step passes
130
+ When a step passes
131
+ Then a step passes
132
+
133
+ Feature: F2
134
+ Scenario: F2.1
135
+ Given a step passes
136
+ Then a step passes
137
+ """
138
+ When I run "behave -f plain features/two_features.feature"
139
+ Then it should fail with:
140
+ """
141
+ Failed to parse "{__WORKDIR__}/features/two_features.feature":
142
+ Parser failure in state steps, at line 7: "Feature: F2"
143
+ REASON: Multiple features in one file are not supported.
144
+ """