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,76 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #383 -- Handle (custom) Type parsing errors better
|
|
3
|
+
|
|
4
|
+
. Custom type parsing errors that occur during step matching
|
|
5
|
+
. lead currently to abortion of the test run.
|
|
6
|
+
. In addition, the actual reason what occured is very low-level.
|
|
7
|
+
.
|
|
8
|
+
. DESIRED:
|
|
9
|
+
. * Protect test runner/execution logic
|
|
10
|
+
. * Improve handling of these kind of errors
|
|
11
|
+
. * Provide better diagnostics
|
|
12
|
+
. * Continue to run tests (if possible)
|
|
13
|
+
.
|
|
14
|
+
. NOTE:
|
|
15
|
+
. This kind of problem is often caused by regular expressions that
|
|
16
|
+
. are not specific enough for the type conversion (LAZY-REGEXP DESIGN).
|
|
17
|
+
. Therefore, the problem occurs during type conversion/parsing phase
|
|
18
|
+
. and not in the initial step detection/matching phase.
|
|
19
|
+
.
|
|
20
|
+
. RELATED: features/step_param.custom_types.feature
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
Scenario: Type conversion fails
|
|
24
|
+
Given a new working directory
|
|
25
|
+
And a file named "features/steps/bad_type_converter_steps.py" with:
|
|
26
|
+
"""
|
|
27
|
+
from behave import step, register_type
|
|
28
|
+
import parse
|
|
29
|
+
|
|
30
|
+
@parse.with_pattern(r".*") # -- NOTE: Wildcard pattern, accepts anything.
|
|
31
|
+
def parse_fails(text):
|
|
32
|
+
raise ValueError(text)
|
|
33
|
+
|
|
34
|
+
register_type(BadType=parse_fails)
|
|
35
|
+
|
|
36
|
+
@step('a param with "BadType:{value:BadType}"')
|
|
37
|
+
def step_param_with_badtype_value(context, value):
|
|
38
|
+
assert False, "SHOULD_NEVER_COME_HERE: BadType converter raises error."
|
|
39
|
+
"""
|
|
40
|
+
And a file named "features/steps/reused_steps.py" with:
|
|
41
|
+
"""
|
|
42
|
+
from behave4cmd0 import passing_steps
|
|
43
|
+
"""
|
|
44
|
+
And a file named "behave.ini" with:
|
|
45
|
+
"""
|
|
46
|
+
[behave]
|
|
47
|
+
show_timings = false
|
|
48
|
+
"""
|
|
49
|
+
And a file named "features/example.type_conversion_fails.feature" with:
|
|
50
|
+
"""
|
|
51
|
+
Feature: Type Conversion Fails
|
|
52
|
+
Scenario: BadType raises ValueError during type conversion
|
|
53
|
+
Given a param with "BadType:BAD_VALUE"
|
|
54
|
+
|
|
55
|
+
Scenario: Ensure other scenarios are executed
|
|
56
|
+
Then another step passes
|
|
57
|
+
"""
|
|
58
|
+
When I run "behave -f plain features/example.type_conversion_fails.feature"
|
|
59
|
+
Then it should fail with:
|
|
60
|
+
"""
|
|
61
|
+
1 scenario passed, 1 failed, 0 skipped
|
|
62
|
+
1 step passed, 1 failed, 0 skipped, 0 undefined
|
|
63
|
+
"""
|
|
64
|
+
And the command output should contain:
|
|
65
|
+
"""
|
|
66
|
+
Scenario: BadType raises ValueError during type conversion
|
|
67
|
+
Given a param with "BadType:BAD_VALUE" ... failed
|
|
68
|
+
Traceback (most recent call last):
|
|
69
|
+
"""
|
|
70
|
+
And the command output should contain:
|
|
71
|
+
"""
|
|
72
|
+
File "features/steps/bad_type_converter_steps.py", line 6, in parse_fails
|
|
73
|
+
raise ValueError(text)
|
|
74
|
+
"""
|
|
75
|
+
And the command output should contain "ValueError: BAD_VALUE"
|
|
76
|
+
And the command output should contain "StepParseError: BAD_VALUE"
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #384 -- Active Tags fail with ScenarioOutline
|
|
3
|
+
|
|
4
|
+
. ScenarioOutline can currently not be used with active-tag(s).
|
|
5
|
+
. REASON: Template mechanism transforms active-tag into invalid active-tag per example row.
|
|
6
|
+
.
|
|
7
|
+
. RELATED: features/tag.active_tags.feature
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Background:
|
|
11
|
+
Given a new working directory
|
|
12
|
+
And a file named "features/steps/pass_steps.py" with:
|
|
13
|
+
"""
|
|
14
|
+
from behave import step
|
|
15
|
+
|
|
16
|
+
@step('{word:w} step passes')
|
|
17
|
+
def step_passes(context, word):
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
# -- REUSE: Step definitions.
|
|
21
|
+
from behave4cmd0 import note_steps
|
|
22
|
+
"""
|
|
23
|
+
And a file named "features/environment.py" with:
|
|
24
|
+
"""
|
|
25
|
+
from behave.tag_matcher import ActiveTagMatcher, setup_active_tag_values
|
|
26
|
+
import sys
|
|
27
|
+
|
|
28
|
+
# -- ACTIVE TAG SUPPORT: @use.with_{category}={value}, ...
|
|
29
|
+
active_tag_value_provider = {
|
|
30
|
+
"browser": "chrome",
|
|
31
|
+
"webserver": "apache",
|
|
32
|
+
}
|
|
33
|
+
active_tag_matcher = ActiveTagMatcher(active_tag_value_provider)
|
|
34
|
+
|
|
35
|
+
def before_all(context):
|
|
36
|
+
setup_active_tag_values(active_tag_value_provider, context.config.userdata)
|
|
37
|
+
|
|
38
|
+
def before_scenario(context, scenario):
|
|
39
|
+
if active_tag_matcher.should_exclude_with(scenario.effective_tags):
|
|
40
|
+
sys.stdout.write("ACTIVE-TAG DISABLED: Scenario %s\n" % scenario.name)
|
|
41
|
+
scenario.skip(active_tag_matcher.exclude_reason)
|
|
42
|
+
"""
|
|
43
|
+
And a file named "behave.ini" with:
|
|
44
|
+
"""
|
|
45
|
+
[behave]
|
|
46
|
+
default_format = pretty
|
|
47
|
+
show_timings = no
|
|
48
|
+
show_skipped = no
|
|
49
|
+
color = no
|
|
50
|
+
"""
|
|
51
|
+
And a file named "features/outline.active_tags.feature" with:
|
|
52
|
+
"""
|
|
53
|
+
Feature:
|
|
54
|
+
|
|
55
|
+
@use.with_browser=chrome
|
|
56
|
+
Scenario Outline: Alice -- <name>, <language>
|
|
57
|
+
Given a step passes
|
|
58
|
+
But note that "<name> can speak <language>"
|
|
59
|
+
|
|
60
|
+
Examples:
|
|
61
|
+
| name | language |
|
|
62
|
+
| Anna | German |
|
|
63
|
+
| Arabella | English |
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
Scenario: ScenarioOutline with enabled active-tag is executed
|
|
68
|
+
When I run "behave -D browser=chrome features/outline.active_tags.feature"
|
|
69
|
+
Then it should pass with:
|
|
70
|
+
"""
|
|
71
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
72
|
+
4 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
73
|
+
"""
|
|
74
|
+
And the command output should contain:
|
|
75
|
+
"""
|
|
76
|
+
@use.with_browser=chrome
|
|
77
|
+
Scenario Outline: Alice -- Anna, German -- @1.1 # features/outline.active_tags.feature:10
|
|
78
|
+
Given a step passes # features/steps/pass_steps.py:3
|
|
79
|
+
But note that "Anna can speak German" # ../behave4cmd0/note_steps.py:15
|
|
80
|
+
|
|
81
|
+
@use.with_browser=chrome
|
|
82
|
+
Scenario Outline: Alice -- Arabella, English -- @1.2 # features/outline.active_tags.feature:11
|
|
83
|
+
Given a step passes # features/steps/pass_steps.py:3
|
|
84
|
+
But note that "Arabella can speak English" # ../behave4cmd0/note_steps.py:15
|
|
85
|
+
"""
|
|
86
|
+
And the command output should not contain "ACTIVE-TAG DISABLED: Scenario Alice"
|
|
87
|
+
But note that "we check now for the specific syndrome"
|
|
88
|
+
And the command output should not contain "@use.with_browserchrome"
|
|
89
|
+
But the command output should contain "@use.with_browser=chrome"
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
Scenario: ScenarioOutline with disabled active-tag is skipped
|
|
93
|
+
When I run "behave -D browser=other features/outline.active_tags.feature"
|
|
94
|
+
Then it should pass with:
|
|
95
|
+
"""
|
|
96
|
+
0 scenarios passed, 0 failed, 2 skipped
|
|
97
|
+
0 steps passed, 0 failed, 4 skipped, 0 undefined
|
|
98
|
+
"""
|
|
99
|
+
And the command output should contain:
|
|
100
|
+
"""
|
|
101
|
+
ACTIVE-TAG DISABLED: Scenario Alice -- Anna, German -- @1.1
|
|
102
|
+
ACTIVE-TAG DISABLED: Scenario Alice -- Arabella, English -- @1.2
|
|
103
|
+
"""
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
@change_request
|
|
3
|
+
Feature: Issue #385 -- before_scenario called too late
|
|
4
|
+
|
|
5
|
+
. RATIONALE:
|
|
6
|
+
. Due to:
|
|
7
|
+
.
|
|
8
|
+
. * skip scenario/feature support in before_scenario (and before_feature) hooks
|
|
9
|
+
. * active-tags
|
|
10
|
+
.
|
|
11
|
+
. formatters are now called to early (for before feature/scenario functionality).
|
|
12
|
+
. Formatters should be called after the before-hooks are processed.
|
|
13
|
+
.
|
|
14
|
+
. NOTES:
|
|
15
|
+
. * Test uses show_skipped=false to ensure that at least the
|
|
16
|
+
. scenario/feature title is shown with plain formatter.
|
|
17
|
+
|
|
18
|
+
@setup
|
|
19
|
+
Scenario:
|
|
20
|
+
Given a new working directory
|
|
21
|
+
And a file named "features/steps/pass_steps.py" with:
|
|
22
|
+
"""
|
|
23
|
+
from behave import step
|
|
24
|
+
|
|
25
|
+
@step('{word:w} step passes')
|
|
26
|
+
def step_passes(context, word):
|
|
27
|
+
pass
|
|
28
|
+
"""
|
|
29
|
+
And a file named "features/environment.py" with:
|
|
30
|
+
"""
|
|
31
|
+
from __future__ import print_function
|
|
32
|
+
|
|
33
|
+
def before_feature(context, feature):
|
|
34
|
+
if "skip" in feature.tags:
|
|
35
|
+
print("SKIP-FEATURE: %s" % feature.name)
|
|
36
|
+
feature.mark_skipped()
|
|
37
|
+
|
|
38
|
+
def before_scenario(context, scenario):
|
|
39
|
+
if "skip" in scenario.tags:
|
|
40
|
+
print("SKIP-SCENARIO: %s" % scenario.name)
|
|
41
|
+
scenario.mark_skipped()
|
|
42
|
+
"""
|
|
43
|
+
And a file named "behave.ini" with:
|
|
44
|
+
"""
|
|
45
|
+
[behave]
|
|
46
|
+
show_skipped = false
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
Scenario: Formatter is not called with skip in before_scenario hook
|
|
50
|
+
Given a file named "features/alice.feature" with:
|
|
51
|
+
"""
|
|
52
|
+
Feature: Alice
|
|
53
|
+
|
|
54
|
+
@skip
|
|
55
|
+
Scenario: Alice and Bob
|
|
56
|
+
Given a step passes
|
|
57
|
+
|
|
58
|
+
Scenario: Alice in China
|
|
59
|
+
When another step passes
|
|
60
|
+
"""
|
|
61
|
+
When I run "behave -f plain features/alice.feature"
|
|
62
|
+
Then it should pass with:
|
|
63
|
+
"""
|
|
64
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
65
|
+
"""
|
|
66
|
+
And the command output should contain:
|
|
67
|
+
"""
|
|
68
|
+
SKIP-SCENARIO: Alice and Bob
|
|
69
|
+
|
|
70
|
+
Scenario: Alice in China
|
|
71
|
+
When another step passes ... passed
|
|
72
|
+
"""
|
|
73
|
+
But the command output should not contain:
|
|
74
|
+
"""
|
|
75
|
+
Scenario: Alice and Bob
|
|
76
|
+
SKIP-FEATURE: Alice and Bob
|
|
77
|
+
"""
|
|
78
|
+
And the command output should not contain "Scenario: Alice and Bob"
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
Scenario: Formatter is not called with skip in before_feature hook
|
|
82
|
+
Given a file named "features/bob.feature" with:
|
|
83
|
+
"""
|
|
84
|
+
@skip
|
|
85
|
+
Feature: Bob
|
|
86
|
+
|
|
87
|
+
Scenario: Bob and Alice
|
|
88
|
+
Given a step passes
|
|
89
|
+
|
|
90
|
+
Scenario: Bob in China
|
|
91
|
+
When another step passes
|
|
92
|
+
"""
|
|
93
|
+
When I run "behave -f plain features/bob.feature"
|
|
94
|
+
Then it should pass with:
|
|
95
|
+
"""
|
|
96
|
+
SKIP-FEATURE: Bob
|
|
97
|
+
|
|
98
|
+
0 features passed, 0 failed, 1 skipped
|
|
99
|
+
0 scenarios passed, 0 failed, 2 skipped
|
|
100
|
+
"""
|
|
101
|
+
But the command output should not contain:
|
|
102
|
+
"""
|
|
103
|
+
Feature: Bob
|
|
104
|
+
SKIP-FEATURE: Bob
|
|
105
|
+
"""
|
|
106
|
+
And the command output should not contain "Feature: Bob"
|
|
107
|
+
And the command output should not contain "Scenario: Bob and Alice"
|
|
108
|
+
And the command output should not contain "Scenario: Bob in China"
|
|
109
|
+
And note that "all scenarios of the feature are also skipped"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
@unicode
|
|
3
|
+
Feature: Issue #424 -- Unicode output problem when fails in nested steps
|
|
4
|
+
|
|
5
|
+
. HINTS:
|
|
6
|
+
. * Python step file should have encoding line (# -*- coding: ... -*-)
|
|
7
|
+
. * Assert failure message should use unicode-string instead of byte-string
|
|
8
|
+
|
|
9
|
+
Scenario:
|
|
10
|
+
Given a new working directory
|
|
11
|
+
And a file named "features/steps/pass_steps.py" with:
|
|
12
|
+
"""
|
|
13
|
+
from behave import step
|
|
14
|
+
|
|
15
|
+
@step('{word:w} step passes')
|
|
16
|
+
def step_passes(context, word):
|
|
17
|
+
pass
|
|
18
|
+
"""
|
|
19
|
+
And a file named "features/steps/steps.py" with:
|
|
20
|
+
"""
|
|
21
|
+
# -*- coding: UTF-8 -*-
|
|
22
|
+
# NOTE: Python2 requires encoding to decode special chars correctly.
|
|
23
|
+
from behave import step
|
|
24
|
+
|
|
25
|
+
@step('I press the big red button')
|
|
26
|
+
def step_press_red_button(context):
|
|
27
|
+
assert False, u"Ungültiger Wert" # HINT: Special chars require Unicode.
|
|
28
|
+
|
|
29
|
+
@step('I call the nested step with the "red button"')
|
|
30
|
+
def step_press_red_button(context):
|
|
31
|
+
context.execute_steps(u'When I press the big red button')
|
|
32
|
+
"""
|
|
33
|
+
And a file named "behave.ini" with:
|
|
34
|
+
"""
|
|
35
|
+
[behave]
|
|
36
|
+
show_timings = false
|
|
37
|
+
"""
|
|
38
|
+
And a file named "features/alice.feature" with:
|
|
39
|
+
"""
|
|
40
|
+
Feature:
|
|
41
|
+
|
|
42
|
+
Scenario: Use step directly
|
|
43
|
+
When I press the big red button
|
|
44
|
+
|
|
45
|
+
Scenario: Use nested step
|
|
46
|
+
Given another step passes
|
|
47
|
+
When I call the nested step with the "red button"
|
|
48
|
+
"""
|
|
49
|
+
When I run "behave -f plain features/alice.feature"
|
|
50
|
+
Then it should fail with:
|
|
51
|
+
"""
|
|
52
|
+
0 scenarios passed, 2 failed, 0 skipped
|
|
53
|
+
1 step passed, 2 failed, 0 skipped, 0 undefined
|
|
54
|
+
"""
|
|
55
|
+
And the command output should contain:
|
|
56
|
+
"""
|
|
57
|
+
Scenario: Use step directly
|
|
58
|
+
When I press the big red button ... failed
|
|
59
|
+
Assertion Failed: Ungültiger Wert
|
|
60
|
+
|
|
61
|
+
Scenario: Use nested step
|
|
62
|
+
Given another step passes ... passed
|
|
63
|
+
When I call the nested step with the "red button" ... failed
|
|
64
|
+
Assertion Failed: FAILED SUB-STEP: When I press the big red button
|
|
65
|
+
Substep info: Assertion Failed: Ungültiger Wert
|
|
66
|
+
"""
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
@junit
|
|
3
|
+
Feature: Issue #446 -- Support scenario hook-errors with JUnitReporter
|
|
4
|
+
|
|
5
|
+
. Currently, when a hook error occurs in:
|
|
6
|
+
.
|
|
7
|
+
. * before_scenario()
|
|
8
|
+
. * after_scenario()
|
|
9
|
+
.
|
|
10
|
+
. a sanity check in the JUnitReporter prevents sane JUnit XML output.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@setup
|
|
14
|
+
Scenario: Skip scenario without steps
|
|
15
|
+
Given a new working directory
|
|
16
|
+
And a file named "features/steps/pass_steps.py" with:
|
|
17
|
+
"""
|
|
18
|
+
from behave import step
|
|
19
|
+
|
|
20
|
+
@step('{word:w} step passes')
|
|
21
|
+
def step_passes(context, word):
|
|
22
|
+
pass
|
|
23
|
+
"""
|
|
24
|
+
And a file named "features/before_scenario_failure.feature" with:
|
|
25
|
+
"""
|
|
26
|
+
Feature: Alice
|
|
27
|
+
@hook_failure.before_scenario
|
|
28
|
+
Scenario: A1
|
|
29
|
+
Given a step passes
|
|
30
|
+
"""
|
|
31
|
+
And a file named "features/after_scenario_failure.feature" with:
|
|
32
|
+
"""
|
|
33
|
+
Feature: Bob
|
|
34
|
+
@hook_failure.after_scenario
|
|
35
|
+
Scenario: B1
|
|
36
|
+
Given another step passes
|
|
37
|
+
"""
|
|
38
|
+
And a file named "features/environment.py" with:
|
|
39
|
+
"""
|
|
40
|
+
def cause_hook_failure():
|
|
41
|
+
raise RuntimeError("OOPS")
|
|
42
|
+
|
|
43
|
+
def before_scenario(context, scenario):
|
|
44
|
+
if "hook_failure.before_scenario" in scenario.tags:
|
|
45
|
+
cause_hook_failure()
|
|
46
|
+
|
|
47
|
+
def after_scenario(context, scenario):
|
|
48
|
+
if "hook_failure.after_scenario" in scenario.tags:
|
|
49
|
+
cause_hook_failure()
|
|
50
|
+
"""
|
|
51
|
+
And a file named "behave.ini" with:
|
|
52
|
+
"""
|
|
53
|
+
[behave]
|
|
54
|
+
show_timings = false
|
|
55
|
+
|
|
56
|
+
[behave.userdata]
|
|
57
|
+
behave.reporter.junit.show_timestamp = False
|
|
58
|
+
behave.reporter.junit.show_hostname = False
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
Scenario: Hook error in before_scenario()
|
|
62
|
+
When I run "behave -f plain --junit features/before_scenario_failure.feature"
|
|
63
|
+
Then it should fail with:
|
|
64
|
+
"""
|
|
65
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
66
|
+
"""
|
|
67
|
+
And the command output should contain:
|
|
68
|
+
"""
|
|
69
|
+
HOOK-ERROR in before_scenario: RuntimeError: OOPS
|
|
70
|
+
"""
|
|
71
|
+
And the file "reports/TESTS-before_scenario_failure.xml" should contain:
|
|
72
|
+
"""
|
|
73
|
+
<testsuite errors="1" failures="0" name="before_scenario_failure.Alice" skipped="0" tests="1"
|
|
74
|
+
"""
|
|
75
|
+
And the file "reports/TESTS-before_scenario_failure.xml" should contain:
|
|
76
|
+
"""
|
|
77
|
+
<error message="HOOK-ERROR in before_scenario: RuntimeError: OOPS" type="RuntimeError">
|
|
78
|
+
"""
|
|
79
|
+
And the file "reports/TESTS-before_scenario_failure.xml" should contain:
|
|
80
|
+
"""
|
|
81
|
+
File "features/environment.py", line 6, in before_scenario
|
|
82
|
+
cause_hook_failure()
|
|
83
|
+
File "features/environment.py", line 2, in cause_hook_failure
|
|
84
|
+
raise RuntimeError("OOPS")
|
|
85
|
+
"""
|
|
86
|
+
And note that "the traceback is contained in the XML element <error/>"
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
Scenario: Hook error in after_scenario()
|
|
90
|
+
When I run "behave -f plain --junit features/after_scenario_failure.feature"
|
|
91
|
+
Then it should fail with:
|
|
92
|
+
"""
|
|
93
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
94
|
+
"""
|
|
95
|
+
And the command output should contain:
|
|
96
|
+
"""
|
|
97
|
+
Scenario: B1
|
|
98
|
+
Given another step passes ... passed
|
|
99
|
+
HOOK-ERROR in after_scenario: RuntimeError: OOPS
|
|
100
|
+
"""
|
|
101
|
+
And the file "reports/TESTS-after_scenario_failure.xml" should contain:
|
|
102
|
+
"""
|
|
103
|
+
<testsuite errors="1" failures="0" name="after_scenario_failure.Bob" skipped="0" tests="1"
|
|
104
|
+
"""
|
|
105
|
+
And the file "reports/TESTS-after_scenario_failure.xml" should contain:
|
|
106
|
+
"""
|
|
107
|
+
<error message="HOOK-ERROR in after_scenario: RuntimeError: OOPS" type="RuntimeError">
|
|
108
|
+
"""
|
|
109
|
+
And the file "reports/TESTS-after_scenario_failure.xml" should contain:
|
|
110
|
+
"""
|
|
111
|
+
File "features/environment.py", line 10, in after_scenario
|
|
112
|
+
cause_hook_failure()
|
|
113
|
+
File "features/environment.py", line 2, in cause_hook_failure
|
|
114
|
+
raise RuntimeError("OOPS")
|
|
115
|
+
"""
|
|
116
|
+
And note that "the traceback is contained in the XML element <error/>"
|