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,8 @@
1
+ EXAMPLE: Async-steps and async-dispatch/async-collect
2
+ ================================================================================
3
+
4
+ BASED-ON: features/step.async_step.feature
5
+ REQUIRES: Python 3.5 (or Python 3.4)
6
+
7
+ Examples for testing asyncio frameworks with async-steps, etc.
8
+
@@ -0,0 +1,14 @@
1
+ # =============================================================================
2
+ # BEHAVE CONFIGURATION
3
+ # =============================================================================
4
+ # FILE: .behaverc, behave.ini
5
+ #
6
+ # SEE ALSO:
7
+ # * http://packages.python.org/behave/behave.html#configuration-files
8
+ # * https://github.com/behave/behave
9
+ # * http://pypi.python.org/pypi/behave/
10
+ # =============================================================================
11
+
12
+ [behave]
13
+ show_timings = true
14
+
@@ -0,0 +1,8 @@
1
+ @use.with_python.version=3.4
2
+ @use.with_python.version=3.5
3
+ @use.with_python.version=3.6
4
+ Feature:
5
+ Scenario:
6
+ Given I dispatch an async-call with param "Alice"
7
+ And I dispatch an async-call with param "Bob"
8
+ Then the collected result of the async-calls is "ALICE, BOB"
@@ -0,0 +1,6 @@
1
+ @use.with_python.version=3.4
2
+ @use.with_python.version=3.5
3
+ @use.with_python.version=3.6
4
+ Feature:
5
+ Scenario:
6
+ Given an async-step waits 0.3 seconds
@@ -0,0 +1,28 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ from behave.tag_matcher import ActiveTagMatcher, setup_active_tag_values
4
+ import sys
5
+
6
+ # -- MATCHES ANY TAGS: @use.with_{category}={value}
7
+ # NOTE: active_tag_value_provider provides category values for active tags.
8
+ python_version = "%s.%s" % sys.version_info[:2]
9
+ active_tag_value_provider = {
10
+ "python.version": python_version,
11
+ }
12
+ active_tag_matcher = ActiveTagMatcher(active_tag_value_provider)
13
+
14
+ # -----------------------------------------------------------------------------
15
+ # HOOKS:
16
+ # -----------------------------------------------------------------------------
17
+ def before_all(context):
18
+ # -- SETUP ACTIVE-TAG MATCHER (with userdata):
19
+ setup_active_tag_values(active_tag_value_provider, context.config.userdata)
20
+
21
+ def before_feature(context, feature):
22
+ if active_tag_matcher.should_exclude_with(feature.tags):
23
+ feature.skip(reason=active_tag_matcher.exclude_reason)
24
+
25
+ def before_scenario(context, scenario):
26
+ if active_tag_matcher.should_exclude_with(scenario.effective_tags):
27
+ scenario.skip(reason=active_tag_matcher.exclude_reason)
28
+
@@ -0,0 +1,26 @@
1
+ from behave import given, then, step
2
+ from behave.api.async_step import use_or_create_async_context, AsyncContext
3
+ from hamcrest import assert_that, equal_to, empty
4
+ import asyncio
5
+
6
+ @asyncio.coroutine
7
+ def async_func(param):
8
+ yield from asyncio.sleep(0.2)
9
+ return str(param).upper()
10
+
11
+ @given('I dispatch an async-call with param "{param}"')
12
+ def step_dispatch_async_call(context, param):
13
+ async_context = use_or_create_async_context(context, "async_context1")
14
+ task = async_context.loop.create_task(async_func(param))
15
+ async_context.tasks.append(task)
16
+
17
+ @then('the collected result of the async-calls is "{expected}"')
18
+ def step_collected_async_call_result_is(context, expected):
19
+ async_context = context.async_context1
20
+ done, pending = async_context.loop.run_until_complete(
21
+ asyncio.wait(async_context.tasks, loop=async_context.loop))
22
+
23
+ parts = [task.result() for task in done]
24
+ joined_result = ", ".join(sorted(parts))
25
+ assert_that(joined_result, equal_to(expected))
26
+ assert_that(pending, empty())
@@ -0,0 +1,10 @@
1
+ # -- REQUIRES: Python >= 3.4
2
+ from behave import step
3
+ from behave.api.async_step import async_run_until_complete
4
+ import asyncio
5
+
6
+ @step('an async-step waits {duration:f} seconds')
7
+ @async_run_until_complete
8
+ @asyncio.coroutine
9
+ def step_async_step_waits_seconds_py34(context, duration):
10
+ yield from asyncio.sleep(duration)
@@ -0,0 +1,10 @@
1
+ # -- REQUIRES: Python >= 3.5
2
+ from behave import step
3
+ from behave.api.async_step import async_run_until_complete
4
+ import asyncio
5
+
6
+ @step('an async-step waits {duration:f} seconds')
7
+ @async_run_until_complete
8
+ async def step_async_step_waits_seconds_py35(context, duration):
9
+ """Simple example of a coroutine as async-step (in Python 3.5)"""
10
+ await asyncio.sleep(duration)
@@ -0,0 +1,11 @@
1
+ Feature:
2
+
3
+ Scenario:
4
+ Given I dispatch an async-call with param "Alice" ... passed in 0.001s
5
+ And I dispatch an async-call with param "Bob" ... passed in 0.000s
6
+ Then the collected result of the async-calls is "ALICE, BOB" ... passed in 0.206s
7
+
8
+ 1 feature passed, 0 failed, 0 skipped
9
+ 1 scenario passed, 0 failed, 0 skipped
10
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
11
+ Took 0m0.208s
@@ -0,0 +1,9 @@
1
+ Feature:
2
+
3
+ Scenario:
4
+ Given an async-step waits 0.3 seconds ... passed in 0.307s
5
+
6
+ 1 feature passed, 0 failed, 0 skipped
7
+ 1 scenario passed, 0 failed, 0 skipped
8
+ 1 step passed, 0 failed, 0 skipped, 0 undefined
9
+ Took 0m0.307s
@@ -0,0 +1,26 @@
1
+ EXAMPLE: Use Environment Variables in Steps
2
+ =============================================================================
3
+
4
+ :RELATED TO: `issue #497`_
5
+
6
+ This directory provides a simple example how you can use environment variables
7
+ in step implementations.
8
+
9
+ ::
10
+
11
+ # -- USE: -f plain --no-capture (via "behave.ini" defaults)
12
+ $ behave
13
+ Feature: Test Environment variable concept
14
+
15
+ Scenario:
16
+ USE ENVIRONMENT-VAR: LOGNAME = xxx (variant 1)
17
+ When I click on $LOGNAME ... passed
18
+ USE ENVIRONMENT-VAR: LOGNAME = xxx (variant 2)
19
+ When I use the environment variable $LOGNAME ... passed
20
+
21
+ 1 feature passed, 0 failed, 0 skipped
22
+ 1 scenario passed, 0 failed, 0 skipped
23
+ 2 steps passed, 0 failed, 0 skipped, 0 undefined
24
+ Took 0m0.000s
25
+
26
+ .. _`issue #497`: https://github.com/behave/behave/issues/497
@@ -0,0 +1,15 @@
1
+ # =============================================================================
2
+ # BEHAVE CONFIGURATION
3
+ # =============================================================================
4
+ # FILE: .behaverc, behave.ini
5
+ #
6
+ # SEE ALSO:
7
+ # * http://packages.python.org/behave/behave.html#configuration-files
8
+ # * https://github.com/behave/behave
9
+ # * http://pypi.python.org/pypi/behave/
10
+ # =============================================================================
11
+
12
+ [behave]
13
+ default_format = plain
14
+ stdout_capture = false
15
+ show_source = true
@@ -0,0 +1,12 @@
1
+ Feature: Test Environment variable concept
2
+
3
+ Scenario:
4
+ USE ENVIRONMENT-VAR: LOGNAME = xxx (variant 1)
5
+ When I click on $LOGNAME ... passed
6
+ USE ENVIRONMENT-VAR: LOGNAME = xxx (variant 2)
7
+ When I use the environment variable $LOGNAME ... passed
8
+
9
+ 1 feature passed, 0 failed, 0 skipped
10
+ 1 scenario passed, 0 failed, 0 skipped
11
+ 2 steps passed, 0 failed, 0 skipped, 0 undefined
12
+ Took 0m0.000s
@@ -0,0 +1,6 @@
1
+ Feature: Test Environment variable concept
2
+
3
+ Scenario:
4
+ When I click on $LOGNAME
5
+ When I use the environment variable $LOGNAME
6
+
@@ -0,0 +1,38 @@
1
+ # -*- coding: UTF-8 -*-
2
+ # -- FILE: features/steps/my_steps.py
3
+
4
+ from __future__ import print_function
5
+ from behave import when
6
+ import os
7
+ import sys
8
+
9
+ # -- VARIANT 1:
10
+ @when(u'I click on ${environment_variable:w}')
11
+ def step_impl(context, environment_variable):
12
+ env_value = os.environ.get(environment_variable, None)
13
+ if env_value is None:
14
+ raise LookupError("Environment variable '%s' is undefined" % environment_variable)
15
+ print("USE ENVIRONMENT-VAR: %s = %s (variant 1)" % (environment_variable, env_value))
16
+
17
+
18
+ # -- VARIANT 2: Use type converter
19
+ from behave import register_type
20
+ import parse
21
+
22
+ @parse.with_pattern(r"\$\w+") # -- ONLY FOR: $WORD
23
+ def parse_environment_var(text):
24
+ assert text.startswith("$")
25
+ env_name = text[1:]
26
+ env_value = os.environ.get(env_name, None)
27
+ return (env_name, env_value)
28
+
29
+ register_type(EnvironmentVar=parse_environment_var)
30
+
31
+ @when(u'I use the environment variable {environment_variable:EnvironmentVar}')
32
+ def step_impl(context, environment_variable):
33
+ env_name, env_value = environment_variable
34
+ if env_value is None:
35
+ raise LookupError("Environment variable '%s' is undefined" % env_name)
36
+ print("USE ENVIRONMENT-VAR: %s = %s (variant 2)" \
37
+ % (env_name, env_value))
38
+
@@ -0,0 +1,12 @@
1
+ behave features: Self-Tests
2
+ ===============================================================================
3
+
4
+ This directory contains feature tests that are executed with behave.
5
+ These self-tests are used to:
6
+
7
+ * ensure that ``behave`` reacts as expected
8
+ * define the common expected behaviour for behave
9
+ * support "Acceptance Test Driven-Design" (ATDD)
10
+
11
+ RELATED:
12
+ * Cucumber Technology Compatibility Kit: https://github.com/cucumber/cucumber-tck
@@ -0,0 +1,392 @@
1
+ Feature: Background
2
+
3
+ As a test writer
4
+ I want to run a number of steps in each scenario
5
+ And I want to avoid duplicating these steps for each scenario
6
+ So that I write these steps only once (DRY principle).
7
+
8
+ . SPECIFICATION:
9
+ . * A feature can have an optional "Background" section
10
+ . * The Background must be specified before any Scenario/ScenarioOutline
11
+ . * The Background may occur at most once
12
+ . * The Background steps are executed in each Scenario/ScenarioOutline
13
+ . * The Background steps are executed before any Scenario steps
14
+ . * If a Background step fails then the is marked as scenario failed
15
+ . * If a Background fails in a scenario then other scenarios are still executed.
16
+ .
17
+ . RELATED:
18
+ . * parser.background.sad_cases.feature
19
+ .
20
+ . NOTE:
21
+ . Cucumber has a slightly different runtime behaviour.
22
+ . When a background step fails the first scenario is marked as failed.
23
+ . But the remaining scenarios are marked as skipped.
24
+ .
25
+ . This can lead to problems when you have sporadic background step failures.
26
+ . For this reason, behave retries the background steps for each scenario.
27
+ . But this may lead to an increased test duration if a systematic failure
28
+ . occurs in the failing background step.
29
+ .
30
+ . SEE ALSO:
31
+ . * https://github.com/cucumber/cucumber/blob/master/features/docs/gherkin/background.feature
32
+
33
+ @setup
34
+ Scenario: Feature Setup
35
+ Given a new working directory
36
+ And a file named "features/steps/background_steps.py" with:
37
+ """
38
+ from behave import step
39
+
40
+ @step('{word} background step passes')
41
+ def step_background_step_passes(context, word):
42
+ pass
43
+
44
+ @step('{word} background step fails')
45
+ def step_background_step_fails(context, word):
46
+ assert False, "XFAIL: background step"
47
+
48
+ @step('{word} background step fails sometimes')
49
+ def step_background_step_fails_sometimes(context, word):
50
+ should_fail = (context.scenarios_count % 2) == 0
51
+ if should_fail:
52
+ step_background_step_fails(context, word)
53
+ """
54
+ And a file named "features/steps/passing_steps.py" with:
55
+ """
56
+ from behave import step
57
+
58
+ @step('{word} step passes')
59
+ def step_passes(context, word):
60
+ pass
61
+
62
+ @step('{word} step fails')
63
+ def step_fails(context, word):
64
+ assert False, "XFAIL"
65
+ """
66
+
67
+ Scenario: Feature with a Background and Scenarios
68
+ Given a file named "features/background_example1.feature" with:
69
+ """
70
+ Feature:
71
+ Background:
72
+ Given a background step passes
73
+ And another background step passes
74
+
75
+ Scenario: S1
76
+ When a step passes
77
+
78
+ Scenario: S2
79
+ Then a step passes
80
+ And another step passes
81
+ """
82
+ When I run "behave -f plain -T features/background_example1.feature"
83
+ Then it should pass with:
84
+ """
85
+ 2 scenarios passed, 0 failed, 0 skipped
86
+ 7 steps passed, 0 failed, 0 skipped, 0 undefined
87
+ """
88
+ And the command output should contain:
89
+ """
90
+ Feature:
91
+ Background:
92
+
93
+ Scenario: S1
94
+ Given a background step passes ... passed
95
+ And another background step passes ... passed
96
+ When a step passes ... passed
97
+
98
+ Scenario: S2
99
+ Given a background step passes ... passed
100
+ And another background step passes ... passed
101
+ Then a step passes ... passed
102
+ And another step passes ... passed
103
+ """
104
+ But note that "the Background steps are injected into each Scenario"
105
+ And note that "the Background steps are executed before any Scenario steps"
106
+
107
+
108
+ Scenario: Failing Background Step causes all Scenarios to fail
109
+ Given a file named "features/background_fail_example.feature" with:
110
+ """
111
+ Feature:
112
+
113
+ Background: B1
114
+ Given a background step passes
115
+ And a background step fails
116
+ And another background step passes
117
+
118
+ Scenario: S1
119
+ When a step passes
120
+
121
+ Scenario: S2
122
+ Then a step passes
123
+ And another step passes
124
+ """
125
+ When I run "behave -f plain -T features/background_fail_example.feature"
126
+ Then it should fail with:
127
+ """
128
+ 0 scenarios passed, 2 failed, 0 skipped
129
+ 2 steps passed, 2 failed, 5 skipped, 0 undefined
130
+ """
131
+ And the command output should contain:
132
+ """
133
+ Feature:
134
+ Background: B1
135
+
136
+ Scenario: S1
137
+ Given a background step passes ... passed
138
+ And a background step fails ... failed
139
+ Assertion Failed: XFAIL: background step
140
+
141
+ Scenario: S2
142
+ Given a background step passes ... passed
143
+ And a background step fails ... failed
144
+ Assertion Failed: XFAIL: background step
145
+ """
146
+ And note that "the failing Background step causes all Scenarios to fail"
147
+
148
+
149
+ Scenario: Failing Background Step does not prevent that other Scenarios are executed
150
+
151
+ If a Background step fails sometimes
152
+ it should be retried in the remaining Scenarios where it might pass.
153
+
154
+ Given a file named "features/background_fails_sometimes_example.feature" with:
155
+ """
156
+ Feature:
157
+
158
+ Background: B2
159
+ Given a background step fails sometimes
160
+
161
+ Scenario: S1
162
+ Given a step passes
163
+
164
+ Scenario: S2
165
+ When another step passes
166
+
167
+ Scenario: S3
168
+ Then another step passes
169
+ """
170
+ And a file named "features/environment.py" with:
171
+ """
172
+ scenarios_count = 0
173
+
174
+ def before_scenario(context, scenario):
175
+ global scenarios_count
176
+ context.scenarios_count = scenarios_count
177
+ scenarios_count += 1
178
+ """
179
+ When I run "behave -f plain -T features/background_fails_sometimes_example.feature"
180
+ Then it should fail with:
181
+ """
182
+ 1 scenario passed, 2 failed, 0 skipped
183
+ 2 steps passed, 2 failed, 2 skipped, 0 undefined
184
+ """
185
+ And the command output should contain:
186
+ """
187
+ Feature:
188
+ Background: B2
189
+
190
+ Scenario: S1
191
+ Given a background step fails sometimes ... failed
192
+ Assertion Failed: XFAIL: background step
193
+
194
+ Scenario: S2
195
+ Given a background step fails sometimes ... passed
196
+ When another step passes ... passed
197
+
198
+ Scenario: S3
199
+ Given a background step fails sometimes ... failed
200
+ Assertion Failed: XFAIL: background step
201
+ """
202
+
203
+
204
+ Scenario: Feature with a Background and ScenarioOutlines
205
+ Given a file named "features/background_outline_example.feature" with:
206
+ """
207
+ Feature:
208
+ Background:
209
+ Given a background step passes
210
+ And another background step passes
211
+
212
+ Scenario Outline: SO1
213
+ When a step <outcome1>
214
+ Then another step <outcome2>
215
+
216
+ Examples: Alpha
217
+ | outcome1 | outcome2 |
218
+ | passes | passes |
219
+ | passes | passes |
220
+
221
+ Scenario Outline: SO2
222
+ Given <word1> step passes
223
+ Then <word2> step passes
224
+
225
+ Examples:
226
+ | word1 | word2 |
227
+ | a | a |
228
+ | a | another |
229
+ | another | a |
230
+ """
231
+ When I run "behave -f plain -T features/background_outline_example.feature"
232
+ Then it should pass with:
233
+ """
234
+ 5 scenarios passed, 0 failed, 0 skipped
235
+ 20 steps passed, 0 failed, 0 skipped, 0 undefined
236
+ """
237
+ And the command output should contain:
238
+ """
239
+ Feature:
240
+ Background:
241
+
242
+ Scenario Outline: SO1 -- @1.1 Alpha
243
+ Given a background step passes ... passed
244
+ And another background step passes ... passed
245
+ When a step passes ... passed
246
+ Then another step passes ... passed
247
+
248
+ Scenario Outline: SO1 -- @1.2 Alpha
249
+ Given a background step passes ... passed
250
+ And another background step passes ... passed
251
+ When a step passes ... passed
252
+ Then another step passes ... passed
253
+
254
+ Scenario Outline: SO2 -- @1.1
255
+ Given a background step passes ... passed
256
+ And another background step passes ... passed
257
+ Given a step passes ... passed
258
+ Then a step passes ... passed
259
+
260
+ Scenario Outline: SO2 -- @1.2
261
+ Given a background step passes ... passed
262
+ And another background step passes ... passed
263
+ Given a step passes ... passed
264
+ Then another step passes ... passed
265
+
266
+ Scenario Outline: SO2 -- @1.3
267
+ Given a background step passes ... passed
268
+ And another background step passes ... passed
269
+ Given another step passes ... passed
270
+ Then a step passes ... passed
271
+ """
272
+ But note that "the Background steps are injected into each ScenarioOutline"
273
+ And note that "the Background steps are executed before any ScenarioOutline steps"
274
+
275
+
276
+ Scenario: Failing Background Step causes all ScenarioOutlines to fail
277
+ Given a file named "features/background_fail_outline_example.feature" with:
278
+ """
279
+ Feature:
280
+ Background:
281
+ Given a background step passes
282
+ And a background step fails
283
+ But another background step passes
284
+
285
+ Scenario Outline: SO1
286
+ When a step <outcome1>
287
+ Then another step <outcome2>
288
+
289
+ Examples: Alpha
290
+ | outcome1 | outcome2 |
291
+ | passes | passes |
292
+ | passes | fails |
293
+ | fails | passes |
294
+ | fails | fails |
295
+
296
+ Scenario Outline: SO2
297
+ When <word1> step passes
298
+
299
+ Examples: Beta
300
+ | word1 |
301
+ | a |
302
+ | another |
303
+ """
304
+ When I run "behave -f plain -T features/background_fail_outline_example.feature"
305
+ Then it should fail with:
306
+ """
307
+ 0 scenarios passed, 6 failed, 0 skipped
308
+ 6 steps passed, 6 failed, 16 skipped, 0 undefined
309
+ """
310
+ And the command output should contain:
311
+ """
312
+ Feature:
313
+ Background:
314
+
315
+ Scenario Outline: SO1 -- @1.1 Alpha
316
+ Given a background step passes ... passed
317
+ And a background step fails ... failed
318
+ Assertion Failed: XFAIL: background step
319
+
320
+ Scenario Outline: SO1 -- @1.2 Alpha
321
+ Given a background step passes ... passed
322
+ And a background step fails ... failed
323
+ Assertion Failed: XFAIL: background step
324
+
325
+ Scenario Outline: SO1 -- @1.3 Alpha
326
+ Given a background step passes ... passed
327
+ And a background step fails ... failed
328
+ Assertion Failed: XFAIL: background step
329
+
330
+ Scenario Outline: SO1 -- @1.4 Alpha
331
+ Given a background step passes ... passed
332
+ And a background step fails ... failed
333
+ Assertion Failed: XFAIL: background step
334
+
335
+ Scenario Outline: SO2 -- @1.1 Beta
336
+ Given a background step passes ... passed
337
+ And a background step fails ... failed
338
+ Assertion Failed: XFAIL: background step
339
+
340
+ Scenario Outline: SO2 -- @1.2 Beta
341
+ Given a background step passes ... passed
342
+ And a background step fails ... failed
343
+ Assertion Failed: XFAIL: background step
344
+ """
345
+ But note that "the failing Background step causes each ScenarioOutline to be marked as skipped"
346
+
347
+
348
+ Scenario: Feature with Background after first Scenario should fail (SAD CASE)
349
+ Given a file named "features/background_sad_example1.feature" with:
350
+ """
351
+ Feature:
352
+ Scenario: S1
353
+ When a step passes
354
+
355
+ Background: B1
356
+ Given a background step passes
357
+
358
+ Scenario: S2
359
+ Then a step passes
360
+ And another step passes
361
+ """
362
+ When I run "behave -f plain -T features/background_sad_example1.feature"
363
+ Then it should fail with:
364
+ """
365
+ Parser failure in state steps, at line 5: "Background: B1"
366
+ REASON: Background may not occur after Scenario/ScenarioOutline.
367
+ """
368
+
369
+
370
+ Scenario: Feature with two Backgrounds should fail (SAD CASE)
371
+ Given a file named "features/background_sad_example2.feature" with:
372
+ """
373
+ Feature:
374
+ Background: B1
375
+ Given a background step passes
376
+
377
+ Background: B2 (XFAIL)
378
+ Given another background step passes
379
+
380
+ Scenario: S1
381
+ When a step passes
382
+
383
+ Scenario: S2
384
+ Then a step passes
385
+ And another step passes
386
+ """
387
+ When I run "behave -f plain -T features/background_sad_example2.feature"
388
+ Then it should fail with:
389
+ """
390
+ Parser failure in state steps, at line 5: "Background: B2 (XFAIL)"
391
+ REASON: Background should not be used here.
392
+ """