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,101 @@
1
+ # -*- coding: UTF-8 -*-
2
+ """
3
+ Provides step definitions for behave based on behave4cmd.
4
+
5
+ REQUIRES:
6
+ * behave4cmd.steplib.output steps (command output from behave).
7
+ """
8
+
9
+ from __future__ import absolute_import
10
+ from behave import then
11
+ from behave.runner_util import make_undefined_step_snippet
12
+
13
+
14
+ # -----------------------------------------------------------------------------
15
+ # UTILITY FUNCTIONS:
16
+ # -----------------------------------------------------------------------------
17
+ def text_indent(text, indent_size=0):
18
+ prefix = " " * indent_size
19
+ return prefix.join(text.splitlines(True))
20
+
21
+
22
+ # -----------------------------------------------------------------------------
23
+ # STEPS FOR: Undefined step definitions
24
+ # -----------------------------------------------------------------------------
25
+ @then(u'an undefined-step snippets section exists')
26
+ def step_undefined_step_snippets_section_exists(context):
27
+ """
28
+ Checks if an undefined-step snippet section is in behave command output.
29
+ """
30
+ context.execute_steps(u'''
31
+ Then the command output should contain:
32
+ """
33
+ You can implement step definitions for undefined steps with these snippets:
34
+ """
35
+ ''')
36
+
37
+ @then(u'an undefined-step snippet should exist for "{step}"')
38
+ def step_undefined_step_snippet_should_exist_for(context, step):
39
+ """
40
+ Checks if an undefined-step snippet is provided for a step
41
+ in behave command output (last command).
42
+
43
+ EXAMPLE:
44
+ Then an undefined-step snippet should exist for "Given an undefined step"
45
+ """
46
+ undefined_step_snippet = make_undefined_step_snippet(step)
47
+ context.execute_steps(u'''\
48
+ Then the command output should contain:
49
+ """
50
+ {undefined_step_snippet}
51
+ """
52
+ '''.format(undefined_step_snippet=text_indent(undefined_step_snippet, 4)))
53
+
54
+
55
+ @then(u'an undefined-step snippet should not exist for "{step}"')
56
+ def step_undefined_step_snippet_should_not_exist_for(context, step):
57
+ """
58
+ Checks if an undefined-step snippet is provided for a step
59
+ in behave command output (last command).
60
+ """
61
+ undefined_step_snippet = make_undefined_step_snippet(step)
62
+ context.execute_steps(u'''\
63
+ Then the command output should not contain:
64
+ """
65
+ {undefined_step_snippet}
66
+ """
67
+ '''.format(undefined_step_snippet=text_indent(undefined_step_snippet, 4)))
68
+
69
+
70
+ @then(u'undefined-step snippets should exist for')
71
+ def step_undefined_step_snippets_should_exist_for_table(context):
72
+ """
73
+ Checks if undefined-step snippets are provided.
74
+
75
+ EXAMPLE:
76
+ Then undefined-step snippets should exist for:
77
+ | Step |
78
+ | When an undefined step is used |
79
+ | Then another undefined step is used |
80
+ """
81
+ assert context.table, "REQUIRES: table"
82
+ for row in context.table.rows:
83
+ step = row["Step"]
84
+ step_undefined_step_snippet_should_exist_for(context, step)
85
+
86
+
87
+ @then(u'undefined-step snippets should not exist for')
88
+ def step_undefined_step_snippets_should_not_exist_for_table(context):
89
+ """
90
+ Checks if undefined-step snippets are not provided.
91
+
92
+ EXAMPLE:
93
+ Then undefined-step snippets should not exist for:
94
+ | Step |
95
+ | When an known step is used |
96
+ | Then another known step is used |
97
+ """
98
+ assert context.table, "REQUIRES: table"
99
+ for row in context.table.rows:
100
+ step = row["Step"]
101
+ step_undefined_step_snippet_should_not_exist_for(context, step)
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Use behave4cmd0 step library (predecessor of behave4cmd).
4
+ """
5
+
6
+ from __future__ import absolute_import
7
+
8
+ # -- REGISTER-STEPS FROM STEP-LIBRARY:
9
+ import behave4cmd0.__all_steps__
10
+ import behave4cmd0.passing_steps
11
+ import behave4cmd0.failing_steps
12
+ import behave4cmd0.note_steps
@@ -0,0 +1,114 @@
1
+ Feature: Summary with Undefined Steps
2
+
3
+ . SPECIFICATION:
4
+ . * An undefined step should be counted as "undefined" step.
5
+ . * An undefined step should cause its scenario to fail.
6
+ . * If an undefined step is detected the remaining scenario steps are skipped.
7
+ .
8
+ . RELATED TO:
9
+ . * issue #42 Multiple undefined steps in same scenario are detected.
10
+
11
+
12
+ @setup
13
+ Scenario: Test Setup
14
+ Given a new working directory
15
+ And a file named "features/steps/passing_steps.py" with:
16
+ """
17
+ from behave import step
18
+
19
+ @step('a step passes')
20
+ def step_passes(context):
21
+ pass
22
+ """
23
+
24
+ Scenario: Undefined step as first step in a scenario
25
+ Given a file named "features/summary_undefined_first_step.feature" with:
26
+ """
27
+ Feature:
28
+ Scenario:
29
+ Given an undefined step is used
30
+ When a step passes
31
+ Then a step passes
32
+ """
33
+ When I run "behave -f plain features/summary_undefined_first_step.feature"
34
+ Then it should fail with:
35
+ """
36
+ 0 features passed, 1 failed, 0 skipped
37
+ 0 scenarios passed, 1 failed, 0 skipped
38
+ 0 steps passed, 0 failed, 2 skipped, 1 undefined
39
+ """
40
+
41
+ Scenario: Undefined step as last step in a scenario
42
+ Given a file named "features/summary_undefined_last_step.feature" with:
43
+ """
44
+ Feature:
45
+ Scenario:
46
+ Given a step passes
47
+ When an undefined step is used
48
+ """
49
+ When I run "behave -f plain features/summary_undefined_last_step.feature"
50
+ Then it should fail with:
51
+ """
52
+ 0 features passed, 1 failed, 0 skipped
53
+ 0 scenarios passed, 1 failed, 0 skipped
54
+ 1 step passed, 0 failed, 0 skipped, 1 undefined
55
+ """
56
+
57
+
58
+ Scenario: Undefined step as middle step in a scenario
59
+ Given a file named "features/summary_undefined_middle_step.feature" with:
60
+ """
61
+ Feature:
62
+ Scenario:
63
+ Given a step passes
64
+ When an undefined step is used
65
+ Then a step passes
66
+ And a step passes
67
+ """
68
+ When I run "behave -f plain features/summary_undefined_middle_step.feature"
69
+ Then it should fail with:
70
+ """
71
+ 0 features passed, 1 failed, 0 skipped
72
+ 0 scenarios passed, 1 failed, 0 skipped
73
+ 1 step passed, 0 failed, 2 skipped, 1 undefined
74
+ """
75
+
76
+ Scenario: Two undefined steps in same scenario, all are detected (skipped)
77
+ Given a file named "features/summary_undefined_step2.feature" with:
78
+ """
79
+ Feature:
80
+ Scenario:
81
+ Given a step passes
82
+ When an undefined step is used
83
+ Then a step passes
84
+ And another undefined step is used
85
+ """
86
+ When I run "behave -f plain features/summary_undefined_step2.feature"
87
+ Then it should fail with:
88
+ """
89
+ 0 features passed, 1 failed, 0 skipped
90
+ 0 scenarios passed, 1 failed, 0 skipped
91
+ 1 step passed, 0 failed, 1 skipped, 2 undefined
92
+ """
93
+
94
+
95
+ Scenario: Two undefined steps in different scenarios
96
+ Given a file named "features/summary_undefined_step_and_another.feature" with:
97
+ """
98
+ Feature:
99
+ Scenario:
100
+ Given a step passes
101
+ When an undefined step is used
102
+ Then a step passes
103
+
104
+ Scenario:
105
+ Given an undefined step is used
106
+ When a step passes
107
+ """
108
+ When I run "behave -f plain features/summary_undefined_step_and_another.feature"
109
+ Then it should fail with:
110
+ """
111
+ 0 features passed, 1 failed, 0 skipped
112
+ 0 scenarios passed, 2 failed, 0 skipped
113
+ 1 step passed, 0 failed, 2 skipped, 2 undefined
114
+ """
@@ -0,0 +1,385 @@
1
+ Feature: Active Tags
2
+
3
+ As a test writer
4
+ I want that some tags are evaluated at runtime
5
+ So that some features/scenarios automatically excluded from the run-set.
6
+
7
+ . SPECIFICATION: Active tag
8
+ . * An active tag is evaluated at runtime.
9
+ . * An active tag is either enabled or disabled (decided by runtime decision logic).
10
+ . * A disabled active tag causes that its feature/scenario is excluded from the run-set.
11
+ . * If several active tags are used for a feature/scenario/scenario outline,
12
+ . the following tag logic is used:
13
+ .
14
+ . SIMPLIFIED ALGORITHM: For active-tag expression
15
+ .
16
+ . enabled := enabled(active-tag1) and enabled(active-tag2) and ...
17
+ .
18
+ . where all active-tags have a different category.
19
+ .
20
+ . REAL ALGORITHM:
21
+ . If multiple active-tags for the same catgory exist,
22
+ . then these active-tags need to be merged together into a tag_group.
23
+ .
24
+ . enabled := enabled(tag_group1) and enabled(tag_group2) and ...
25
+ . tag_group.enabled := enabled(tag1) or enabled(tag2) or ...
26
+ .
27
+ . where all the active-tags within a tag-group have the same category.
28
+ .
29
+ . ACTIVE TAG SCHEMA (dialect1):
30
+ . @use.with_{category}={value}
31
+ . @not.with_{category}={value}
32
+ .
33
+ . DEPRECATED: @only.with_{category}={value}
34
+ .
35
+ . ACTIVE TAG SCHEMA (dialect2):
36
+ . @active.with_{category}={value}
37
+ . @not_active.with_{category}={value}
38
+ .
39
+ . RATIONALE:
40
+ . Some aspects of the runtime environment are only known
41
+ . when the tests are running. Therefore, it many cases it is simpler
42
+ . to use such a mechanism as "active tags" instead of moving this decision
43
+ . to the build-script that runs the tests.
44
+ .
45
+ . This allows to automatically skip some tests (scenarios, features)
46
+ . that would otherwise fail anyway.
47
+ .
48
+ . NOTE:
49
+ . * DRY-RUN MODE: Hooks are not called in dry-run mode.
50
+
51
+
52
+ @setup
53
+ Scenario: Feature Setup
54
+ Given a new working directory
55
+ And a file named "features/steps/pass_steps.py" with:
56
+ """
57
+ from behave import step
58
+
59
+ @step('{word:w} step passes')
60
+ def step_passes(context, word):
61
+ pass
62
+
63
+ # -- REUSE: Step definitions.
64
+ from behave4cmd0 import note_steps
65
+ """
66
+ And a file named "features/environment.py" with:
67
+ """
68
+ from behave.tag_matcher import ActiveTagMatcher, setup_active_tag_values
69
+ import sys
70
+
71
+ # -- ACTIVE TAG SUPPORT: @use.with_{category}={value}, ...
72
+ active_tag_value_provider = {
73
+ "browser": "chrome",
74
+ "webserver": "apache",
75
+ }
76
+ active_tag_matcher = ActiveTagMatcher(active_tag_value_provider)
77
+
78
+ # -- BEHAVE-HOOKS:
79
+ def before_all(context):
80
+ setup_active_tag_values(active_tag_value_provider, context.config.userdata)
81
+
82
+ def before_scenario(context, scenario):
83
+ if active_tag_matcher.should_exclude_with(scenario.effective_tags):
84
+ sys.stdout.write("ACTIVE-TAG DISABLED: Scenario %s\n" % scenario.name)
85
+ scenario.skip(active_tag_matcher.exclude_reason)
86
+ """
87
+ And a file named "behave.ini" with:
88
+ """
89
+ [behave]
90
+ default_format = pretty
91
+ show_timings = no
92
+ show_skipped = no
93
+ color = no
94
+ """
95
+
96
+ Scenario: Use active-tag with Scenario and one category (tag schema dialect2)
97
+ Given a file named "features/e1.active_tags.feature" with:
98
+ """
99
+ Feature:
100
+
101
+ @use.with_browser=chrome
102
+ Scenario: Alice (Run only with Web-Browser Chrome)
103
+ Given a step passes
104
+ When another step passes
105
+
106
+ @only.with_browser=safari
107
+ Scenario: Bob (Run only with Web-Browser Safari)
108
+ Given some step passes
109
+ """
110
+ When I run "behave -f plain features/e1.active_tags.feature"
111
+ Then it should pass with:
112
+ """
113
+ 1 scenario passed, 0 failed, 1 skipped
114
+ 2 steps passed, 0 failed, 1 skipped, 0 undefined
115
+ """
116
+ And the command output should contain:
117
+ """
118
+ ACTIVE-TAG DISABLED: Scenario Bob
119
+ """
120
+ But the command output should not contain:
121
+ """
122
+ ACTIVE-TAG DISABLED: Scenario Alice
123
+ """
124
+
125
+ Scenario: Use tag schema dialect1 with several categories
126
+ Given a file named "features/e2.active_tags.feature" with:
127
+ """
128
+ Feature:
129
+
130
+ @active.with_webserver=apache
131
+ Scenario: Alice (Run only with Apache Web-Server)
132
+ Given a step passes
133
+ When another step passes
134
+
135
+ @active.with_browser=safari
136
+ Scenario: Bob (Run only with Safari Web-Browser)
137
+ Given another step passes
138
+ """
139
+ When I run "behave -f plain -D browser=firefox features/e2.active_tags.feature"
140
+ Then it should pass with:
141
+ """
142
+ 1 scenario passed, 0 failed, 1 skipped
143
+ 2 steps passed, 0 failed, 1 skipped, 0 undefined
144
+ """
145
+ And the command output should contain:
146
+ """
147
+ ACTIVE-TAG DISABLED: Scenario Bob
148
+ """
149
+ But the command output should not contain:
150
+ """
151
+ ACTIVE-TAG DISABLED: Scenario Alice
152
+ """
153
+
154
+ Scenario Outline: Use active tags with positive and negative logic: <browser>
155
+ Given a file named "features/e3.active_tags.feature" with:
156
+ """
157
+ Feature:
158
+
159
+ @active.with_browser=chrome
160
+ Scenario: Alice
161
+ Given a step passes
162
+ When another step passes
163
+
164
+ @not_active.with_browser=opera
165
+ Scenario: Bob
166
+ Given another step passes
167
+
168
+ @use.with_browser=safari
169
+ Scenario: Charly
170
+ Given some step passes
171
+ """
172
+ When I run "behave -f plain -D browser=<browser> features/e3.active_tags.feature"
173
+ Then it should pass with:
174
+ """
175
+ ACTIVE-TAG DISABLED: Scenario <disabled scenario>
176
+ """
177
+ And the command output should not contain:
178
+ """
179
+ ACTIVE-TAG DISABLED: Scenario <enabled scenario>
180
+ """
181
+ And note that "<comment>"
182
+
183
+ Examples:
184
+ | browser | enabled scenario | disabled scenario | comment |
185
+ | chrome | Alice | Charly | Bob is also enabled |
186
+ | firefox | Bob | Alice | Charly is also disabled |
187
+ | safari | Charly | Alice | Bob is also enabled |
188
+
189
+
190
+ Scenario: Tag logic with one active tag
191
+ Given I setup the current values for active tags with:
192
+ | category | value |
193
+ | foo | xxx |
194
+ Then the following active tag combinations are enabled:
195
+ | tags | enabled? |
196
+ | @active.with_foo=xxx | yes |
197
+ | @active.with_foo=other | no |
198
+ | @not_active.with_foo=xxx | no |
199
+ | @not_active.with_foo=other | yes |
200
+ And the following active tag combinations are enabled:
201
+ | tags | enabled? |
202
+ | @use.with_foo=xxx | yes |
203
+ | @use.with_foo=other | no |
204
+ | @only.with_foo=xxx | yes |
205
+ | @only.with_foo=other | no |
206
+ | @not.with_foo=xxx | no |
207
+ | @not.with_foo=other | yes |
208
+
209
+
210
+ Scenario: Tag logic with two active tags
211
+ Given I setup the current values for active tags with:
212
+ | category | value |
213
+ | foo | xxx |
214
+ | bar | zzz |
215
+ Then the following active tag combinations are enabled:
216
+ | tags | enabled? |
217
+ | @use.with_foo=xxx @use.with_bar=zzz | yes |
218
+ | @use.with_foo=xxx @use.with_bar=other | no |
219
+ | @use.with_foo=other @use.with_bar=zzz | no |
220
+ | @use.with_foo=other @use.with_bar=other | no |
221
+ | @not.with_foo=xxx @use.with_bar=zzz | no |
222
+ | @not.with_foo=xxx @use.with_bar=other | no |
223
+ | @not.with_foo=other @use.with_bar=zzz | yes |
224
+ | @not.with_foo=other @use.with_bar=other | no |
225
+ | @use.with_foo=xxx @not.with_bar=zzz | no |
226
+ | @use.with_foo=xxx @not.with_bar=other | yes |
227
+ | @use.with_foo=other @not.with_bar=zzz | no |
228
+ | @use.with_foo=other @not.with_bar=other | no |
229
+ | @not.with_foo=xxx @not.with_bar=zzz | no |
230
+ | @not.with_foo=xxx @not.with_bar=other | no |
231
+ | @not.with_foo=other @not.with_bar=zzz | no |
232
+ | @not.with_foo=other @not.with_bar=other | yes |
233
+
234
+
235
+ Scenario: Tag logic with two active tags of same category
236
+ Given I setup the current values for active tags with:
237
+ | category | value |
238
+ | foo | xxx |
239
+ Then the following active tag combinations are enabled:
240
+ | tags | enabled? | Comment |
241
+ | @use.with_foo=xxx @use.with_foo=other | yes | Enabled: tag1 |
242
+ | @use.with_foo=xxx @not.with_foo=other | yes | Enabled: tag1, tag2|
243
+ | @use.with_foo=xxx @not.with_foo=xxx | yes | Enabled: tag1 (BAD-SPEC) |
244
+ | @use.with_foo=other @not.with_foo=xxx | no | Enabled: none |
245
+ | @not.with_foo=other @not.with_foo=xxx | yes | Enabled: tag1 |
246
+
247
+
248
+ Scenario: Tag logic with unknown categories (case: ignored)
249
+
250
+ Unknown categories (where a value is missing) are ignored by default.
251
+ Therefore, the active tag that uses an unknown category acts
252
+ as if it is always enabled (even in the negated case).
253
+
254
+ Given I setup the current values for active tags with:
255
+ | category | value |
256
+ | foo | xxx |
257
+ When unknown categories are ignored in active tags
258
+ Then the following active tag combinations are enabled:
259
+ | tags | enabled? |
260
+ | @use.with_unknown=xxx | yes |
261
+ | @use.with_unknown=zzz | yes |
262
+ | @not.with_unknown=xxx | yes |
263
+ | @not.with_unknown=zzz | yes |
264
+ But note that "the active tag with the unknown category acts like a passive tag"
265
+
266
+
267
+ Scenario: Tag logic with unknown categories (case: not ignored)
268
+
269
+ If unknown categories are not ignored, then the active tag is disabled.
270
+
271
+ Given I setup the current values for active tags with:
272
+ | category | value |
273
+ | foo | xxx |
274
+ When unknown categories are not ignored in active tags
275
+ Then the following active tag combinations are enabled:
276
+ | tags | enabled? |
277
+ | @use.with_unknown=xxx | no |
278
+ | @use.with_unknown=zzz | no |
279
+ | @not.with_unknown=xxx | yes |
280
+ | @not.with_unknown=zzz | yes |
281
+ But note that "the active tag with the unknown category is disabled"
282
+
283
+
284
+ Scenario: ScenarioOutline with enabled active-tag is executed
285
+ Given a file named "features/outline1.active_tags.feature" with:
286
+ """
287
+ Feature:
288
+
289
+ @use.with_browser=chrome
290
+ Scenario Outline: Alice -- <name>, <language>
291
+ Given a step passes
292
+ But note that "<name> can speak <language>"
293
+
294
+ Examples:
295
+ | name | language |
296
+ | Anna | German |
297
+ | Arabella | English |
298
+ """
299
+ When I run "behave -D browser=chrome features/outline1.active_tags.feature"
300
+ Then it should pass with:
301
+ """
302
+ 2 scenarios passed, 0 failed, 0 skipped
303
+ 4 steps passed, 0 failed, 0 skipped, 0 undefined
304
+ """
305
+ And the command output should contain:
306
+ """
307
+ @use.with_browser=chrome
308
+ Scenario Outline: Alice -- Anna, German -- @1.1 # features/outline1.active_tags.feature:10
309
+ Given a step passes # features/steps/pass_steps.py:3
310
+ But note that "Anna can speak German" # ../behave4cmd0/note_steps.py:15
311
+
312
+ @use.with_browser=chrome
313
+ Scenario Outline: Alice -- Arabella, English -- @1.2 # features/outline1.active_tags.feature:11
314
+ Given a step passes # features/steps/pass_steps.py:3
315
+ But note that "Arabella can speak English" # ../behave4cmd0/note_steps.py:15
316
+ """
317
+ And the command output should not contain "ACTIVE-TAG DISABLED: Scenario Alice"
318
+ But note that "we check now that tags for example rows are generated correctly"
319
+ And the command output should not contain "@use.with_browserchrome"
320
+ But the command output should contain "@use.with_browser=chrome"
321
+
322
+
323
+ Scenario: ScenarioOutline with disabled active-tag is skipped
324
+ Given a file named "features/outline2.active_tags.feature" with:
325
+ """
326
+ Feature:
327
+
328
+ @use.with_browser=chrome
329
+ Scenario Outline: Bob -- <name>, <language>
330
+ Given some step passes
331
+ But note that "<name> can speak <language>"
332
+
333
+ Examples:
334
+ | name | language |
335
+ | Bernhard | French |
336
+ """
337
+ When I run "behave -D browser=other features/outline2.active_tags.feature"
338
+ Then it should pass with:
339
+ """
340
+ 0 scenarios passed, 0 failed, 1 skipped
341
+ 0 steps passed, 0 failed, 2 skipped, 0 undefined
342
+ """
343
+ And the command output should contain:
344
+ """
345
+ ACTIVE-TAG DISABLED: Scenario Bob -- Bernhard, French -- @1.1
346
+ """
347
+
348
+ Scenario: ScenarioOutline with generated active-tag
349
+ Given a file named "features/outline3.active_tags.feature" with:
350
+ """
351
+ Feature:
352
+
353
+ @use.with_browser=<browser>
354
+ Scenario Outline: Charly -- <name>, <language>, <browser>
355
+ Given a step passes
356
+ But note that "<name> can speak <language>"
357
+
358
+ Examples:
359
+ | name | language | browser | Comment |
360
+ | Anna | German | firefox | Should be skipped when browser=chrome |
361
+ | Arabella | English | chrome | Should be executed when browser=chrome |
362
+ """
363
+ When I run "behave -D browser=chrome features/outline3.active_tags.feature"
364
+ Then it should pass with:
365
+ """
366
+ 1 scenario passed, 0 failed, 1 skipped
367
+ 2 steps passed, 0 failed, 2 skipped, 0 undefined
368
+ """
369
+ And the command output should contain:
370
+ """
371
+ ACTIVE-TAG DISABLED: Scenario Charly -- Anna, German, firefox -- @1.1
372
+ """
373
+ And the command output should not contain:
374
+ """
375
+ ACTIVE-TAG DISABLED: Scenario Charly -- Arabella, English, chrome -- @1.2
376
+ """
377
+ And the command output should contain:
378
+ """
379
+ ACTIVE-TAG DISABLED: Scenario Charly -- Anna, German, firefox -- @1.1
380
+
381
+ @use.with_browser=chrome
382
+ Scenario Outline: Charly -- Arabella, English, chrome -- @1.2 # features/outline3.active_tags.feature:11
383
+ Given a step passes # features/steps/pass_steps.py:3
384
+ But note that "Arabella can speak English" # ../behave4cmd0/note_steps.py:15
385
+ """