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,157 @@
1
+ Feature: Scenario Outline -- Scenario Name Annotations
2
+
3
+ As a behave user / test writer
4
+ I want to know in the current example/row combination
5
+ So that I know the context of success/failure within a test run (without details).
6
+
7
+ . REQUIREMENTS:
8
+ . * generated scenario name should better indicate row/example combination.
9
+ . * name annotation schema for generated scenario names should be configurable.
10
+ .
11
+ . IMPROVEMENTS:
12
+ . * annotate Scenario Outline name (with row.id, examples.name, ...)
13
+ .
14
+ .
15
+ . SCENARIO OUTLINE NAME ANNOTATION SCHEMA:
16
+ .
17
+ . scenario_outline_annotation_schema = "{name} -- @{row.id} {examples.name}"
18
+ .
19
+ . | Placeholder | Description |
20
+ . | name | Name of the Scenario Outline. |
21
+ . | examples.name | Name of the examples group (or empty string). |
22
+ . | examples.index | Index of examples group (range: 1..N). |
23
+ . | row.index | Index of row in examples group (range: 1..R). |
24
+ . | row.id | Same as: "{example.index}.{row.index}" |
25
+
26
+
27
+ @setup
28
+ Scenario: Test Setup
29
+ Given a new working directory
30
+ And a file named "features/named_examples.feature" with:
31
+ """
32
+ Feature:
33
+ Scenario Outline: Named Examples
34
+ Given a param <param1>
35
+
36
+ Examples: Alice
37
+ | param1 |
38
+ | 10 |
39
+ | 42 |
40
+
41
+ Examples: Bob
42
+ | param1 |
43
+ | 43 |
44
+ """
45
+ And a file named "features/unnamed_examples.feature" with:
46
+ """
47
+ Feature:
48
+ Scenario Outline: Unnamed Examples
49
+ Given a param <param1>
50
+
51
+ Examples:
52
+ | param1 |
53
+ | 100 |
54
+ | 101 |
55
+ """
56
+ And a file named "features/steps/param_steps.py" with:
57
+ """
58
+ from behave import step
59
+
60
+ @step('a param {value:w}')
61
+ def step_impl_with_param(context, value):
62
+ context.param = value
63
+
64
+ @step('a param {name}={value}')
65
+ def step_impl_with_param_value(context, name, value):
66
+ context.param_name = name
67
+ context.param_value = value
68
+
69
+ """
70
+
71
+ Scenario: Use default annotation schema for generated scenarios (name annotations)
72
+
73
+ Each example/row combination should be easy to spot.
74
+
75
+ Given a file named "behave.ini" does not exist
76
+ When I run "behave -f plain --no-timings features/named_examples.feature"
77
+ Then it should pass with:
78
+ """
79
+ Scenario Outline: Named Examples -- @1.1 Alice
80
+ Given a param 10 ... passed
81
+
82
+ Scenario Outline: Named Examples -- @1.2 Alice
83
+ Given a param 42 ... passed
84
+
85
+ Scenario Outline: Named Examples -- @2.1 Bob
86
+ Given a param 43 ... passed
87
+ """
88
+ And note that "the default annotation schema is: {name} -- @{row.id} {examples.name}"
89
+ When I run "behave -f plain --no-timings features/unnamed_examples.feature"
90
+ Then it should pass with:
91
+ """
92
+ Scenario Outline: Unnamed Examples -- @1.1
93
+ Given a param 100 ... passed
94
+
95
+ Scenario Outline: Unnamed Examples -- @1.2
96
+ Given a param 101 ... passed
97
+ """
98
+ But note that "each generated scenario name has a unique <row.id> annotation"
99
+ And note that "each generated scenario name contains has its <examples.name> as annotation"
100
+
101
+
102
+ Scenario: Use own annotation schema for generated scenarios (name annotations)
103
+ Given a file named "behave.ini" with:
104
+ """
105
+ [behave]
106
+ scenario_outline_annotation_schema = {name} -*- {examples.name} @{row.id}
107
+ """
108
+ When I run "behave -f plain --no-timings features/named_examples.feature"
109
+ Then it should pass with:
110
+ """
111
+ Scenario Outline: Named Examples -*- Alice @1.1
112
+ Given a param 10 ... passed
113
+
114
+ Scenario Outline: Named Examples -*- Alice @1.2
115
+ Given a param 42 ... passed
116
+
117
+ Scenario Outline: Named Examples -*- Bob @2.1
118
+ Given a param 43 ... passed
119
+ """
120
+ When I run "behave -f plain --no-timings features/unnamed_examples.feature"
121
+ Then it should pass with:
122
+ """
123
+ Scenario Outline: Unnamed Examples -*- @1.1
124
+ Given a param 100 ... passed
125
+
126
+ Scenario Outline: Unnamed Examples -*- @1.2
127
+ Given a param 101 ... passed
128
+ """
129
+
130
+
131
+ Scenario: Disable name annotations (use: old naming scheme)
132
+ Given a file named "behave.ini" with:
133
+ """
134
+ [behave]
135
+ scenario_outline_annotation_schema = {name}
136
+ """
137
+ When I run "behave -f plain --no-timings features/named_examples.feature"
138
+ Then it should pass with:
139
+ """
140
+ Scenario Outline: Named Examples
141
+ Given a param 10 ... passed
142
+
143
+ Scenario Outline: Named Examples
144
+ Given a param 42 ... passed
145
+
146
+ Scenario Outline: Named Examples
147
+ Given a param 43 ... passed
148
+ """
149
+ When I run "behave -f plain --no-timings features/unnamed_examples.feature"
150
+ Then it should pass with:
151
+ """
152
+ Scenario Outline: Unnamed Examples
153
+ Given a param 100 ... passed
154
+
155
+ Scenario Outline: Unnamed Examples
156
+ Given a param 101 ... passed
157
+ """
@@ -0,0 +1,401 @@
1
+ Feature: Scenario Outline -- Parametrized Scenarios
2
+
3
+ As a test writer
4
+ I want to use the DRY principle when writing scenarios
5
+ So that I am more productive and my work is less error-prone.
6
+
7
+ . COMMENT:
8
+ . A Scenario Outline is basically a parametrized Scenario template.
9
+ . It is instantiated for each examples row with the corresponding data.
10
+ .
11
+ . SCENARIO GENERICS BASICS: What can be parametrized?
12
+ . * Scenario name: Based on Scenario Outline with placeholders
13
+ . * Scenario steps: Step name with placeholders (including: step.text, step.table)
14
+ . * Scenario tags: Based on Scenario Outline tags with placeholders
15
+ .
16
+ . CONSTRAINTS:
17
+ . * placeholders (names) for tags should not contain any whitespace.
18
+ . * a row data placeholder may override/hide a special placeholder (see below).
19
+ .
20
+ . SPECIAL PLACEHOLDERS:
21
+ . | Placeholder | Description |
22
+ . | examples.name | Name of the examples group (or empty string). |
23
+ . | examples.index | Index of examples group (range: 1..N). |
24
+ . | row.index | Index of row in examples group (range: 1..R). |
25
+ . | row.id | Same as: "{example.index}.{row.index}" |
26
+
27
+
28
+ @setup
29
+ Scenario: Test Setup
30
+ Given a new working directory
31
+ And a file named "behave.ini" with:
32
+ """
33
+ [behave]
34
+ scenario_outline_annotation_schema = {name} -*- {examples.name}
35
+ """
36
+ And a file named "features/steps/param_steps.py" with:
37
+ """
38
+ from behave import step
39
+
40
+ @step('a param {value:w}')
41
+ def step_with_param(context, value):
42
+ context.param = value
43
+
44
+ @step('a param {name}={value}')
45
+ def step_with_param_value(context, name, value):
46
+ context.param_name = name
47
+ context.param_value = value
48
+
49
+ @step('a step with text')
50
+ def step_with_param_value(context):
51
+ assert context.text is not None, "REQUIRE: text"
52
+
53
+ @step('a step with table')
54
+ def step_with_param_value(context):
55
+ assert context.table is not None, "REQUIRE: table"
56
+
57
+ @step('an unknown param {name}={value}')
58
+ def step_with_unknown_param_value(context, name, value):
59
+ pass
60
+ """
61
+
62
+ @parametrize.name
63
+ Scenario: Parametrized name in generated Scenarios (Case: Row Placeholders)
64
+ Given a file named "features/use_name_with_row_params.feature" with:
65
+ """
66
+ Feature: SOP1
67
+ Scenario Outline: Use placeholder <name>-<param1>
68
+ Given a param param1=<param1>
69
+ And a param name=<name>
70
+
71
+ Examples: E-<ID>
72
+ | ID | name | param1 |
73
+ | 001 | Alice | 100 |
74
+ | 002 | Bob | 101 |
75
+ """
76
+ When I run "behave -f progress3 features/use_name_with_row_params.feature"
77
+ Then it should pass with:
78
+ """
79
+ Use placeholder Alice-100 -*- E-001 ..
80
+ Use placeholder Bob-101 -*- E-002 ..
81
+ """
82
+
83
+ @parametrize.name
84
+ Scenario: Parametrized name in generated Scenarios (Case: Special Placeholders)
85
+ Given a file named "features/use_name_with_special_params.feature" with:
86
+ """
87
+ Feature: SOP2
88
+ Scenario Outline: Use placeholder S<examples.index>-<row.index> <examples.name>
89
+ Given a param name=<name>
90
+ And a param row.id=<row.id>
91
+
92
+ Examples: E-<ID>/@<row.id>
93
+ | ID | name | param1 |
94
+ | 001 | Alice | 100 |
95
+ | 002 | Bob | 101 |
96
+ """
97
+ When I run "behave -f progress3 features/use_name_with_special_params.feature"
98
+ Then it should pass with:
99
+ """
100
+ Use placeholder S1-1 E-001/@1.1 -*- E-001/@1.1 ..
101
+ Use placeholder S1-2 E-002/@1.2 -*- E-002/@1.2 ..
102
+ """
103
+
104
+ @parametrize.steps
105
+ Scenario: Use placeholders in generated scenario steps
106
+ Given a file named "features/use_steps_with_params.feature" with:
107
+ """
108
+ Feature:
109
+ Scenario Outline: Use row placeholders
110
+ Given a param ID=<ID>
111
+ And a param name=<name>
112
+ And a param param1=<param1>
113
+
114
+ Examples:
115
+ | ID | name | param1 |
116
+ | 001 | Alice | 101 |
117
+ | 002 | Bob | 102 |
118
+ """
119
+ When I run "behave -f plain --no-timings features/use_steps_with_params.feature"
120
+ Then it should pass with:
121
+ """
122
+ Scenario Outline: Use row placeholders -*-
123
+ Given a param ID=001 ... passed
124
+ And a param name=Alice ... passed
125
+ And a param param1=101 ... passed
126
+
127
+ Scenario Outline: Use row placeholders -*-
128
+ Given a param ID=002 ... passed
129
+ And a param name=Bob ... passed
130
+ And a param param1=102 ... passed
131
+ """
132
+
133
+ @parametrize.steps
134
+ Scenario: Use an unknown placeholder in generated scenario steps
135
+ Given a file named "features/use_steps_with_unknown_params.feature" with:
136
+ """
137
+ Feature:
138
+ Scenario Outline: Use unknown placeholders
139
+ Given an unknown param unknown=<unknown>
140
+
141
+ Examples:
142
+ | ID | name | param1 |
143
+ | 001 | Alice | 100 |
144
+ """
145
+ When I run "behave -f plain --no-timings features/use_steps_with_unknown_params.feature"
146
+ Then it should pass with:
147
+ """
148
+ Scenario Outline: Use unknown placeholders -*-
149
+ Given an unknown param unknown=<unknown> ... passed
150
+ """
151
+ But note that "unknown placeholders are not replaced"
152
+
153
+
154
+ @parametrize.steps
155
+ Scenario: Use placeholders in generated scenario step.text
156
+ Given a file named "features/use_steps_with_param_text.feature" with:
157
+ '''
158
+ Feature:
159
+ Scenario Outline: Use parametrized step with text
160
+ Given a step with text:
161
+ """
162
+ <greeting> <name>;
163
+ Travel agency: <travel agency>
164
+ """
165
+
166
+ Examples:
167
+ | ID | name | greeting | travel agency |
168
+ | 001 | Alice | Hello | Pony express |
169
+ '''
170
+ When I run "behave -f plain --no-timings features/use_steps_with_param_text.feature"
171
+ Then it should pass with:
172
+ '''
173
+ Scenario Outline: Use parametrized step with text -*-
174
+ Given a step with text ... passed
175
+ """
176
+ Hello Alice;
177
+ Travel agency: Pony express
178
+ """
179
+ '''
180
+ And note that "placeholders in step.text are replaced with row data"
181
+
182
+
183
+ @parametrize.steps
184
+ Scenario: Use placeholders in generated scenario step.table
185
+ Given a file named "features/use_steps_with_param_table.feature" with:
186
+ """
187
+ Feature:
188
+ Scenario Outline: Use parametrized step with table
189
+ Given a step with table:
190
+ | Id | Name | Travel Agency | row id |
191
+ | <ID> | <name> | <travel agency> | <row.id> |
192
+
193
+ Examples:
194
+ | ID | name | greeting | travel agency |
195
+ | 001 | Alice | Hello | Pony express |
196
+ """
197
+ When I run "behave -f plain --no-timings features/use_steps_with_param_table.feature"
198
+ Then it should pass with:
199
+ """
200
+ Scenario Outline: Use parametrized step with table -*-
201
+ Given a step with table ... passed
202
+ | Id | Name | Travel Agency | row id |
203
+ | 001 | Alice | Pony express | <row.id> |
204
+ """
205
+ And note that "placeholders in step.table cells are replaced with row data"
206
+ But note that "<row.id> is currently not supported in table cells (like other special placeholders)"
207
+
208
+
209
+ @parametrize.steps
210
+ Scenario: Use special placeholders in generated scenario steps
211
+ Given a file named "features/use_steps_with_special_params.feature" with:
212
+ """
213
+ Feature:
214
+ Scenario Outline: Use special placeholders @<row.id>
215
+ Given a param name=<name>
216
+ And a param examples.name=<examples.name>
217
+ And a param examples.index=<examples.index>
218
+ And a param row.index=<row.index>
219
+ And a param row.id=<row.id>
220
+
221
+ Examples: E-<ID>/@<row.id>
222
+ | ID | name | param1 |
223
+ | 001 | Alice | 100 |
224
+ | 002 | Bob | 101 |
225
+ """
226
+ When I run "behave -f plain --no-timings features/use_steps_with_special_params.feature"
227
+ Then it should pass with:
228
+ """
229
+ Scenario Outline: Use special placeholders @1.1 -*- E-001/@1.1
230
+ Given a param name=Alice ... passed
231
+ And a param examples.name=E-001/@1.1 ... passed
232
+ And a param examples.index=1 ... passed
233
+ And a param row.index=1 ... passed
234
+ And a param row.id=1.1 ... passed
235
+
236
+ Scenario Outline: Use special placeholders @1.2 -*- E-002/@1.2
237
+ Given a param name=Bob ... passed
238
+ And a param examples.name=E-002/@1.2 ... passed
239
+ And a param examples.index=1 ... passed
240
+ And a param row.index=2 ... passed
241
+ And a param row.id=1.2 ... passed
242
+ """
243
+
244
+
245
+ @parametrize.name
246
+ @parametrize.steps
247
+ Scenario: When special placeholder name is used for row data (Case: Override)
248
+
249
+ Ensure that row data (placeholder) can override special placeholder (if needed).
250
+ AFFECTED: scenario.name, examples.name, step.name
251
+
252
+ Given a file named "behave.ini" with:
253
+ """
254
+ [behave]
255
+ scenario_outline_annotation_schema = {name} -*- special:row.id=@{row.id} {examples.name}
256
+ """
257
+ And a file named "features/use_name_with_overwritten_params.feature" with:
258
+ """
259
+ Feature: SOP3
260
+ Scenario Outline: Use placeholder data:row.id=<row.id>
261
+ Given a param name=<name>
262
+ And a param row.id=<row.id>
263
+
264
+ Examples: E-<ID>/<row.id>
265
+ | ID | name | row.id |
266
+ | 001 | Alice | 100 |
267
+ | 002 | Bob | 101 |
268
+ """
269
+ When I run "behave -f progress3 features/use_name_with_overwritten_params.feature"
270
+ Then it should pass with:
271
+ """
272
+ Use placeholder data:row.id=100 -*- special:row.id=@1.1 E-001/100 ..
273
+ Use placeholder data:row.id=101 -*- special:row.id=@1.2 E-002/101 ..
274
+ """
275
+ When I run "behave -f plain --no-timings features/use_name_with_overwritten_params.feature"
276
+ Then it should pass with:
277
+ """
278
+ Scenario Outline: Use placeholder data:row.id=100 -*- special:row.id=@1.1 E-001/100
279
+ Given a param name=Alice ... passed
280
+ And a param row.id=100 ... passed
281
+
282
+ Scenario Outline: Use placeholder data:row.id=101 -*- special:row.id=@1.2 E-002/101
283
+ Given a param name=Bob ... passed
284
+ And a param row.id=101 ... passed
285
+ """
286
+ But note that "a row data placeholder can override a special placeholder"
287
+ And note that "the name annotation {row.id} still allows to refer to the special one"
288
+
289
+
290
+
291
+ @parametrize.steps
292
+ Scenario: Placeholder value has placeholder syntax (Case: recursion-check)
293
+
294
+ Ensure that weird placeholder value cases are handled correctly.
295
+ Ensure that no recursion occurs.
296
+
297
+ Given a file named "behave.ini" with:
298
+ """
299
+ [behave]
300
+ scenario_outline_annotation_schema = {name} -*- @{row.id} {examples.name}
301
+ """
302
+ And a file named "features/use_value_with_placeholder_syntax.feature" with:
303
+ """
304
+ Feature:
305
+ Scenario Outline: Use weird placeholder values
306
+ Given a param name=<name>
307
+
308
+ Examples:
309
+ | name | Expected | ID | Case: |
310
+ | <ID> | 001 | 001 | Value refers to other, known placeholder.|
311
+ | <ID> | 002 | 002 | Check if row specific value is used. |
312
+ | <unknown> | <unkown> | 003 | Value refers to unknown placeholder. |
313
+ | <name> | <name> | 004 | Value refers to itself (recursion?). |
314
+ """
315
+ When I run "behave -f plain --no-timings features/use_value_with_placeholder_syntax.feature"
316
+ Then it should pass with:
317
+ """
318
+ Scenario Outline: Use weird placeholder values -*- @1.1
319
+ Given a param name=001 ... passed
320
+
321
+ Scenario Outline: Use weird placeholder values -*- @1.2
322
+ Given a param name=002 ... passed
323
+
324
+ Scenario Outline: Use weird placeholder values -*- @1.3
325
+ Given a param name=<unknown> ... passed
326
+
327
+ Scenario Outline: Use weird placeholder values -*- @1.4
328
+ Given a param name=<name> ... passed
329
+ """
330
+
331
+ @simple.case
332
+ @parametrize.tags
333
+ Scenario: Parametrized tags in a Scenario Outline
334
+ Given a file named "behave.ini" with:
335
+ """
336
+ [behave]
337
+ scenario_outline_annotation_schema = {name} -*- @{row.id} {examples.name}
338
+ """
339
+ And a file named "features/parametrized_tags.feature" with:
340
+ """
341
+ Feature:
342
+ @foo @outline.e<examples.index> @outline.row.<row.id> @outline.ID.<ID>
343
+ Scenario Outline: Use parametrized tags
344
+ Given a param name=<name>
345
+
346
+ Examples:
347
+ | ID | name |
348
+ | 001 | Alice |
349
+ | 002 | Bob |
350
+ """
351
+ When I run "behave -f pretty -c --no-timings features/parametrized_tags.feature"
352
+ Then it should pass with:
353
+ """
354
+ @foo @outline.e1 @outline.row.1.1 @outline.ID.001
355
+ Scenario Outline: Use parametrized tags -*- @1.1 # features/parametrized_tags.feature:8
356
+ Given a param name=Alice # features/steps/param_steps.py:7
357
+
358
+ @foo @outline.e1 @outline.row.1.2 @outline.ID.002
359
+ Scenario Outline: Use parametrized tags -*- @1.2 # features/parametrized_tags.feature:9
360
+ Given a param name=Bob # features/steps/param_steps.py:7
361
+ """
362
+ But note that "special and row data placeholders can be used in tags"
363
+
364
+
365
+ @parametrize.tags
366
+ Scenario: Parametrized tags in a Scenario Outline (Case: Whitespace... in value)
367
+ Given a file named "behave.ini" with:
368
+ """
369
+ [behave]
370
+ scenario_outline_annotation_schema = {name} -*- @{row.id} {examples.name}
371
+ """
372
+ And a file named "features/parametrized_tags2.feature" with:
373
+ """
374
+ Feature:
375
+ @outline.name.<name>
376
+ Scenario Outline: Use parametrized tags
377
+ Given a param name=<name>
378
+
379
+ Examples:
380
+ | ID | name | Case: |
381
+ | 001 | Alice Cooper | Placeholder value w/ whitespace |
382
+ | 002 | Bob\tMarley | Placeholder value w/ tab |
383
+ | 003 | Joe\nCocker | Placeholder value w/ newline |
384
+ """
385
+ When I run "behave -f pretty -c --no-source features/parametrized_tags2.feature"
386
+ Then it should pass with:
387
+ """
388
+ @outline.name.Alice_Cooper
389
+ Scenario Outline: Use parametrized tags -*- @1.1
390
+ Given a param name=Alice Cooper
391
+
392
+ @outline.name.Bob_Marley
393
+ Scenario Outline: Use parametrized tags -*- @1.2
394
+ Given a param name=Bob\tMarley
395
+
396
+ @outline.name.Joe_Cocker
397
+ Scenario Outline: Use parametrized tags -*- @1.3
398
+ Given a param name=Joe\nCocker
399
+ """
400
+ But note that "placeholder values with special chars (whitespace, ...) are transformed"
401
+