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.
- checksums.yaml +7 -0
- data/.cane +0 -0
- data/.gitignore +17 -0
- data/.tailor +4 -0
- data/.travis.yml +11 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +3 -0
- data/LICENSE +15 -0
- data/README.md +41 -0
- data/Rakefile +68 -0
- data/busser-behave.gemspec +30 -0
- data/features/plugin_install_command.feature +11 -0
- data/features/plugin_list_command.feature +8 -0
- data/features/support/env.rb +13 -0
- data/features/test_command.feature +31 -0
- data/lib/busser/behave/version.rb +26 -0
- data/lib/busser/runner_plugin/behave.rb +37 -0
- data/vendor/behave/CHANGES.rst +483 -0
- data/vendor/behave/LICENSE +23 -0
- data/vendor/behave/MANIFEST.in +37 -0
- data/vendor/behave/PROJECT_INFO.rst +21 -0
- data/vendor/behave/README.rst +112 -0
- data/vendor/behave/VERSION.txt +1 -0
- data/vendor/behave/behave.ini +22 -0
- data/vendor/behave/behave/__init__.py +30 -0
- data/vendor/behave/behave/__main__.py +187 -0
- data/vendor/behave/behave/_stepimport.py +185 -0
- data/vendor/behave/behave/_types.py +134 -0
- data/vendor/behave/behave/api/__init__.py +7 -0
- data/vendor/behave/behave/api/async_step.py +283 -0
- data/vendor/behave/behave/capture.py +227 -0
- data/vendor/behave/behave/compat/__init__.py +5 -0
- data/vendor/behave/behave/compat/collections.py +20 -0
- data/vendor/behave/behave/configuration.py +788 -0
- data/vendor/behave/behave/contrib/__init__.py +0 -0
- data/vendor/behave/behave/contrib/scenario_autoretry.py +73 -0
- data/vendor/behave/behave/formatter/__init__.py +12 -0
- data/vendor/behave/behave/formatter/_builtins.py +39 -0
- data/vendor/behave/behave/formatter/_registry.py +135 -0
- data/vendor/behave/behave/formatter/ansi_escapes.py +91 -0
- data/vendor/behave/behave/formatter/base.py +200 -0
- data/vendor/behave/behave/formatter/formatters.py +57 -0
- data/vendor/behave/behave/formatter/json.py +253 -0
- data/vendor/behave/behave/formatter/null.py +12 -0
- data/vendor/behave/behave/formatter/plain.py +158 -0
- data/vendor/behave/behave/formatter/pretty.py +351 -0
- data/vendor/behave/behave/formatter/progress.py +287 -0
- data/vendor/behave/behave/formatter/rerun.py +114 -0
- data/vendor/behave/behave/formatter/sphinx_steps.py +372 -0
- data/vendor/behave/behave/formatter/sphinx_util.py +118 -0
- data/vendor/behave/behave/formatter/steps.py +497 -0
- data/vendor/behave/behave/formatter/tags.py +178 -0
- data/vendor/behave/behave/i18n.py +614 -0
- data/vendor/behave/behave/importer.py +102 -0
- data/vendor/behave/behave/json_parser.py +264 -0
- data/vendor/behave/behave/log_capture.py +233 -0
- data/vendor/behave/behave/matchers.py +402 -0
- data/vendor/behave/behave/model.py +1737 -0
- data/vendor/behave/behave/model_core.py +416 -0
- data/vendor/behave/behave/model_describe.py +105 -0
- data/vendor/behave/behave/parser.py +615 -0
- data/vendor/behave/behave/reporter/__init__.py +0 -0
- data/vendor/behave/behave/reporter/base.py +45 -0
- data/vendor/behave/behave/reporter/junit.py +473 -0
- data/vendor/behave/behave/reporter/summary.py +94 -0
- data/vendor/behave/behave/runner.py +753 -0
- data/vendor/behave/behave/runner_util.py +417 -0
- data/vendor/behave/behave/step_registry.py +112 -0
- data/vendor/behave/behave/tag_expression.py +111 -0
- data/vendor/behave/behave/tag_matcher.py +465 -0
- data/vendor/behave/behave/textutil.py +137 -0
- data/vendor/behave/behave/userdata.py +130 -0
- data/vendor/behave/behave4cmd0/__all_steps__.py +12 -0
- data/vendor/behave/behave4cmd0/__init__.py +5 -0
- data/vendor/behave/behave4cmd0/__setup.py +11 -0
- data/vendor/behave/behave4cmd0/command_shell.py +216 -0
- data/vendor/behave/behave4cmd0/command_shell_proc.py +256 -0
- data/vendor/behave/behave4cmd0/command_steps.py +532 -0
- data/vendor/behave/behave4cmd0/command_util.py +147 -0
- data/vendor/behave/behave4cmd0/failing_steps.py +49 -0
- data/vendor/behave/behave4cmd0/log/__init__.py +1 -0
- data/vendor/behave/behave4cmd0/log/steps.py +395 -0
- data/vendor/behave/behave4cmd0/note_steps.py +29 -0
- data/vendor/behave/behave4cmd0/passing_steps.py +36 -0
- data/vendor/behave/behave4cmd0/pathutil.py +146 -0
- data/vendor/behave/behave4cmd0/setup_command_shell.py +24 -0
- data/vendor/behave/behave4cmd0/textutil.py +304 -0
- data/vendor/behave/bin/behave +44 -0
- data/vendor/behave/bin/behave.cmd +10 -0
- data/vendor/behave/bin/behave.junit_filter.py +85 -0
- data/vendor/behave/bin/behave.step_durations.py +163 -0
- data/vendor/behave/bin/behave2cucumber_json.py +63 -0
- data/vendor/behave/bin/behave_cmd.py +44 -0
- data/vendor/behave/bin/convert_i18n_yaml.py +77 -0
- data/vendor/behave/bin/explore_platform_encoding.py +24 -0
- data/vendor/behave/bin/i18n.yml +621 -0
- data/vendor/behave/bin/invoke +8 -0
- data/vendor/behave/bin/invoke.cmd +9 -0
- data/vendor/behave/bin/json.format.py +167 -0
- data/vendor/behave/bin/jsonschema_validate.py +122 -0
- data/vendor/behave/bin/make_localpi.py +279 -0
- data/vendor/behave/bin/project_bootstrap.sh +30 -0
- data/vendor/behave/bin/toxcmd.py +270 -0
- data/vendor/behave/bin/toxcmd3.py +270 -0
- data/vendor/behave/conftest.py +27 -0
- data/vendor/behave/docs/Makefile +154 -0
- data/vendor/behave/docs/_static/agogo.css +501 -0
- data/vendor/behave/docs/_static/behave_logo.png +0 -0
- data/vendor/behave/docs/_static/behave_logo1.png +0 -0
- data/vendor/behave/docs/_static/behave_logo2.png +0 -0
- data/vendor/behave/docs/_static/behave_logo3.png +0 -0
- data/vendor/behave/docs/_themes/LICENSE +45 -0
- data/vendor/behave/docs/_themes/kr/layout.html +17 -0
- data/vendor/behave/docs/_themes/kr/relations.html +19 -0
- data/vendor/behave/docs/_themes/kr/static/flasky.css_t +480 -0
- data/vendor/behave/docs/_themes/kr/static/small_flask.css +90 -0
- data/vendor/behave/docs/_themes/kr/theme.conf +7 -0
- data/vendor/behave/docs/_themes/kr_small/layout.html +22 -0
- data/vendor/behave/docs/_themes/kr_small/static/flasky.css_t +287 -0
- data/vendor/behave/docs/_themes/kr_small/theme.conf +10 -0
- data/vendor/behave/docs/api.rst +408 -0
- data/vendor/behave/docs/appendix.rst +19 -0
- data/vendor/behave/docs/behave.rst +640 -0
- data/vendor/behave/docs/behave.rst-template +86 -0
- data/vendor/behave/docs/behave_ecosystem.rst +81 -0
- data/vendor/behave/docs/comparison.rst +85 -0
- data/vendor/behave/docs/conf.py +293 -0
- data/vendor/behave/docs/context_attributes.rst +66 -0
- data/vendor/behave/docs/django.rst +192 -0
- data/vendor/behave/docs/formatters.rst +61 -0
- data/vendor/behave/docs/gherkin.rst +673 -0
- data/vendor/behave/docs/index.rst +57 -0
- data/vendor/behave/docs/install.rst +60 -0
- data/vendor/behave/docs/more_info.rst +184 -0
- data/vendor/behave/docs/new_and_noteworthy.rst +18 -0
- data/vendor/behave/docs/new_and_noteworthy_v1.2.4.rst +11 -0
- data/vendor/behave/docs/new_and_noteworthy_v1.2.5.rst +814 -0
- data/vendor/behave/docs/new_and_noteworthy_v1.2.6.rst +255 -0
- data/vendor/behave/docs/parse_builtin_types.rst +59 -0
- data/vendor/behave/docs/philosophy.rst +235 -0
- data/vendor/behave/docs/regular_expressions.rst +71 -0
- data/vendor/behave/docs/related.rst +14 -0
- data/vendor/behave/docs/test_domains.rst +62 -0
- data/vendor/behave/docs/tutorial.rst +636 -0
- data/vendor/behave/docs/update_behave_rst.py +100 -0
- data/vendor/behave/etc/json/behave.json-schema +172 -0
- data/vendor/behave/etc/junit.xml/behave_junit.xsd +103 -0
- data/vendor/behave/etc/junit.xml/junit-4.xsd +92 -0
- data/vendor/behave/examples/async_step/README.txt +8 -0
- data/vendor/behave/examples/async_step/behave.ini +14 -0
- data/vendor/behave/examples/async_step/features/async_dispatch.feature +8 -0
- data/vendor/behave/examples/async_step/features/async_run.feature +6 -0
- data/vendor/behave/examples/async_step/features/environment.py +28 -0
- data/vendor/behave/examples/async_step/features/steps/async_dispatch_steps.py +26 -0
- data/vendor/behave/examples/async_step/features/steps/async_steps34.py +10 -0
- data/vendor/behave/examples/async_step/features/steps/async_steps35.py +10 -0
- data/vendor/behave/examples/async_step/testrun_example.async_dispatch.txt +11 -0
- data/vendor/behave/examples/async_step/testrun_example.async_run.txt +9 -0
- data/vendor/behave/examples/env_vars/README.rst +26 -0
- data/vendor/behave/examples/env_vars/behave.ini +15 -0
- data/vendor/behave/examples/env_vars/behave_run.output_example.txt +12 -0
- data/vendor/behave/examples/env_vars/features/env_var.feature +6 -0
- data/vendor/behave/examples/env_vars/features/steps/env_var_steps.py +38 -0
- data/vendor/behave/features/README.txt +12 -0
- data/vendor/behave/features/background.feature +392 -0
- data/vendor/behave/features/capture_stderr.feature +172 -0
- data/vendor/behave/features/capture_stdout.feature +125 -0
- data/vendor/behave/features/cmdline.lang_list.feature +33 -0
- data/vendor/behave/features/configuration.default_paths.feature +116 -0
- data/vendor/behave/features/context.global_params.feature +35 -0
- data/vendor/behave/features/context.local_params.feature +17 -0
- data/vendor/behave/features/directory_layout.advanced.feature +147 -0
- data/vendor/behave/features/directory_layout.basic.feature +75 -0
- data/vendor/behave/features/directory_layout.basic2.feature +87 -0
- data/vendor/behave/features/environment.py +53 -0
- data/vendor/behave/features/exploratory_testing.with_table.feature +141 -0
- data/vendor/behave/features/feature.description.feature +0 -0
- data/vendor/behave/features/feature.exclude_from_run.feature +96 -0
- data/vendor/behave/features/formatter.help.feature +30 -0
- data/vendor/behave/features/formatter.json.feature +420 -0
- data/vendor/behave/features/formatter.progress3.feature +235 -0
- data/vendor/behave/features/formatter.rerun.feature +296 -0
- data/vendor/behave/features/formatter.steps.feature +181 -0
- data/vendor/behave/features/formatter.steps_catalog.feature +100 -0
- data/vendor/behave/features/formatter.steps_doc.feature +140 -0
- data/vendor/behave/features/formatter.steps_usage.feature +404 -0
- data/vendor/behave/features/formatter.tags.feature +134 -0
- data/vendor/behave/features/formatter.tags_location.feature +183 -0
- data/vendor/behave/features/formatter.user_defined.feature +196 -0
- data/vendor/behave/features/i18n.unicode_problems.feature +445 -0
- data/vendor/behave/features/logcapture.clear_handlers.feature +114 -0
- data/vendor/behave/features/logcapture.feature +188 -0
- data/vendor/behave/features/logcapture.filter.feature +130 -0
- data/vendor/behave/features/logging.no_capture.feature +99 -0
- data/vendor/behave/features/logging.setup_format.feature +157 -0
- data/vendor/behave/features/logging.setup_level.feature +168 -0
- data/vendor/behave/features/logging.setup_with_configfile.feature +137 -0
- data/vendor/behave/features/parser.background.sad_cases.feature +129 -0
- data/vendor/behave/features/parser.feature.sad_cases.feature +144 -0
- data/vendor/behave/features/runner.abort_by_user.feature +305 -0
- data/vendor/behave/features/runner.continue_after_failed_step.feature +136 -0
- data/vendor/behave/features/runner.default_format.feature +175 -0
- data/vendor/behave/features/runner.dry_run.feature +184 -0
- data/vendor/behave/features/runner.feature_listfile.feature +223 -0
- data/vendor/behave/features/runner.hook_errors.feature +382 -0
- data/vendor/behave/features/runner.multiple_formatters.feature +285 -0
- data/vendor/behave/features/runner.scenario_autoretry.feature +131 -0
- data/vendor/behave/features/runner.select_files_by_regexp.example.feature +71 -0
- data/vendor/behave/features/runner.select_files_by_regexp.feature +84 -0
- data/vendor/behave/features/runner.select_scenarios_by_file_location.feature +403 -0
- data/vendor/behave/features/runner.select_scenarios_by_name.feature +289 -0
- data/vendor/behave/features/runner.select_scenarios_by_tag.feature +225 -0
- data/vendor/behave/features/runner.stop_after_failure.feature +122 -0
- data/vendor/behave/features/runner.tag_logic.feature +67 -0
- data/vendor/behave/features/runner.unknown_formatter.feature +23 -0
- data/vendor/behave/features/runner.use_stage_implementations.feature +126 -0
- data/vendor/behave/features/scenario.description.feature +171 -0
- data/vendor/behave/features/scenario.exclude_from_run.feature +217 -0
- data/vendor/behave/features/scenario_outline.basics.feature +100 -0
- data/vendor/behave/features/scenario_outline.improved.feature +177 -0
- data/vendor/behave/features/scenario_outline.name_annotation.feature +157 -0
- data/vendor/behave/features/scenario_outline.parametrized.feature +401 -0
- data/vendor/behave/features/scenario_outline.tagged_examples.feature +118 -0
- data/vendor/behave/features/step.async_steps.feature +225 -0
- data/vendor/behave/features/step.duplicated_step.feature +106 -0
- data/vendor/behave/features/step.execute_steps.feature +59 -0
- data/vendor/behave/features/step.execute_steps.with_table.feature +65 -0
- data/vendor/behave/features/step.import_other_step_module.feature +103 -0
- data/vendor/behave/features/step.pending_steps.feature +128 -0
- data/vendor/behave/features/step.undefined_steps.feature +307 -0
- data/vendor/behave/features/step.use_step_library.feature +44 -0
- data/vendor/behave/features/step_dialect.generic_steps.feature +189 -0
- data/vendor/behave/features/step_dialect.given_when_then.feature +89 -0
- data/vendor/behave/features/step_param.builtin_types.with_float.feature +239 -0
- data/vendor/behave/features/step_param.builtin_types.with_integer.feature +305 -0
- data/vendor/behave/features/step_param.custom_types.feature +134 -0
- data/vendor/behave/features/steps/behave_active_tags_steps.py +86 -0
- data/vendor/behave/features/steps/behave_context_steps.py +67 -0
- data/vendor/behave/features/steps/behave_model_tag_logic_steps.py +105 -0
- data/vendor/behave/features/steps/behave_model_util.py +105 -0
- data/vendor/behave/features/steps/behave_select_files_steps.py +83 -0
- data/vendor/behave/features/steps/behave_tag_expression_steps.py +166 -0
- data/vendor/behave/features/steps/behave_undefined_steps.py +101 -0
- data/vendor/behave/features/steps/use_steplib_behave4cmd.py +12 -0
- data/vendor/behave/features/summary.undefined_steps.feature +114 -0
- data/vendor/behave/features/tags.active_tags.feature +385 -0
- data/vendor/behave/features/tags.default_tags.feature +104 -0
- data/vendor/behave/features/tags.tag_expression.feature +105 -0
- data/vendor/behave/features/userdata.feature +331 -0
- data/vendor/behave/invoke.yaml +21 -0
- data/vendor/behave/issue.features/README.txt +17 -0
- data/vendor/behave/issue.features/environment.py +97 -0
- data/vendor/behave/issue.features/issue0030.feature +21 -0
- data/vendor/behave/issue.features/issue0031.feature +16 -0
- data/vendor/behave/issue.features/issue0032.feature +28 -0
- data/vendor/behave/issue.features/issue0035.feature +74 -0
- data/vendor/behave/issue.features/issue0040.feature +154 -0
- data/vendor/behave/issue.features/issue0041.feature +135 -0
- data/vendor/behave/issue.features/issue0042.feature +230 -0
- data/vendor/behave/issue.features/issue0044.feature +51 -0
- data/vendor/behave/issue.features/issue0046.feature +77 -0
- data/vendor/behave/issue.features/issue0052.feature +66 -0
- data/vendor/behave/issue.features/issue0059.feature +29 -0
- data/vendor/behave/issue.features/issue0063.feature +102 -0
- data/vendor/behave/issue.features/issue0064.feature +97 -0
- data/vendor/behave/issue.features/issue0065.feature +18 -0
- data/vendor/behave/issue.features/issue0066.feature +80 -0
- data/vendor/behave/issue.features/issue0067.feature +90 -0
- data/vendor/behave/issue.features/issue0069.feature +64 -0
- data/vendor/behave/issue.features/issue0072.feature +32 -0
- data/vendor/behave/issue.features/issue0073.feature +228 -0
- data/vendor/behave/issue.features/issue0075.feature +18 -0
- data/vendor/behave/issue.features/issue0077.feature +89 -0
- data/vendor/behave/issue.features/issue0080.feature +49 -0
- data/vendor/behave/issue.features/issue0081.feature +138 -0
- data/vendor/behave/issue.features/issue0083.feature +69 -0
- data/vendor/behave/issue.features/issue0084.feature +69 -0
- data/vendor/behave/issue.features/issue0085.feature +119 -0
- data/vendor/behave/issue.features/issue0092.feature +66 -0
- data/vendor/behave/issue.features/issue0096.feature +173 -0
- data/vendor/behave/issue.features/issue0099.feature +130 -0
- data/vendor/behave/issue.features/issue0109.feature +60 -0
- data/vendor/behave/issue.features/issue0111.feature +53 -0
- data/vendor/behave/issue.features/issue0112.feature +64 -0
- data/vendor/behave/issue.features/issue0114.feature +118 -0
- data/vendor/behave/issue.features/issue0116.feature +71 -0
- data/vendor/behave/issue.features/issue0125.feature +49 -0
- data/vendor/behave/issue.features/issue0127.feature +64 -0
- data/vendor/behave/issue.features/issue0139.feature +67 -0
- data/vendor/behave/issue.features/issue0142.feature +37 -0
- data/vendor/behave/issue.features/issue0143.feature +54 -0
- data/vendor/behave/issue.features/issue0145.feature +63 -0
- data/vendor/behave/issue.features/issue0148.feature +105 -0
- data/vendor/behave/issue.features/issue0152.feature +52 -0
- data/vendor/behave/issue.features/issue0159.feature +74 -0
- data/vendor/behave/issue.features/issue0162.feature +86 -0
- data/vendor/behave/issue.features/issue0171.feature +16 -0
- data/vendor/behave/issue.features/issue0172.feature +51 -0
- data/vendor/behave/issue.features/issue0175.feature +91 -0
- data/vendor/behave/issue.features/issue0177.feature +40 -0
- data/vendor/behave/issue.features/issue0181.feature +36 -0
- data/vendor/behave/issue.features/issue0184.feature +144 -0
- data/vendor/behave/issue.features/issue0186.feature +12 -0
- data/vendor/behave/issue.features/issue0188.feature +60 -0
- data/vendor/behave/issue.features/issue0191.feature +178 -0
- data/vendor/behave/issue.features/issue0194.feature +215 -0
- data/vendor/behave/issue.features/issue0197.feature +11 -0
- data/vendor/behave/issue.features/issue0216.feature +129 -0
- data/vendor/behave/issue.features/issue0226.feature +51 -0
- data/vendor/behave/issue.features/issue0228.feature +41 -0
- data/vendor/behave/issue.features/issue0230.feature +46 -0
- data/vendor/behave/issue.features/issue0231.feature +77 -0
- data/vendor/behave/issue.features/issue0238.feature +52 -0
- data/vendor/behave/issue.features/issue0251.feature +15 -0
- data/vendor/behave/issue.features/issue0280.feature +118 -0
- data/vendor/behave/issue.features/issue0288.feature +95 -0
- data/vendor/behave/issue.features/issue0300.feature +49 -0
- data/vendor/behave/issue.features/issue0302.feature +91 -0
- data/vendor/behave/issue.features/issue0309.feature +52 -0
- data/vendor/behave/issue.features/issue0330.feature +124 -0
- data/vendor/behave/issue.features/issue0349.feature +9 -0
- data/vendor/behave/issue.features/issue0361.feature +79 -0
- data/vendor/behave/issue.features/issue0383.feature +76 -0
- data/vendor/behave/issue.features/issue0384.feature +103 -0
- data/vendor/behave/issue.features/issue0385.feature +109 -0
- data/vendor/behave/issue.features/issue0424.feature +66 -0
- data/vendor/behave/issue.features/issue0446.feature +116 -0
- data/vendor/behave/issue.features/issue0449.feature +42 -0
- data/vendor/behave/issue.features/issue0453.feature +42 -0
- data/vendor/behave/issue.features/issue0457.feature +65 -0
- data/vendor/behave/issue.features/issue0462.feature +38 -0
- data/vendor/behave/issue.features/issue0476.feature +39 -0
- data/vendor/behave/issue.features/issue0487.feature +92 -0
- data/vendor/behave/issue.features/issue0506.feature +77 -0
- data/vendor/behave/issue.features/issue0510.feature +51 -0
- data/vendor/behave/issue.features/requirements.txt +12 -0
- data/vendor/behave/issue.features/steps/ansi_steps.py +20 -0
- data/vendor/behave/issue.features/steps/behave_hooks_steps.py +10 -0
- data/vendor/behave/issue.features/steps/use_steplib_behave4cmd.py +13 -0
- data/vendor/behave/more.features/formatter.json.validate_output.feature +37 -0
- data/vendor/behave/more.features/steps/tutorial_steps.py +16 -0
- data/vendor/behave/more.features/steps/use_steplib_behave4cmd.py +7 -0
- data/vendor/behave/more.features/tutorial.feature +6 -0
- data/vendor/behave/py.requirements/README.txt +5 -0
- data/vendor/behave/py.requirements/all.txt +16 -0
- data/vendor/behave/py.requirements/basic.txt +21 -0
- data/vendor/behave/py.requirements/develop.txt +28 -0
- data/vendor/behave/py.requirements/docs.txt +6 -0
- data/vendor/behave/py.requirements/json.txt +7 -0
- data/vendor/behave/py.requirements/more_py26.txt +8 -0
- data/vendor/behave/py.requirements/testing.txt +10 -0
- data/vendor/behave/pytest.ini +24 -0
- data/vendor/behave/setup.cfg +29 -0
- data/vendor/behave/setup.py +118 -0
- data/vendor/behave/setuptools_behave.py +130 -0
- data/vendor/behave/tasks/__behave.py +45 -0
- data/vendor/behave/tasks/__init__.py +55 -0
- data/vendor/behave/tasks/__main__.py +70 -0
- data/vendor/behave/tasks/_setup.py +135 -0
- data/vendor/behave/tasks/_vendor/README.rst +35 -0
- data/vendor/behave/tasks/_vendor/invoke.zip +0 -0
- data/vendor/behave/tasks/_vendor/path.py +1725 -0
- data/vendor/behave/tasks/_vendor/pathlib.py +1280 -0
- data/vendor/behave/tasks/_vendor/six.py +868 -0
- data/vendor/behave/tasks/clean.py +246 -0
- data/vendor/behave/tasks/docs.py +97 -0
- data/vendor/behave/tasks/requirements.txt +17 -0
- data/vendor/behave/tasks/test.py +192 -0
- data/vendor/behave/test/__init__.py +0 -0
- data/vendor/behave/test/_importer_candidate.py +3 -0
- data/vendor/behave/test/reporters/__init__.py +0 -0
- data/vendor/behave/test/reporters/test_summary.py +240 -0
- data/vendor/behave/test/test_ansi_escapes.py +73 -0
- data/vendor/behave/test/test_configuration.py +172 -0
- data/vendor/behave/test/test_formatter.py +265 -0
- data/vendor/behave/test/test_formatter_progress.py +39 -0
- data/vendor/behave/test/test_formatter_rerun.py +97 -0
- data/vendor/behave/test/test_formatter_tags.py +57 -0
- data/vendor/behave/test/test_importer.py +151 -0
- data/vendor/behave/test/test_log_capture.py +29 -0
- data/vendor/behave/test/test_matchers.py +236 -0
- data/vendor/behave/test/test_model.py +871 -0
- data/vendor/behave/test/test_parser.py +1590 -0
- data/vendor/behave/test/test_runner.py +1074 -0
- data/vendor/behave/test/test_step_registry.py +96 -0
- data/vendor/behave/test/test_tag_expression.py +506 -0
- data/vendor/behave/test/test_tag_expression2.py +462 -0
- data/vendor/behave/test/test_tag_matcher.py +729 -0
- data/vendor/behave/test/test_userdata.py +184 -0
- data/vendor/behave/tests/README.txt +12 -0
- data/vendor/behave/tests/__init__.py +0 -0
- data/vendor/behave/tests/api/__ONLY_PY34_or_newer.txt +0 -0
- data/vendor/behave/tests/api/__init__.py +0 -0
- data/vendor/behave/tests/api/_test_async_step34.py +130 -0
- data/vendor/behave/tests/api/_test_async_step35.py +75 -0
- data/vendor/behave/tests/api/test_async_step.py +18 -0
- data/vendor/behave/tests/api/testing_support.py +94 -0
- data/vendor/behave/tests/api/testing_support_async.py +21 -0
- data/vendor/behave/tests/issues/test_issue0336.py +66 -0
- data/vendor/behave/tests/issues/test_issue0449.py +55 -0
- data/vendor/behave/tests/issues/test_issue0453.py +62 -0
- data/vendor/behave/tests/issues/test_issue0458.py +54 -0
- data/vendor/behave/tests/issues/test_issue0495.py +65 -0
- data/vendor/behave/tests/unit/__init__.py +0 -0
- data/vendor/behave/tests/unit/test_behave4cmd_command_shell_proc.py +135 -0
- data/vendor/behave/tests/unit/test_capture.py +280 -0
- data/vendor/behave/tests/unit/test_model_core.py +56 -0
- data/vendor/behave/tests/unit/test_textutil.py +267 -0
- data/vendor/behave/tools/test-features/background.feature +9 -0
- data/vendor/behave/tools/test-features/environment.py +8 -0
- data/vendor/behave/tools/test-features/french.feature +11 -0
- data/vendor/behave/tools/test-features/outline.feature +39 -0
- data/vendor/behave/tools/test-features/parse.feature +10 -0
- data/vendor/behave/tools/test-features/step-data.feature +60 -0
- data/vendor/behave/tools/test-features/steps/steps.py +120 -0
- data/vendor/behave/tools/test-features/tags.feature +18 -0
- data/vendor/behave/tox.ini +159 -0
- metadata +562 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #186: ScenarioOutline uses wrong return value when if fails
|
|
3
|
+
|
|
4
|
+
ScenarioOutline returns encountered a failure only if the last scenario failed.
|
|
5
|
+
Failures in earlier examples return the wrong result.
|
|
6
|
+
Ensure that ScenarioOutline run-logic behaves as expected.
|
|
7
|
+
|
|
8
|
+
@reuse.colocated_test
|
|
9
|
+
Scenario: Reuse existing test
|
|
10
|
+
Given I use the current directory as working directory
|
|
11
|
+
When I run "behave -f plain features/scenario_outline.basics.feature"
|
|
12
|
+
Then it should pass
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #188: Better diagnostics if nested step is undefined
|
|
3
|
+
|
|
4
|
+
. Currently if nested step has no match, it's shown like this:
|
|
5
|
+
.
|
|
6
|
+
. Assertion Failed: Sub-step failed: When I do strange thign
|
|
7
|
+
. Substep info: None
|
|
8
|
+
.
|
|
9
|
+
. Took some time to find that typo.
|
|
10
|
+
. The suggestion is to fill substep error_message with at least "No match for step"
|
|
11
|
+
. so it would become:
|
|
12
|
+
.
|
|
13
|
+
. Assertion Failed: Sub-step failed: When I do strange thign
|
|
14
|
+
. Substep info: No match for step
|
|
15
|
+
.
|
|
16
|
+
. IMPLEMENTATION NOTE:
|
|
17
|
+
. A slightly different output is provided:
|
|
18
|
+
.
|
|
19
|
+
. Assertion Failed: UNDEFINED SUB-STEP: When I do strange thign
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
Scenario: Nested steps contain an undefined step
|
|
23
|
+
Given a new working directory
|
|
24
|
+
And a file named "features/steps/steps.py" with:
|
|
25
|
+
"""
|
|
26
|
+
from behave import step
|
|
27
|
+
|
|
28
|
+
@step('{word:w} step passes')
|
|
29
|
+
def step_passes(context, word):
|
|
30
|
+
pass
|
|
31
|
+
|
|
32
|
+
@then('a good diagnostic message is shown')
|
|
33
|
+
def step_good_diagnostic_message_is_shown(context):
|
|
34
|
+
pass
|
|
35
|
+
|
|
36
|
+
@step('I execute nested steps with an undefined step')
|
|
37
|
+
def step_passes(context):
|
|
38
|
+
context.execute_steps(u'''
|
|
39
|
+
Given another step passes
|
|
40
|
+
When an undefined, nested step is executed
|
|
41
|
+
Then third step passes
|
|
42
|
+
''')
|
|
43
|
+
"""
|
|
44
|
+
And a file named "features/example.execute_nested_undefined_step.feature" with:
|
|
45
|
+
"""
|
|
46
|
+
Feature:
|
|
47
|
+
Scenario:
|
|
48
|
+
Given a step passes
|
|
49
|
+
When I execute nested steps with an undefined step
|
|
50
|
+
Then a good diagnostic message is shown
|
|
51
|
+
"""
|
|
52
|
+
When I run "behave -f plain -T features/example.execute_nested_undefined_step.feature"
|
|
53
|
+
Then it should fail with:
|
|
54
|
+
"""
|
|
55
|
+
Scenario:
|
|
56
|
+
Given a step passes ... passed
|
|
57
|
+
When I execute nested steps with an undefined step ... failed
|
|
58
|
+
Assertion Failed: UNDEFINED SUB-STEP: When an undefined, nested step is executed
|
|
59
|
+
"""
|
|
60
|
+
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #191 Using context.execute_steps() may change context.table/.text
|
|
3
|
+
|
|
4
|
+
. PROBLEM DESCRIPTION:
|
|
5
|
+
. When you execute nested steps via "context.execute_steps()" in a
|
|
6
|
+
. step implementation, the following context attributes of the current step
|
|
7
|
+
. may be modified and may be longer valid:
|
|
8
|
+
. * context.text (multi-line text)
|
|
9
|
+
. * context.table
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@setup
|
|
13
|
+
Scenario: Feature Setup
|
|
14
|
+
Given a new working directory
|
|
15
|
+
And a file named "features/steps/common_steps.py" with:
|
|
16
|
+
"""
|
|
17
|
+
from behave import given, step
|
|
18
|
+
|
|
19
|
+
@step('{word:w} step passes')
|
|
20
|
+
def step_passes(context, word):
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
@given('I define the following nested steps')
|
|
24
|
+
def step_define_nested_steps(context):
|
|
25
|
+
assert context.text is not None, "REQUIRE: text"
|
|
26
|
+
context.nested_steps = context.text
|
|
27
|
+
"""
|
|
28
|
+
And a file named "features/steps/table_steps.py" with:
|
|
29
|
+
"""
|
|
30
|
+
from behave import when, then, step
|
|
31
|
+
|
|
32
|
+
@step('I use another table with')
|
|
33
|
+
def step_use_another_table_with(context):
|
|
34
|
+
assert context.table, "REQUIRE: table"
|
|
35
|
+
context.nested_table = context.table
|
|
36
|
+
|
|
37
|
+
@when('I execute the nested steps and use the table')
|
|
38
|
+
def step_execute_nested_steps_and_use_table(context):
|
|
39
|
+
assert context.table, "REQUIRE: table"
|
|
40
|
+
assert context.nested_steps, "REQUIRE: context.nested_steps"
|
|
41
|
+
context.my_table1 = context.table
|
|
42
|
+
context.execute_steps(context.nested_steps)
|
|
43
|
+
context.my_table2 = context.table
|
|
44
|
+
|
|
45
|
+
@then('the original table is restored after the nested steps are executed')
|
|
46
|
+
def step_table_is_restored(context):
|
|
47
|
+
assert context.my_table1 is not None
|
|
48
|
+
assert context.my_table2 is not None
|
|
49
|
+
assert context.my_table1 is context.my_table2
|
|
50
|
+
"""
|
|
51
|
+
And a file named "features/steps/text_steps.py" with:
|
|
52
|
+
"""
|
|
53
|
+
from behave import when, then, step
|
|
54
|
+
|
|
55
|
+
@step('I use another step with text "{text}"')
|
|
56
|
+
def step_use_another_text_with(context, text):
|
|
57
|
+
assert context.text is None
|
|
58
|
+
context.text = text # -- MODIFY: context.text (emulation)
|
|
59
|
+
|
|
60
|
+
@step('I use another text with')
|
|
61
|
+
def step_use_another_text_with(context):
|
|
62
|
+
assert context.text is not None, "REQUIRE: text"
|
|
63
|
+
context.nested_text = context.text
|
|
64
|
+
|
|
65
|
+
@when('I execute the nested steps and use the text')
|
|
66
|
+
def step_execute_nested_steps_and_use_text(context):
|
|
67
|
+
assert context.text is not None, "REQUIRE: text"
|
|
68
|
+
assert context.nested_steps, "REQUIRE: context.nested_steps"
|
|
69
|
+
context.my_text1 = context.text
|
|
70
|
+
context.execute_steps(context.nested_steps)
|
|
71
|
+
context.my_text2 = context.text
|
|
72
|
+
|
|
73
|
+
@then('the original text is restored after the nested steps are executed')
|
|
74
|
+
def step_text_is_restored(context):
|
|
75
|
+
assert context.my_text1 is not None
|
|
76
|
+
assert context.my_text2 is not None
|
|
77
|
+
assert context.my_text1 is context.my_text2
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
@nested_steps.with_table
|
|
81
|
+
Scenario: After executing simple nested steps the original table is restored
|
|
82
|
+
Given a file named "features/example.nested_simple_steps_and_table.feature" with:
|
|
83
|
+
"""
|
|
84
|
+
Feature:
|
|
85
|
+
Scenario:
|
|
86
|
+
Given I define the following nested steps:
|
|
87
|
+
'''
|
|
88
|
+
Given a step passes
|
|
89
|
+
When another step passes
|
|
90
|
+
'''
|
|
91
|
+
When I execute the nested steps and use the table:
|
|
92
|
+
| Name | Age |
|
|
93
|
+
| Alice | 21 |
|
|
94
|
+
| Bob | 32 |
|
|
95
|
+
Then the original table is restored after the nested steps are executed
|
|
96
|
+
"""
|
|
97
|
+
When I run "behave -f plain -T features/example.nested_simple_steps_and_table.feature"
|
|
98
|
+
Then it should pass with:
|
|
99
|
+
"""
|
|
100
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
101
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
@nested_steps.with_table
|
|
105
|
+
Scenario: After executing nested steps with a table the original table is restored
|
|
106
|
+
Given a file named "features/example.nested_steps_and_table.feature" with:
|
|
107
|
+
"""
|
|
108
|
+
Feature:
|
|
109
|
+
Scenario:
|
|
110
|
+
Given I define the following nested steps:
|
|
111
|
+
'''
|
|
112
|
+
Given I use another table with:
|
|
113
|
+
| Person | Registered |
|
|
114
|
+
| Anton | true |
|
|
115
|
+
| Barby | false |
|
|
116
|
+
'''
|
|
117
|
+
When I execute the nested steps and use the table:
|
|
118
|
+
| Name | Age |
|
|
119
|
+
| Charly | 41 |
|
|
120
|
+
| Doro | 52 |
|
|
121
|
+
Then the original table is restored after the nested steps are executed
|
|
122
|
+
"""
|
|
123
|
+
When I run "behave -f plain -T features/example.nested_steps_and_table.feature"
|
|
124
|
+
Then it should pass with:
|
|
125
|
+
"""
|
|
126
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
127
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
128
|
+
"""
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
@nested_steps.with_text
|
|
132
|
+
Scenario: After executing simple nested steps the original text is restored
|
|
133
|
+
Given a file named "features/example.nested_simple_steps_and_text.feature" with:
|
|
134
|
+
"""
|
|
135
|
+
Feature:
|
|
136
|
+
Scenario:
|
|
137
|
+
Given I define the following nested steps:
|
|
138
|
+
'''
|
|
139
|
+
Given a step passes
|
|
140
|
+
When another step passes
|
|
141
|
+
'''
|
|
142
|
+
When I execute the nested steps and use the text:
|
|
143
|
+
'''
|
|
144
|
+
Lorem ipsum
|
|
145
|
+
Ipsum lorem
|
|
146
|
+
'''
|
|
147
|
+
Then the original text is restored after the nested steps are executed
|
|
148
|
+
"""
|
|
149
|
+
When I run "behave -f plain -T features/example.nested_simple_steps_and_text.feature"
|
|
150
|
+
Then it should pass with:
|
|
151
|
+
"""
|
|
152
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
153
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
@nested_steps.with_text
|
|
157
|
+
Scenario: After executing nested steps with a text the original text is restored
|
|
158
|
+
Given a file named "features/example.nested_steps_and_text.feature" with:
|
|
159
|
+
"""
|
|
160
|
+
Feature:
|
|
161
|
+
Scenario:
|
|
162
|
+
Given I define the following nested steps:
|
|
163
|
+
'''
|
|
164
|
+
Given I use another step with text "Hello Alice"
|
|
165
|
+
'''
|
|
166
|
+
When I execute the nested steps and use the text:
|
|
167
|
+
'''
|
|
168
|
+
Lorem ipsum
|
|
169
|
+
Ipsum lorem
|
|
170
|
+
'''
|
|
171
|
+
Then the original text is restored after the nested steps are executed
|
|
172
|
+
"""
|
|
173
|
+
When I run "behave -f plain -T features/example.nested_steps_and_text.feature"
|
|
174
|
+
Then it should pass with:
|
|
175
|
+
"""
|
|
176
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
177
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
178
|
+
"""
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #194: Nested steps prevent that original stdout/stderr is restored
|
|
3
|
+
|
|
4
|
+
. When nested steps are used,
|
|
5
|
+
. the original stdout/stderr streams are not restored after the scenario.
|
|
6
|
+
. This is caused by starting/stopping capture again while executing nested steps.
|
|
7
|
+
.
|
|
8
|
+
. ENSURE THAT:
|
|
9
|
+
. * Original streams are restored in after_scenario() hook.
|
|
10
|
+
. * Nested steps should not replace existing capture objects.
|
|
11
|
+
|
|
12
|
+
@setup
|
|
13
|
+
Scenario: Feature Setup
|
|
14
|
+
Given a new working directory
|
|
15
|
+
And a file named "behave.ini" with:
|
|
16
|
+
"""
|
|
17
|
+
[behave]
|
|
18
|
+
log_capture = false
|
|
19
|
+
logging_level = INFO
|
|
20
|
+
logging_format = LOG.%(levelname)-8s %(name)s: %(message)s
|
|
21
|
+
"""
|
|
22
|
+
And a file named "features/steps/use_behave4cmd_steps.py" with:
|
|
23
|
+
"""
|
|
24
|
+
import behave4cmd0.passing_steps
|
|
25
|
+
import behave4cmd0.failing_steps
|
|
26
|
+
import behave4cmd0.note_steps
|
|
27
|
+
"""
|
|
28
|
+
And a file named "features/steps/stdout_steps.py" with:
|
|
29
|
+
"""
|
|
30
|
+
from behave import given, when, then, step, matchers
|
|
31
|
+
import parse
|
|
32
|
+
import sys
|
|
33
|
+
|
|
34
|
+
# -- USER-DEFINED DATA TYPES:
|
|
35
|
+
@parse.with_pattern(r"stdout|stderr")
|
|
36
|
+
def parse_stream_name(text):
|
|
37
|
+
assert text in ("stdout", "stderr")
|
|
38
|
+
return text
|
|
39
|
+
|
|
40
|
+
matchers.register_type(StreamName=parse_stream_name)
|
|
41
|
+
|
|
42
|
+
# -- UTILITY FUNCTIONS:
|
|
43
|
+
def write_text_to(stream, text, enforce_newline=True):
|
|
44
|
+
if enforce_newline and not text.endswith("\n"):
|
|
45
|
+
text += "\n"
|
|
46
|
+
stream.write(text)
|
|
47
|
+
|
|
48
|
+
# -- STEP DEFINITIONS:
|
|
49
|
+
@step('I write "{text}" to {stream_name:StreamName}')
|
|
50
|
+
def step_write_text_to_stdxxx(context, text, stream_name):
|
|
51
|
+
stream = getattr(sys, stream_name)
|
|
52
|
+
write_text_to(stream, text)
|
|
53
|
+
|
|
54
|
+
@step('I execute the following steps')
|
|
55
|
+
def step_execute_steps(context):
|
|
56
|
+
assert context.text, "REQUIRE: context.text"
|
|
57
|
+
context.execute_steps(context.text)
|
|
58
|
+
sys.stdout.write("STDOUT:AFTER-EXECUTE-STEPS\n")
|
|
59
|
+
sys.stderr.write("STDERR:AFTER-EXECUTE-STEPS\n")
|
|
60
|
+
"""
|
|
61
|
+
And a file named "features/environment.py" with:
|
|
62
|
+
"""
|
|
63
|
+
import sys
|
|
64
|
+
|
|
65
|
+
stdout_id = 0
|
|
66
|
+
stderr_id = 0
|
|
67
|
+
|
|
68
|
+
def stdout_print(text):
|
|
69
|
+
sys.__stdout__.write(text + "\n")
|
|
70
|
+
|
|
71
|
+
def inspect_stdout(context, scope, statement):
|
|
72
|
+
global stdout_id
|
|
73
|
+
stream_id = id(sys.stdout)
|
|
74
|
+
stream_class = sys.stdout.__class__.__name__
|
|
75
|
+
expected_id = stdout_id
|
|
76
|
+
if stream_id != expected_id:
|
|
77
|
+
name = statement.name
|
|
78
|
+
stdout_print("CHANGED-STDOUT %s:%s: stream.id=%s:%d (was: %d)" % \
|
|
79
|
+
(scope, name, stream_class, stream_id, expected_id))
|
|
80
|
+
stdout_id = stream_id
|
|
81
|
+
|
|
82
|
+
def inspect_stderr(context, scope, statement):
|
|
83
|
+
global stderr_id
|
|
84
|
+
stream_id = id(sys.stderr)
|
|
85
|
+
stream_class = sys.stderr.__class__.__name__
|
|
86
|
+
expected_id = stderr_id
|
|
87
|
+
if stream_id != expected_id:
|
|
88
|
+
name = statement.name
|
|
89
|
+
stdout_print("CHANGED-STDERR %s:%s: stream.id=%s:%d (was: %d)" % \
|
|
90
|
+
(scope, name, stream_class, stream_id, expected_id))
|
|
91
|
+
stderr_id = stream_id
|
|
92
|
+
|
|
93
|
+
def inspect_stdxxx(context, scope, statement):
|
|
94
|
+
inspect_stdout(context, scope, statement)
|
|
95
|
+
inspect_stderr(context, scope, statement)
|
|
96
|
+
|
|
97
|
+
def before_all(context):
|
|
98
|
+
context.config.setup_logging(filename="behave.log")
|
|
99
|
+
|
|
100
|
+
def before_scenario(context, scenario):
|
|
101
|
+
inspect_stdxxx(context, "before_scenario", scenario)
|
|
102
|
+
|
|
103
|
+
def after_scenario(context, scenario):
|
|
104
|
+
inspect_stdxxx(context, "after_scenario", scenario)
|
|
105
|
+
# -- ENSURE: Original streams are restored.
|
|
106
|
+
assert sys.stdout is sys.__stdout__
|
|
107
|
+
assert sys.stderr is sys.__stderr__
|
|
108
|
+
stdout_print("AFTER-SCENARIO %s: Streams are restored." % scenario.name)
|
|
109
|
+
|
|
110
|
+
def before_step(context, step):
|
|
111
|
+
inspect_stdxxx(context, "before_step", step)
|
|
112
|
+
|
|
113
|
+
def after_step(context, step):
|
|
114
|
+
inspect_stdxxx(context, "after_step", step)
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
Scenario: Stdout capture works with nested steps
|
|
118
|
+
Given a file named "features/stdout.failing_with_nested.feature" with
|
|
119
|
+
"""
|
|
120
|
+
Feature:
|
|
121
|
+
Scenario: Failing with nested steps
|
|
122
|
+
Given I write "STDOUT:Hello Alice" to stdout
|
|
123
|
+
When I write "STDOUT:Hello Bob" to stdout
|
|
124
|
+
Then I execute the following steps:
|
|
125
|
+
'''
|
|
126
|
+
* I write "STDOUT:Hello nested.Alice" to stdout
|
|
127
|
+
* I write "STDOUT:Hello nested.Bob" to stdout
|
|
128
|
+
'''
|
|
129
|
+
And I write "STDOUT:Hello Charly" to stdout
|
|
130
|
+
And another step fails
|
|
131
|
+
|
|
132
|
+
Scenario: Another failing
|
|
133
|
+
Given I write "STDOUT:Hello Dora" to stdout
|
|
134
|
+
And another step fails
|
|
135
|
+
"""
|
|
136
|
+
When I run "behave -f plain features/stdout.failing_with_nested.feature"
|
|
137
|
+
Then it should fail with:
|
|
138
|
+
"""
|
|
139
|
+
0 scenarios passed, 2 failed, 0 skipped
|
|
140
|
+
5 steps passed, 2 failed, 0 skipped, 0 undefined
|
|
141
|
+
"""
|
|
142
|
+
And note that "the summary is only shown if hooks have no errors"
|
|
143
|
+
And the command output should contain:
|
|
144
|
+
"""
|
|
145
|
+
Captured stdout:
|
|
146
|
+
STDOUT:Hello Alice
|
|
147
|
+
STDOUT:Hello Bob
|
|
148
|
+
STDOUT:Hello nested.Alice
|
|
149
|
+
STDOUT:Hello nested.Bob
|
|
150
|
+
STDOUT:AFTER-EXECUTE-STEPS
|
|
151
|
+
STDOUT:Hello Charly
|
|
152
|
+
"""
|
|
153
|
+
And the command output should contain:
|
|
154
|
+
"""
|
|
155
|
+
Captured stdout:
|
|
156
|
+
STDOUT:Hello Dora
|
|
157
|
+
"""
|
|
158
|
+
And the command output should contain:
|
|
159
|
+
"""
|
|
160
|
+
AFTER-SCENARIO Failing with nested steps: Streams are restored.
|
|
161
|
+
"""
|
|
162
|
+
And the command output should contain:
|
|
163
|
+
"""
|
|
164
|
+
AFTER-SCENARIO Another failing: Streams are restored.
|
|
165
|
+
"""
|
|
166
|
+
|
|
167
|
+
Scenario: Stderr capture works with nested steps
|
|
168
|
+
Given a file named "features/stderr.failing_with_nested.feature" with
|
|
169
|
+
"""
|
|
170
|
+
Feature:
|
|
171
|
+
Scenario: Failing with nested steps
|
|
172
|
+
Given I write "STDERR:Hello Alice" to stderr
|
|
173
|
+
When I write "STDERR:Hello Bob" to stderr
|
|
174
|
+
Then I execute the following steps:
|
|
175
|
+
'''
|
|
176
|
+
* I write "STDERR:Hello nested.Alice" to stderr
|
|
177
|
+
* I write "STDERR:Hello nested.Bob" to stderr
|
|
178
|
+
'''
|
|
179
|
+
And I write "STDERR:Hello Charly" to stderr
|
|
180
|
+
And another step fails
|
|
181
|
+
|
|
182
|
+
Scenario: Another failing
|
|
183
|
+
Given I write "STDERR:Hello Dora" to stderr
|
|
184
|
+
And another step fails
|
|
185
|
+
"""
|
|
186
|
+
When I run "behave -f plain features/stderr.failing_with_nested.feature"
|
|
187
|
+
Then it should fail with:
|
|
188
|
+
"""
|
|
189
|
+
0 scenarios passed, 2 failed, 0 skipped
|
|
190
|
+
5 steps passed, 2 failed, 0 skipped, 0 undefined
|
|
191
|
+
"""
|
|
192
|
+
And note that "the summary is only shown if hooks have no errors"
|
|
193
|
+
And the command output should contain:
|
|
194
|
+
"""
|
|
195
|
+
Captured stderr:
|
|
196
|
+
STDERR:Hello Alice
|
|
197
|
+
STDERR:Hello Bob
|
|
198
|
+
STDERR:Hello nested.Alice
|
|
199
|
+
STDERR:Hello nested.Bob
|
|
200
|
+
STDERR:AFTER-EXECUTE-STEPS
|
|
201
|
+
STDERR:Hello Charly
|
|
202
|
+
"""
|
|
203
|
+
And the command output should contain:
|
|
204
|
+
"""
|
|
205
|
+
Captured stderr:
|
|
206
|
+
STDERR:Hello Dora
|
|
207
|
+
"""
|
|
208
|
+
And the command output should contain:
|
|
209
|
+
"""
|
|
210
|
+
AFTER-SCENARIO Failing with nested steps: Streams are restored.
|
|
211
|
+
"""
|
|
212
|
+
And the command output should contain:
|
|
213
|
+
"""
|
|
214
|
+
AFTER-SCENARIO Another failing: Streams are restored.
|
|
215
|
+
"""
|