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,69 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #83: behave.__main__:main() Various sys.exit issues
|
|
3
|
+
|
|
4
|
+
. Currently, the main function has several issues related
|
|
5
|
+
. to sys.exit() returncode usage:
|
|
6
|
+
.
|
|
7
|
+
. 1. sys.exit("string") is invalid, a number must be used:
|
|
8
|
+
. => Used in exception cases after run (ParseError, ConfigError)
|
|
9
|
+
.
|
|
10
|
+
. 2. On success, the main() function returns implicitly None
|
|
11
|
+
. instead of using sys.exit(0)
|
|
12
|
+
. => No statement at end of function after failed case.
|
|
13
|
+
|
|
14
|
+
@setup
|
|
15
|
+
Scenario: Feature Setup
|
|
16
|
+
Given a new working directory
|
|
17
|
+
And a file named "features/steps/steps.py" with:
|
|
18
|
+
"""
|
|
19
|
+
from behave import step
|
|
20
|
+
|
|
21
|
+
@step(u'a step passes')
|
|
22
|
+
def step_passes(context):
|
|
23
|
+
pass
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
Scenario: Successful test run
|
|
27
|
+
Given a file named "features/passing.feature" with:
|
|
28
|
+
"""
|
|
29
|
+
Feature:
|
|
30
|
+
Scenario:
|
|
31
|
+
Given a step passes
|
|
32
|
+
When a step passes
|
|
33
|
+
Then a step passes
|
|
34
|
+
"""
|
|
35
|
+
When I run "behave -c features/passing.feature"
|
|
36
|
+
Then it should pass
|
|
37
|
+
And the command returncode is "0"
|
|
38
|
+
|
|
39
|
+
Scenario: ParseError occurs
|
|
40
|
+
Given a file named "features/invalid_with_ParseError.feature" with:
|
|
41
|
+
"""
|
|
42
|
+
Feature:
|
|
43
|
+
Scenario: Invalid scenario which raises ParseError
|
|
44
|
+
Given a step passes
|
|
45
|
+
When2 a step passes
|
|
46
|
+
"""
|
|
47
|
+
When I run "behave -c features/invalid_with_ParseError.feature"
|
|
48
|
+
Then it should fail
|
|
49
|
+
And the command returncode is non-zero
|
|
50
|
+
And the command output should contain:
|
|
51
|
+
"""
|
|
52
|
+
Failed to parse "{__WORKDIR__}/features/invalid_with_ParseError.feature"
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
Scenario: ConfigError occurs
|
|
56
|
+
Given a new working directory
|
|
57
|
+
And a file named "features/passing2.feature" with:
|
|
58
|
+
"""
|
|
59
|
+
Feature:
|
|
60
|
+
Scenario:
|
|
61
|
+
Given a step passes
|
|
62
|
+
"""
|
|
63
|
+
When I run "behave -c features/passing2.feature"
|
|
64
|
+
Then it should fail
|
|
65
|
+
And the command returncode is non-zero
|
|
66
|
+
And the command output should contain:
|
|
67
|
+
"""
|
|
68
|
+
No steps directory in '{__WORKDIR__}/features'
|
|
69
|
+
"""
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #84: behave.runner behave does not reliably detected failed test runs
|
|
3
|
+
|
|
4
|
+
. Behave does currently not reliably detected failed test runs and
|
|
5
|
+
. therefore returns not sys.exit(1) at end of main().
|
|
6
|
+
.
|
|
7
|
+
. 1. behave.runner:Runner.run_with_paths() returns failed==True
|
|
8
|
+
. if last feature was successful and test runner does not stop
|
|
9
|
+
. after first failing feature.
|
|
10
|
+
.
|
|
11
|
+
. 2. Issue #64: Same problem in behave.model.Feature.run() with scenarios
|
|
12
|
+
|
|
13
|
+
Scenario: Test Setup
|
|
14
|
+
Given a new working directory
|
|
15
|
+
And a file named "features/passing.feature" with:
|
|
16
|
+
"""
|
|
17
|
+
Feature: Passing
|
|
18
|
+
Scenario:
|
|
19
|
+
Given a step passes
|
|
20
|
+
When a step passes
|
|
21
|
+
Then a step passes
|
|
22
|
+
"""
|
|
23
|
+
And a file named "features/failing.feature" with:
|
|
24
|
+
"""
|
|
25
|
+
Feature: Failing
|
|
26
|
+
Scenario:
|
|
27
|
+
Given a step fails
|
|
28
|
+
When a step fails
|
|
29
|
+
Then a step fails
|
|
30
|
+
"""
|
|
31
|
+
And a file named "features/steps/steps.py" with:
|
|
32
|
+
"""
|
|
33
|
+
from behave import step
|
|
34
|
+
|
|
35
|
+
@step(u'a step passes')
|
|
36
|
+
def step_passes(context):
|
|
37
|
+
pass
|
|
38
|
+
|
|
39
|
+
@step(u'a step fails')
|
|
40
|
+
def step_fails(context):
|
|
41
|
+
assert False, "step: a step fails"
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
Scenario: First feature fails, second feature passes
|
|
45
|
+
When I run "behave -f plain features/failing.feature features/passing.feature"
|
|
46
|
+
Then it should fail with:
|
|
47
|
+
"""
|
|
48
|
+
1 feature passed, 1 failed, 0 skipped
|
|
49
|
+
1 scenario passed, 1 failed, 0 skipped
|
|
50
|
+
3 steps passed, 1 failed, 2 skipped, 0 undefined
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
Scenario: First feature passes, second feature fails
|
|
54
|
+
When I run "behave -f plain features/passing.feature features/failing.feature"
|
|
55
|
+
Then it should fail with:
|
|
56
|
+
"""
|
|
57
|
+
1 feature passed, 1 failed, 0 skipped
|
|
58
|
+
1 scenario passed, 1 failed, 0 skipped
|
|
59
|
+
3 steps passed, 1 failed, 2 skipped, 0 undefined
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
Scenario: First feature passes, second fails, last passes
|
|
63
|
+
When I run "behave -f plain features/passing.feature features/failing.feature features/passing.feature"
|
|
64
|
+
Then it should fail with:
|
|
65
|
+
"""
|
|
66
|
+
2 features passed, 1 failed, 0 skipped
|
|
67
|
+
2 scenarios passed, 1 failed, 0 skipped
|
|
68
|
+
6 steps passed, 1 failed, 2 skipped, 0 undefined
|
|
69
|
+
"""
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #85: AssertionError with nested regex and pretty formatter
|
|
3
|
+
|
|
4
|
+
| When --format=pretty is used
|
|
5
|
+
| an AssertationError occurs for missing optional/nested-groups.
|
|
6
|
+
| When --format=plain is used, everything is fine
|
|
7
|
+
|
|
8
|
+
Scenario: Test Setup
|
|
9
|
+
Given a new working directory
|
|
10
|
+
And a file named "features/steps/regexp_steps.py" with:
|
|
11
|
+
"""
|
|
12
|
+
from __future__ import print_function
|
|
13
|
+
from behave import given, when, then, use_step_matcher
|
|
14
|
+
@given(u'a {re_category} regular expression "{pattern}"')
|
|
15
|
+
def impl(context, re_category, pattern):
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
@then(u'the parameter "{name}" is "{expected_value}"')
|
|
19
|
+
def impl(context, name, expected_value):
|
|
20
|
+
actual_value = getattr(context, name, None)
|
|
21
|
+
if actual_value is None:
|
|
22
|
+
actual_value = ""
|
|
23
|
+
assert hasattr(context, name)
|
|
24
|
+
assert actual_value == expected_value, "MISMATCH: actual({0}) == expected({1})".format(actual_value, expected_value)
|
|
25
|
+
|
|
26
|
+
@then(u'the parameter "{name}" is none')
|
|
27
|
+
def impl(context, name):
|
|
28
|
+
actual_value = getattr(context, name, None)
|
|
29
|
+
assert hasattr(context, name)
|
|
30
|
+
assert actual_value is None, "MISMATCH: actual({0}) == None)".format(actual_value)
|
|
31
|
+
|
|
32
|
+
def store_in_context(context, data):
|
|
33
|
+
for name, value in data.items():
|
|
34
|
+
setattr(context, name, value)
|
|
35
|
+
|
|
36
|
+
use_step_matcher('re')
|
|
37
|
+
|
|
38
|
+
@when(u'I try to match "(?P<foo>foo and more)"')
|
|
39
|
+
def impl(context, **kwargs):
|
|
40
|
+
kwargs["regexp_case"] = "simple"
|
|
41
|
+
print("CASE UNNESTED: {0}".format(kwargs))
|
|
42
|
+
store_in_context(context, kwargs)
|
|
43
|
+
|
|
44
|
+
@when(u'I try to match "(?P<foo>foo(?P<bar>bar)?)"')
|
|
45
|
+
def impl(context, **kwargs):
|
|
46
|
+
kwargs["regexp_case"] = "nested"
|
|
47
|
+
print("CASE NESTED: {0}".format(kwargs))
|
|
48
|
+
store_in_context(context, kwargs)
|
|
49
|
+
|
|
50
|
+
@when(u'I try to match "(?P<foo>foo) (?P<bar>bar)?"')
|
|
51
|
+
def impl(context, **kwargs):
|
|
52
|
+
kwargs["regexp_case"] = "optional"
|
|
53
|
+
print("CASE OPTIONAL: {0}".format(kwargs))
|
|
54
|
+
store_in_context(context, kwargs)
|
|
55
|
+
"""
|
|
56
|
+
And a file named "features/matching.feature" with:
|
|
57
|
+
"""
|
|
58
|
+
Feature: Using regexp matcher with nested and optional parameters
|
|
59
|
+
|
|
60
|
+
Scenario: regex, no nested groups, matching
|
|
61
|
+
Given a simple regular expression "(?P<foo>foo and more)"
|
|
62
|
+
When I try to match "foo and more"
|
|
63
|
+
Then the parameter "regexp_case" is "simple"
|
|
64
|
+
And the parameter "foo" is "foo and more"
|
|
65
|
+
|
|
66
|
+
Scenario: Nested groups without nested match
|
|
67
|
+
Given a nested-group regular expression "(?P<foo>foo(?P<bar>bar)?)"
|
|
68
|
+
When I try to match "foo"
|
|
69
|
+
Then the parameter "regexp_case" is "nested"
|
|
70
|
+
And the parameter "foo" is "foo"
|
|
71
|
+
And the parameter "bar" is none
|
|
72
|
+
|
|
73
|
+
Scenario: Nested groups with nested match
|
|
74
|
+
Given a nested-group regular expression "(?P<foo>foo(?P<bar>bar)?)"
|
|
75
|
+
When I try to match "foobar"
|
|
76
|
+
Then the parameter "regexp_case" is "nested"
|
|
77
|
+
And the parameter "foo" is "foobar"
|
|
78
|
+
And the parameter "bar" is "bar"
|
|
79
|
+
|
|
80
|
+
Scenario: Optional group without match
|
|
81
|
+
Given a optional-group regular expression "(?P<foo>foo) (?P<bar>bar)?"
|
|
82
|
+
When I try to match "foo "
|
|
83
|
+
Then the parameter "regexp_case" is "optional"
|
|
84
|
+
And the parameter "foo" is "foo"
|
|
85
|
+
And the parameter "bar" is none
|
|
86
|
+
|
|
87
|
+
Scenario: Optional group with match
|
|
88
|
+
Given a optional-group regular expression "(?P<foo>foo) (?P<bar>bar)?"
|
|
89
|
+
When I try to match "foo bar"
|
|
90
|
+
Then the parameter "regexp_case" is "optional"
|
|
91
|
+
And the parameter "foo" is "foo"
|
|
92
|
+
And the parameter "bar" is "bar"
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
Scenario: Run regexp steps with --format=plain
|
|
96
|
+
When I run "behave --format=plain features/matching.feature"
|
|
97
|
+
Then it should pass with:
|
|
98
|
+
"""
|
|
99
|
+
1 feature passed, 0 failed, 0 skipped
|
|
100
|
+
5 scenarios passed, 0 failed, 0 skipped
|
|
101
|
+
24 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
Scenario: Run regexp steps with --format=pretty
|
|
105
|
+
When I run "behave -c --format=pretty features/matching.feature"
|
|
106
|
+
Then it should pass with:
|
|
107
|
+
"""
|
|
108
|
+
1 feature passed, 0 failed, 0 skipped
|
|
109
|
+
5 scenarios passed, 0 failed, 0 skipped
|
|
110
|
+
24 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
111
|
+
"""
|
|
112
|
+
And the command output should not contain
|
|
113
|
+
"""
|
|
114
|
+
assert isinstance(text, unicode)
|
|
115
|
+
"""
|
|
116
|
+
And the command output should not contain
|
|
117
|
+
"""
|
|
118
|
+
AssertationError
|
|
119
|
+
"""
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #92: Output from --format=plain shows skipped steps in next scenario
|
|
3
|
+
|
|
4
|
+
. DUPLICATED, FIXED-BY: issue #35 solution.
|
|
5
|
+
.
|
|
6
|
+
. Given a feature has more than one scenario
|
|
7
|
+
. When the --format=plain option is used
|
|
8
|
+
. and a middle step of a scenario fails
|
|
9
|
+
. Then the skipped steps appear under the next scenario
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Scenario:
|
|
13
|
+
Given a new working directory
|
|
14
|
+
And a file named "features/issue92_syndrome.feature" with:
|
|
15
|
+
"""
|
|
16
|
+
Feature: Testing Plain Output
|
|
17
|
+
Reproduces bug where output from previous scenario appears before current.
|
|
18
|
+
|
|
19
|
+
Scenario: First example
|
|
20
|
+
Given this step works
|
|
21
|
+
When this step fails
|
|
22
|
+
Then this step appears in the wrong place
|
|
23
|
+
|
|
24
|
+
Scenario: Second example
|
|
25
|
+
Given this step works
|
|
26
|
+
When this step fails
|
|
27
|
+
Then this step appears in the wrong place
|
|
28
|
+
"""
|
|
29
|
+
And a file named "features/steps/steps.py" with:
|
|
30
|
+
"""
|
|
31
|
+
from behave import step
|
|
32
|
+
|
|
33
|
+
@step(u'this step works')
|
|
34
|
+
def working(context):
|
|
35
|
+
pass
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@step(u'this step fails')
|
|
39
|
+
def failing(context):
|
|
40
|
+
assert False, 'step failed'
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@step(u'this step appears in the wrong place')
|
|
44
|
+
def missing(context):
|
|
45
|
+
pass
|
|
46
|
+
"""
|
|
47
|
+
When I run "behave --no-timings --format=plain features/issue92_syndrome.feature"
|
|
48
|
+
Then it should fail with:
|
|
49
|
+
"""
|
|
50
|
+
0 features passed, 1 failed, 0 skipped
|
|
51
|
+
0 scenarios passed, 2 failed, 0 skipped
|
|
52
|
+
2 steps passed, 2 failed, 2 skipped, 0 undefined
|
|
53
|
+
"""
|
|
54
|
+
And the command output should contain:
|
|
55
|
+
"""
|
|
56
|
+
Feature: Testing Plain Output
|
|
57
|
+
Scenario: First example
|
|
58
|
+
Given this step works ... passed
|
|
59
|
+
When this step fails ... failed
|
|
60
|
+
Assertion Failed: step failed
|
|
61
|
+
|
|
62
|
+
Scenario: Second example
|
|
63
|
+
Given this step works ... passed
|
|
64
|
+
When this step fails ... failed
|
|
65
|
+
Assertion Failed: step failed
|
|
66
|
+
"""
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #96: Sub-steps failed without any error info to help debug issue
|
|
3
|
+
|
|
4
|
+
. I am trying to run execute_steps. One of them fails, but the error output
|
|
5
|
+
. from behave has no details whatsoever. It is virtually impossible
|
|
6
|
+
. to figure out why it failed. as no error output is present except the
|
|
7
|
+
. final error message
|
|
8
|
+
.
|
|
9
|
+
. def before_scenario(context,scenario):
|
|
10
|
+
. context.execute_steps(u'''
|
|
11
|
+
. When "admin:admin" sends POST "/tasks/testStart"
|
|
12
|
+
. Then I expect HTTP code 200
|
|
13
|
+
. ''')
|
|
14
|
+
.
|
|
15
|
+
. File ".../behave/runner.py", line 262, in execute_steps
|
|
16
|
+
. assert False, "FAILED SUB-STEP: %s" % step
|
|
17
|
+
. AssertionError: FAILED SUB-STEP: When "admin:admin" sends POST "/tasks/testStart"
|
|
18
|
+
.
|
|
19
|
+
. All we get is the "sub-step failed" but no info whatsoever
|
|
20
|
+
. as to why it failed...
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
Background:
|
|
25
|
+
Given a new working directory
|
|
26
|
+
And a file named "features/steps/steps.py" with:
|
|
27
|
+
"""
|
|
28
|
+
from behave import step
|
|
29
|
+
import sys
|
|
30
|
+
|
|
31
|
+
@step(u'a step passes')
|
|
32
|
+
def step_passes(context):
|
|
33
|
+
pass
|
|
34
|
+
|
|
35
|
+
@step(u'a step fails')
|
|
36
|
+
def step_fails(context):
|
|
37
|
+
assert False, 'EXPECT: Step fails.'
|
|
38
|
+
|
|
39
|
+
@step(u'a step fails with stdout "{message}"')
|
|
40
|
+
def step_fails_with_stdout(context, message):
|
|
41
|
+
sys.stdout.write("%s\n" % message)
|
|
42
|
+
assert False, 'EXPECT: Step fails with stdout.'
|
|
43
|
+
|
|
44
|
+
@step(u'a step fails with stderr "{message}"')
|
|
45
|
+
def step_fails_with_stderr(context, message):
|
|
46
|
+
sys.stderr.write("%s\n" % message)
|
|
47
|
+
assert False, 'EXPECT: Step fails with stderr.'
|
|
48
|
+
|
|
49
|
+
@step(u'a step raises an error "{message}"')
|
|
50
|
+
def step_raises_exception(context, message):
|
|
51
|
+
raise RuntimeError(message)
|
|
52
|
+
|
|
53
|
+
@step(u'the following steps should pass')
|
|
54
|
+
def step_following_steps_should_pass(context):
|
|
55
|
+
context.execute_steps(context.text.strip())
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
Scenario: Execute steps and one fails (EXPECTATION-MISMATCH: Assert fails)
|
|
59
|
+
Given a file named "features/issue96_case1.feature" with:
|
|
60
|
+
'''
|
|
61
|
+
Feature:
|
|
62
|
+
Scenario:
|
|
63
|
+
When the following steps should pass:
|
|
64
|
+
"""
|
|
65
|
+
Given a step passes
|
|
66
|
+
When a step fails
|
|
67
|
+
Then a step passes
|
|
68
|
+
"""
|
|
69
|
+
'''
|
|
70
|
+
When I run "behave -c features/issue96_case1.feature"
|
|
71
|
+
Then it should fail with:
|
|
72
|
+
"""
|
|
73
|
+
Assertion Failed: FAILED SUB-STEP: When a step fails
|
|
74
|
+
Substep info: Assertion Failed: EXPECT: Step fails.
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
Scenario: Execute steps and error occurs (UNEXPECTED: exception is raised)
|
|
78
|
+
Given a file named "features/issue96_case2.feature" with:
|
|
79
|
+
'''
|
|
80
|
+
Feature:
|
|
81
|
+
Scenario:
|
|
82
|
+
When the following steps should pass:
|
|
83
|
+
"""
|
|
84
|
+
Given a step passes
|
|
85
|
+
When a step raises an error "Alice is alive"
|
|
86
|
+
Then a step passes
|
|
87
|
+
"""
|
|
88
|
+
'''
|
|
89
|
+
When I run "behave -c features/issue96_case2.feature"
|
|
90
|
+
Then it should fail with:
|
|
91
|
+
"""
|
|
92
|
+
RuntimeError: Alice is alive
|
|
93
|
+
"""
|
|
94
|
+
And the command output should contain:
|
|
95
|
+
"""
|
|
96
|
+
Assertion Failed: FAILED SUB-STEP: When a step raises an error "Alice is alive"
|
|
97
|
+
Substep info: Traceback (most recent call last):
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
Scenario: Execute steps and one fails with stdout capture
|
|
101
|
+
Given a file named "features/issue96_case3.feature" with:
|
|
102
|
+
'''
|
|
103
|
+
Feature:
|
|
104
|
+
Scenario:
|
|
105
|
+
When the following steps should pass:
|
|
106
|
+
"""
|
|
107
|
+
Given a step passes
|
|
108
|
+
When a step fails with stdout "STDOUT: Alice is alive"
|
|
109
|
+
Then a step passes
|
|
110
|
+
"""
|
|
111
|
+
'''
|
|
112
|
+
When I run "behave -c features/issue96_case3.feature"
|
|
113
|
+
Then it should fail with:
|
|
114
|
+
"""
|
|
115
|
+
Assertion Failed: FAILED SUB-STEP: When a step fails with stdout "STDOUT: Alice is alive"
|
|
116
|
+
Substep info: Assertion Failed: EXPECT: Step fails with stdout.
|
|
117
|
+
"""
|
|
118
|
+
And the command output should contain:
|
|
119
|
+
"""
|
|
120
|
+
Captured stdout:
|
|
121
|
+
STDOUT: Alice is alive
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
Scenario: Execute steps and one fails with stderr capture
|
|
126
|
+
Given a file named "features/issue96_case4.feature" with:
|
|
127
|
+
'''
|
|
128
|
+
Feature:
|
|
129
|
+
Scenario:
|
|
130
|
+
When the following steps should pass:
|
|
131
|
+
"""
|
|
132
|
+
Given a step passes
|
|
133
|
+
When a step fails with stderr "STDERR: Alice is alive"
|
|
134
|
+
Then a step passes
|
|
135
|
+
"""
|
|
136
|
+
'''
|
|
137
|
+
When I run "behave -c features/issue96_case4.feature"
|
|
138
|
+
Then it should fail with:
|
|
139
|
+
"""
|
|
140
|
+
Assertion Failed: FAILED SUB-STEP: When a step fails with stderr "STDERR: Alice is alive"
|
|
141
|
+
Substep info: Assertion Failed: EXPECT: Step fails with stderr.
|
|
142
|
+
"""
|
|
143
|
+
And the command output should contain:
|
|
144
|
+
"""
|
|
145
|
+
Captured stderr:
|
|
146
|
+
STDERR: Alice is alive
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
Scenario: Execute steps and fail in before_scenario hook
|
|
150
|
+
Given a file named "features/issue96_case5.feature" with:
|
|
151
|
+
"""
|
|
152
|
+
Feature:
|
|
153
|
+
Scenario:
|
|
154
|
+
Given a step passes
|
|
155
|
+
When a step passes
|
|
156
|
+
Then a step passes
|
|
157
|
+
"""
|
|
158
|
+
And a file named "features/environment.py" with:
|
|
159
|
+
"""
|
|
160
|
+
def before_scenario(context, scenario):
|
|
161
|
+
context.execute_steps(u'''
|
|
162
|
+
Given a step passes
|
|
163
|
+
When a step passes
|
|
164
|
+
Then a step fails
|
|
165
|
+
''')
|
|
166
|
+
"""
|
|
167
|
+
When I run "behave -c features/issue96_case5.feature"
|
|
168
|
+
Then it should fail with:
|
|
169
|
+
"""
|
|
170
|
+
HOOK-ERROR in before_scenario: AssertionError: FAILED SUB-STEP: Then a step fails
|
|
171
|
+
Substep info: Assertion Failed: EXPECT: Step fails.
|
|
172
|
+
"""
|
|
173
|
+
|