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,32 @@
1
+ @issue
2
+ Feature: Issue #72: Using 'GHERKIN_COLORS' fails with Exception
3
+
4
+ > Trying: GHERKIN_COLORS=executing=white behave
5
+ > It fails:
6
+ >
7
+ > Traceback (most recent call last):
8
+ > ...
9
+ > File "/.../behave/formatter/ansi_escapes.py", line 38, in <module>
10
+ > escapes[alias] = ''.join([colors[c] for c in aliases[alias].split(',')])
11
+ > TypeError: list indices must be integers, not str
12
+ >
13
+ > The reason is that the global variable colors is defined twice in this module.
14
+ > The second variable overrides/modifies the first (without intention).
15
+
16
+
17
+ Scenario: Using GHERKIN_COLORS in new working dir
18
+ Given a new working directory
19
+ And I set the environment variable "GHERKIN_COLORS" to "executing=white"
20
+ When I run "behave"
21
+ Then it should fail with:
22
+ """
23
+ No steps directory in '{__WORKDIR__}/features'
24
+ """
25
+ But the command output should not contain:
26
+ """
27
+ Traceback (most recent call last):
28
+ """
29
+ And the command output should not contain:
30
+ """
31
+ TypeError: list indices must be integers, not str
32
+ """
@@ -0,0 +1,228 @@
1
+ @issue
2
+ Feature: Issue #73: the current_matcher is not predictable
3
+
4
+ . behave provides 2 matchers: ParseMatcher (parse) and RegexpMatcher (re).
5
+ . The ParseMatcher is used per default when the test runner starts.
6
+ .
7
+ . A step definition file may change the matcher several times
8
+ . by calling `use_step_matcher("re")` or `use_step_matcher("parse")`.
9
+ . In order to make the writing of step definitions more predictable,
10
+ . the matcher should be reset to the default matcher
11
+ . before loading each step definition.
12
+ .
13
+ . A project can define its own default matcher by calling the
14
+ . `use_step_matcher(...)` in the "environment.py" hook.
15
+ . This matcher will be used as default before a step definition is loaded.
16
+
17
+
18
+ Scenario: Verify that ParseMatcher is the default matcher
19
+ Given a new working directory
20
+ And a file named "features/steps/parse_steps.py" with:
21
+ """
22
+ from behave import step
23
+
24
+ @step(u'a step {outcome:w}')
25
+ def step_passes(context, outcome):
26
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
27
+ """
28
+ And a file named "features/passing.feature" with:
29
+ """
30
+ Feature:
31
+ Scenario:
32
+ Given a step passes
33
+ When a step passes
34
+ Then a step passes
35
+ """
36
+ When I run "behave -f plain features/passing.feature"
37
+ Then it should pass with
38
+ """
39
+ 1 scenario passed, 0 failed, 0 skipped
40
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
41
+ """
42
+
43
+
44
+ Scenario: Use only RegexMatcher in Step Definitions
45
+ Given a new working directory
46
+ And a file named "features/environment.py" with:
47
+ """
48
+ from behave import use_step_matcher
49
+ use_step_matcher("re")
50
+ """
51
+ And a file named "features/steps/regexp_steps.py" with:
52
+ """
53
+ from behave import step
54
+
55
+ @step(u'a step (?P<outcome>passes|fails)')
56
+ def step_passes(context, outcome):
57
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
58
+ """
59
+ And a file named "features/passing.feature" with:
60
+ """
61
+ Feature:
62
+ Scenario:
63
+ Given a step passes
64
+ When a step passes
65
+ Then a step passes
66
+ """
67
+ When I run "behave -f plain features/passing.feature"
68
+ Then it should pass with
69
+ """
70
+ 1 scenario passed, 0 failed, 0 skipped
71
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
72
+ """
73
+
74
+
75
+ Scenario: Use ParseMatcher and RegexMatcher in Step Definitions (default=re)
76
+ Given a new working directory
77
+ And a file named "features/environment.py" with:
78
+ """
79
+ from behave import use_step_matcher
80
+ use_step_matcher("re")
81
+ """
82
+ And a file named "features/steps/eparse_steps.py" with:
83
+ """
84
+ from behave import step, use_step_matcher
85
+ use_step_matcher("parse")
86
+
87
+ @step(u'an extraordinary step {outcome:w}')
88
+ def step_passes(context, outcome):
89
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
90
+ """
91
+ And a file named "features/steps/regexp_steps.py" with:
92
+ """
93
+ from behave import step
94
+
95
+ @step(u'a step (?P<outcome>passes|fails)')
96
+ def step_passes(context, outcome):
97
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
98
+ """
99
+ And a file named "features/steps/xparse_steps.py" with:
100
+ """
101
+ from behave import step, use_step_matcher
102
+ use_step_matcher("parse")
103
+
104
+ @step(u'another step {outcome:w}')
105
+ def step_passes(context, outcome):
106
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
107
+ """
108
+ And a file named "features/passing3.feature" with:
109
+ """
110
+ Feature:
111
+ Scenario:
112
+ Given a step passes
113
+ When another step passes
114
+ Then an extraordinary step passes
115
+ """
116
+ When I run "behave -f plain features/passing3.feature"
117
+ Then it should pass with
118
+ """
119
+ 1 scenario passed, 0 failed, 0 skipped
120
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
121
+ """
122
+
123
+
124
+ Scenario: Mix ParseMatcher and RegexMatcher in Step Definitions (default=re)
125
+ Given a new working directory
126
+ And a file named "features/environment.py" with:
127
+ """
128
+ from behave import use_step_matcher
129
+ use_step_matcher("re")
130
+ """
131
+ And a file named "features/steps/given_steps.py" with:
132
+ """
133
+ from behave import step, use_step_matcher
134
+
135
+ use_step_matcher("parse")
136
+ @given(u'a step {outcome:w}')
137
+ def given_step_passes(context, outcome):
138
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
139
+
140
+ use_step_matcher("re")
141
+ @given(u'another step (?P<outcome>passes|fails)')
142
+ def given_another_step_passes(context, outcome):
143
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
144
+
145
+ use_step_matcher("parse")
146
+ @given(u'an extraordinary step {outcome:w}')
147
+ def given_extraordinary_step_passes(context, outcome):
148
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
149
+ """
150
+ And a file named "features/steps/when_steps.py" with:
151
+ """
152
+ from behave import step, use_step_matcher
153
+
154
+ @when(u'a step (?P<outcome>passes|fails)')
155
+ def when_step_passes(context, outcome):
156
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
157
+
158
+ use_step_matcher("parse")
159
+ @when(u'another step {outcome:w}')
160
+ def when_another_step_passes(context, outcome):
161
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
162
+
163
+ use_step_matcher("re")
164
+ @when(u'an extraordinary step (?P<outcome>passes|fails)')
165
+ def when_extraordinary_step_passes(context, outcome):
166
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
167
+ """
168
+ And a file named "features/steps/then_steps.py" with:
169
+ """
170
+ from behave import step, use_step_matcher
171
+
172
+ use_step_matcher("parse")
173
+ @then(u'a step {outcome:w}')
174
+ def then_step_passes(context, outcome):
175
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
176
+
177
+ use_step_matcher("re")
178
+ @then(u'another step (?P<outcome>passes|fails)')
179
+ def then_another_step_passes(context, outcome):
180
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
181
+
182
+ use_step_matcher("parse")
183
+ @then(u'an extraordinary step {outcome:w}')
184
+ def then_extraordinary_step_passes(context, outcome):
185
+ assert outcome == "passes", "FAIL: outcome={0}".format(outcome)
186
+ """
187
+ And a file named "features/passing3.feature" with:
188
+ """
189
+ Feature:
190
+ Scenario: 1
191
+ Given a step passes
192
+ When another step passes
193
+ Then an extraordinary step passes
194
+
195
+ Scenario: 2
196
+ Given another step passes
197
+ When an extraordinary step passes
198
+ Then a step passes
199
+
200
+ Scenario: 3
201
+ Given an extraordinary step passes
202
+ When a step passes
203
+ Then another step passes
204
+ """
205
+ When I run "behave -c -f pretty --no-timings features/passing3.feature"
206
+ Then it should pass with:
207
+ """
208
+ 3 scenarios passed, 0 failed, 0 skipped
209
+ 9 steps passed, 0 failed, 0 skipped, 0 undefined
210
+ """
211
+ And the command output should contain:
212
+ """
213
+ Feature: # features/passing3.feature:1
214
+ Scenario: 1 # features/passing3.feature:2
215
+ Given a step passes # features/steps/given_steps.py:4
216
+ When another step passes # features/steps/when_steps.py:8
217
+ Then an extraordinary step passes # features/steps/then_steps.py:14
218
+
219
+ Scenario: 2 # features/passing3.feature:7
220
+ Given another step passes # features/steps/given_steps.py:9
221
+ When an extraordinary step passes # features/steps/when_steps.py:13
222
+ Then a step passes # features/steps/then_steps.py:4
223
+
224
+ Scenario: 3 # features/passing3.feature:12
225
+ Given an extraordinary step passes # features/steps/given_steps.py:14
226
+ When a step passes # features/steps/when_steps.py:3
227
+ Then another step passes # features/steps/then_steps.py:9
228
+ """
@@ -0,0 +1,18 @@
1
+ @issue
2
+ Feature: Issue #75: behave @features_from_text_file does not work
3
+
4
+ . Feature of Cucumber. Reading the source code, I see it partly implemented.
5
+ .
6
+ . $ behave @list_of_features.txt
7
+ . https://github.com/jeamland/behave/blob/master/behave/runner.py#L416:L430
8
+ .
9
+ . However it fails because:
10
+ . * it does not remove the @ from the path
11
+ . * it does not search the steps/ directory in the parents of the feature files themselves
12
+
13
+
14
+ @reuse.colocated_test
15
+ Scenario: Use feature listfile
16
+ Given I use the current directory as working directory
17
+ When I run "behave -f plain features/runner.feature_listfile.feature"
18
+ Then it should pass
@@ -0,0 +1,89 @@
1
+ @issue
2
+ Feature: Issue #77: Does not capture stdout from sub-processes
3
+
4
+ . My step functions are using wrapper objects to interact with SUT.
5
+ . Those wrappers use this kind of thing to invoke executables:
6
+ .
7
+ . subprocess.check_call('myprog', ..., stderr=subprocess.STDOUT)
8
+ .
9
+ . However, the output from those calls does not appear in the stdout
10
+ . captured by behave when a step fails.
11
+
12
+
13
+ Background: Test Setup
14
+ Given a new working directory
15
+ Given a file named "hello.py" with:
16
+ """
17
+ import sys
18
+
19
+ def hello():
20
+ result = 0
21
+ args = sys.argv[1:]
22
+ if args and args[0].startswith("--fail"):
23
+ result = 1
24
+ args = args[1:]
25
+ message = " ".join(args)
26
+ sys.stdout.write("Hello {0}\n".format(message))
27
+ sys.exit(result)
28
+
29
+ if __name__ == "__main__":
30
+ hello()
31
+ """
32
+ And a file named "features/steps/subprocess_call_steps.py" with:
33
+ """
34
+ from behave import given, when, then
35
+ import subprocess
36
+ import os.path
37
+ import sys
38
+
39
+ PYTHON = sys.executable
40
+ HERE = os.path.dirname(__file__)
41
+
42
+ @when(u'I make a subprocess call "hello {commandline}"')
43
+ def step(context, commandline):
44
+ result = subprocess_call_hello(commandline.split())
45
+ assert result == 0
46
+
47
+ def subprocess_call_hello(args):
48
+ command_args = [ PYTHON, "hello.py" ] + args
49
+ result = subprocess.check_call(command_args, stderr=subprocess.STDOUT)
50
+ return result
51
+ # result = subprocess.check_output(command_args, stderr=subprocess.STDOUT)
52
+ # return result
53
+ """
54
+
55
+ Scenario: Subprocess call shows generated output
56
+ Given a file named "features/issue77_hello_OK.feature" with:
57
+ """
58
+ Feature:
59
+ Scenario:
60
+ When I make a subprocess call "hello world."
61
+ """
62
+ When I run "behave -f plain features/issue77_hello_OK.feature"
63
+ Then it should pass with:
64
+ """
65
+ 1 scenario passed, 0 failed, 0 skipped
66
+ 1 step passed, 0 failed, 0 skipped, 0 undefined
67
+ """
68
+ And the command output should contain:
69
+ """
70
+ Hello world.
71
+ """
72
+
73
+ Scenario: Subprocess call fails with captured output
74
+ Given a file named "features/issue77_hello_FAIL.feature" with:
75
+ """
76
+ Feature:
77
+ Scenario:
78
+ When I make a subprocess call "hello --fail FAIL."
79
+ """
80
+ When I run "behave -f plain features/issue77_hello_FAIL.feature"
81
+ Then it should fail with:
82
+ """
83
+ 0 scenarios passed, 1 failed, 0 skipped
84
+ 0 steps passed, 1 failed, 0 skipped, 0 undefined
85
+ """
86
+ And the command output should contain:
87
+ """
88
+ Hello FAIL.
89
+ """
@@ -0,0 +1,49 @@
1
+ @issue
2
+ Feature: Issue #80: source file names not properly printed with python3
3
+
4
+ . $ behave -f pretty example/example.feature
5
+ . Scenario: run a simple test # example/example.feature:3
6
+ . Given we have behave installed # <string>:3
7
+ . When we implement a test # <string>:7
8
+ . Then behave will test it for us! # <string>:11
9
+
10
+
11
+ Background: Test Setup
12
+ Given a new working directory
13
+ And a file named "features/steps/steps.py" with:
14
+ """
15
+ from behave import given, when, then
16
+
17
+ @given(u'a step passes')
18
+ def step(context):
19
+ pass
20
+
21
+ @when(u'a step passes')
22
+ def step(context):
23
+ pass
24
+
25
+ @then(u'a step passes')
26
+ def step(context):
27
+ pass
28
+ """
29
+ And a file named "features/basic.feature" with:
30
+ """
31
+ Feature:
32
+ Scenario:
33
+ Given a step passes
34
+ When a step passes
35
+ Then a step passes
36
+ """
37
+
38
+ Scenario: Show step locations
39
+ When I run "behave -c -f pretty --no-timings features/basic.feature"
40
+ Then it should pass
41
+ And the command output should contain:
42
+ """
43
+ Feature: # features/basic.feature:1
44
+ Scenario: # features/basic.feature:2
45
+ Given a step passes # features/steps/steps.py:3
46
+ When a step passes # features/steps/steps.py:7
47
+ Then a step passes # features/steps/steps.py:11
48
+ """
49
+ And the command output should not contain "# <string>:"
@@ -0,0 +1,138 @@
1
+ @issue
2
+ Feature: Issue #81: Allow defining steps in a separate library
3
+
4
+ . The current design forces steps.py to be in a particular folder.
5
+ . This does not allow to reuse a common library of BDD steps across
6
+ . multiple software projects in a company.
7
+ . It would be great if one could define a separate lib with common steps
8
+ . (e.g. steps4mycompany.py)
9
+
10
+
11
+ Background: Test Setup
12
+ Given a new working directory
13
+ And an empty file named "step_library42/__init__.py"
14
+ And a file named "step_library42/alice_steps.py" with:
15
+ """
16
+ # -- ALICE-STEPS: Anonymous step names.
17
+ from behave import given, when, then
18
+
19
+ @given(u'I use the step library "{library}"')
20
+ def step(context, library):
21
+ pass
22
+
23
+ @when(u'I use steps from this step library')
24
+ def step(context):
25
+ pass
26
+
27
+ @then(u'these steps are executed')
28
+ def step(context):
29
+ pass
30
+ """
31
+ And a file named "features/use_step_library.feature" with:
32
+ """
33
+ Feature:
34
+ Scenario:
35
+ Given I use the step library "alice"
36
+ When I use steps from this step library
37
+ Then these steps are executed
38
+ """
39
+
40
+ Scenario: Proof of Concept
41
+ Given a file named "features/steps/use_step_libs.py" with:
42
+ """
43
+ from step_library42.alice_steps import *
44
+ """
45
+ When I run "behave --no-timings -f plain features/use_step_library.feature"
46
+ Then it should pass with:
47
+ """
48
+ 1 scenario passed, 0 failed, 0 skipped
49
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
50
+ """
51
+ And the command output should contain:
52
+ """
53
+ Feature:
54
+ Scenario:
55
+ Given I use the step library "alice" ... passed
56
+ When I use steps from this step library ... passed
57
+ Then these steps are executed ... passed
58
+ """
59
+
60
+ Scenario: With --format=pretty
61
+ Given a file named "features/steps/use_step_libs.py" with:
62
+ """
63
+ from step_library42.alice_steps import *
64
+ """
65
+ When I run "behave -c -f pretty features/use_step_library.feature"
66
+ Then it should pass with:
67
+ """
68
+ 1 scenario passed, 0 failed, 0 skipped
69
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
70
+ """
71
+ And the command output should contain:
72
+ """
73
+ Feature: # features/use_step_library.feature:1
74
+ Scenario: # features/use_step_library.feature:2
75
+ Given I use the step library "alice" # step_library42/alice_steps.py:4
76
+ When I use steps from this step library # step_library42/alice_steps.py:8
77
+ Then these steps are executed # step_library42/alice_steps.py:12
78
+ """
79
+
80
+ Scenario: Selective step import from step library
81
+ Given a file named "step_library42/bob_steps.py" with:
82
+ """
83
+ # -- BOB-STEPS: Explicit step function names (otherwise same as alice).
84
+ from behave import given, when, then
85
+
86
+ @given(u'I use the step library "{library}"')
87
+ def given_I_use_the_step_library(context, library):
88
+ pass
89
+
90
+ @when(u'I use steps from this step library')
91
+ def when_I_use_steps_from_this_step_library(context):
92
+ pass
93
+
94
+ @then(u'these steps are executed')
95
+ def then_these_steps_are_executed(context):
96
+ pass
97
+ """
98
+ And a file named "features/steps/use_step_libs.py" with:
99
+ """
100
+ from step_library42.bob_steps import given_I_use_the_step_library
101
+ from step_library42.bob_steps import when_I_use_steps_from_this_step_library
102
+ from step_library42.bob_steps import then_these_steps_are_executed
103
+ """
104
+ When I run "behave -c -f pretty features/use_step_library.feature"
105
+ Then it should pass with:
106
+ """
107
+ 1 scenario passed, 0 failed, 0 skipped
108
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
109
+ """
110
+ And the command output should contain:
111
+ """
112
+ Feature: # features/use_step_library.feature:1
113
+ Scenario: # features/use_step_library.feature:2
114
+ Given I use the step library "alice" # step_library42/bob_steps.py:4
115
+ When I use steps from this step library # step_library42/bob_steps.py:8
116
+ Then these steps are executed # step_library42/bob_steps.py:12
117
+ """
118
+
119
+ Scenario: Import step library in "environment.py"
120
+ Given a file named "features/environment.py" with:
121
+ """
122
+ from step_library42.alice_steps import *
123
+ """
124
+ And an empty file named "features/steps/__init__.py"
125
+ When I run "behave -c -f pretty features/use_step_library.feature"
126
+ Then it should pass with:
127
+ """
128
+ 1 scenario passed, 0 failed, 0 skipped
129
+ 3 steps passed, 0 failed, 0 skipped, 0 undefined
130
+ """
131
+ And the command output should contain:
132
+ """
133
+ Feature: # features/use_step_library.feature:1
134
+ Scenario: # features/use_step_library.feature:2
135
+ Given I use the step library "alice" # step_library42/alice_steps.py:4
136
+ When I use steps from this step library # step_library42/alice_steps.py:8
137
+ Then these steps are executed # step_library42/alice_steps.py:12
138
+ """