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,8 @@
|
|
|
1
|
+
EXAMPLE: Async-steps and async-dispatch/async-collect
|
|
2
|
+
================================================================================
|
|
3
|
+
|
|
4
|
+
BASED-ON: features/step.async_step.feature
|
|
5
|
+
REQUIRES: Python 3.5 (or Python 3.4)
|
|
6
|
+
|
|
7
|
+
Examples for testing asyncio frameworks with async-steps, etc.
|
|
8
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# BEHAVE CONFIGURATION
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# FILE: .behaverc, behave.ini
|
|
5
|
+
#
|
|
6
|
+
# SEE ALSO:
|
|
7
|
+
# * http://packages.python.org/behave/behave.html#configuration-files
|
|
8
|
+
# * https://github.com/behave/behave
|
|
9
|
+
# * http://pypi.python.org/pypi/behave/
|
|
10
|
+
# =============================================================================
|
|
11
|
+
|
|
12
|
+
[behave]
|
|
13
|
+
show_timings = true
|
|
14
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
@use.with_python.version=3.4
|
|
2
|
+
@use.with_python.version=3.5
|
|
3
|
+
@use.with_python.version=3.6
|
|
4
|
+
Feature:
|
|
5
|
+
Scenario:
|
|
6
|
+
Given I dispatch an async-call with param "Alice"
|
|
7
|
+
And I dispatch an async-call with param "Bob"
|
|
8
|
+
Then the collected result of the async-calls is "ALICE, BOB"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
|
2
|
+
|
|
3
|
+
from behave.tag_matcher import ActiveTagMatcher, setup_active_tag_values
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
# -- MATCHES ANY TAGS: @use.with_{category}={value}
|
|
7
|
+
# NOTE: active_tag_value_provider provides category values for active tags.
|
|
8
|
+
python_version = "%s.%s" % sys.version_info[:2]
|
|
9
|
+
active_tag_value_provider = {
|
|
10
|
+
"python.version": python_version,
|
|
11
|
+
}
|
|
12
|
+
active_tag_matcher = ActiveTagMatcher(active_tag_value_provider)
|
|
13
|
+
|
|
14
|
+
# -----------------------------------------------------------------------------
|
|
15
|
+
# HOOKS:
|
|
16
|
+
# -----------------------------------------------------------------------------
|
|
17
|
+
def before_all(context):
|
|
18
|
+
# -- SETUP ACTIVE-TAG MATCHER (with userdata):
|
|
19
|
+
setup_active_tag_values(active_tag_value_provider, context.config.userdata)
|
|
20
|
+
|
|
21
|
+
def before_feature(context, feature):
|
|
22
|
+
if active_tag_matcher.should_exclude_with(feature.tags):
|
|
23
|
+
feature.skip(reason=active_tag_matcher.exclude_reason)
|
|
24
|
+
|
|
25
|
+
def before_scenario(context, scenario):
|
|
26
|
+
if active_tag_matcher.should_exclude_with(scenario.effective_tags):
|
|
27
|
+
scenario.skip(reason=active_tag_matcher.exclude_reason)
|
|
28
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from behave import given, then, step
|
|
2
|
+
from behave.api.async_step import use_or_create_async_context, AsyncContext
|
|
3
|
+
from hamcrest import assert_that, equal_to, empty
|
|
4
|
+
import asyncio
|
|
5
|
+
|
|
6
|
+
@asyncio.coroutine
|
|
7
|
+
def async_func(param):
|
|
8
|
+
yield from asyncio.sleep(0.2)
|
|
9
|
+
return str(param).upper()
|
|
10
|
+
|
|
11
|
+
@given('I dispatch an async-call with param "{param}"')
|
|
12
|
+
def step_dispatch_async_call(context, param):
|
|
13
|
+
async_context = use_or_create_async_context(context, "async_context1")
|
|
14
|
+
task = async_context.loop.create_task(async_func(param))
|
|
15
|
+
async_context.tasks.append(task)
|
|
16
|
+
|
|
17
|
+
@then('the collected result of the async-calls is "{expected}"')
|
|
18
|
+
def step_collected_async_call_result_is(context, expected):
|
|
19
|
+
async_context = context.async_context1
|
|
20
|
+
done, pending = async_context.loop.run_until_complete(
|
|
21
|
+
asyncio.wait(async_context.tasks, loop=async_context.loop))
|
|
22
|
+
|
|
23
|
+
parts = [task.result() for task in done]
|
|
24
|
+
joined_result = ", ".join(sorted(parts))
|
|
25
|
+
assert_that(joined_result, equal_to(expected))
|
|
26
|
+
assert_that(pending, empty())
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# -- REQUIRES: Python >= 3.4
|
|
2
|
+
from behave import step
|
|
3
|
+
from behave.api.async_step import async_run_until_complete
|
|
4
|
+
import asyncio
|
|
5
|
+
|
|
6
|
+
@step('an async-step waits {duration:f} seconds')
|
|
7
|
+
@async_run_until_complete
|
|
8
|
+
@asyncio.coroutine
|
|
9
|
+
def step_async_step_waits_seconds_py34(context, duration):
|
|
10
|
+
yield from asyncio.sleep(duration)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# -- REQUIRES: Python >= 3.5
|
|
2
|
+
from behave import step
|
|
3
|
+
from behave.api.async_step import async_run_until_complete
|
|
4
|
+
import asyncio
|
|
5
|
+
|
|
6
|
+
@step('an async-step waits {duration:f} seconds')
|
|
7
|
+
@async_run_until_complete
|
|
8
|
+
async def step_async_step_waits_seconds_py35(context, duration):
|
|
9
|
+
"""Simple example of a coroutine as async-step (in Python 3.5)"""
|
|
10
|
+
await asyncio.sleep(duration)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Feature:
|
|
2
|
+
|
|
3
|
+
Scenario:
|
|
4
|
+
Given I dispatch an async-call with param "Alice" ... passed in 0.001s
|
|
5
|
+
And I dispatch an async-call with param "Bob" ... passed in 0.000s
|
|
6
|
+
Then the collected result of the async-calls is "ALICE, BOB" ... passed in 0.206s
|
|
7
|
+
|
|
8
|
+
1 feature passed, 0 failed, 0 skipped
|
|
9
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
10
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
11
|
+
Took 0m0.208s
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
EXAMPLE: Use Environment Variables in Steps
|
|
2
|
+
=============================================================================
|
|
3
|
+
|
|
4
|
+
:RELATED TO: `issue #497`_
|
|
5
|
+
|
|
6
|
+
This directory provides a simple example how you can use environment variables
|
|
7
|
+
in step implementations.
|
|
8
|
+
|
|
9
|
+
::
|
|
10
|
+
|
|
11
|
+
# -- USE: -f plain --no-capture (via "behave.ini" defaults)
|
|
12
|
+
$ behave
|
|
13
|
+
Feature: Test Environment variable concept
|
|
14
|
+
|
|
15
|
+
Scenario:
|
|
16
|
+
USE ENVIRONMENT-VAR: LOGNAME = xxx (variant 1)
|
|
17
|
+
When I click on $LOGNAME ... passed
|
|
18
|
+
USE ENVIRONMENT-VAR: LOGNAME = xxx (variant 2)
|
|
19
|
+
When I use the environment variable $LOGNAME ... passed
|
|
20
|
+
|
|
21
|
+
1 feature passed, 0 failed, 0 skipped
|
|
22
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
23
|
+
2 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
24
|
+
Took 0m0.000s
|
|
25
|
+
|
|
26
|
+
.. _`issue #497`: https://github.com/behave/behave/issues/497
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# BEHAVE CONFIGURATION
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# FILE: .behaverc, behave.ini
|
|
5
|
+
#
|
|
6
|
+
# SEE ALSO:
|
|
7
|
+
# * http://packages.python.org/behave/behave.html#configuration-files
|
|
8
|
+
# * https://github.com/behave/behave
|
|
9
|
+
# * http://pypi.python.org/pypi/behave/
|
|
10
|
+
# =============================================================================
|
|
11
|
+
|
|
12
|
+
[behave]
|
|
13
|
+
default_format = plain
|
|
14
|
+
stdout_capture = false
|
|
15
|
+
show_source = true
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Feature: Test Environment variable concept
|
|
2
|
+
|
|
3
|
+
Scenario:
|
|
4
|
+
USE ENVIRONMENT-VAR: LOGNAME = xxx (variant 1)
|
|
5
|
+
When I click on $LOGNAME ... passed
|
|
6
|
+
USE ENVIRONMENT-VAR: LOGNAME = xxx (variant 2)
|
|
7
|
+
When I use the environment variable $LOGNAME ... passed
|
|
8
|
+
|
|
9
|
+
1 feature passed, 0 failed, 0 skipped
|
|
10
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
11
|
+
2 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
12
|
+
Took 0m0.000s
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
|
2
|
+
# -- FILE: features/steps/my_steps.py
|
|
3
|
+
|
|
4
|
+
from __future__ import print_function
|
|
5
|
+
from behave import when
|
|
6
|
+
import os
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
# -- VARIANT 1:
|
|
10
|
+
@when(u'I click on ${environment_variable:w}')
|
|
11
|
+
def step_impl(context, environment_variable):
|
|
12
|
+
env_value = os.environ.get(environment_variable, None)
|
|
13
|
+
if env_value is None:
|
|
14
|
+
raise LookupError("Environment variable '%s' is undefined" % environment_variable)
|
|
15
|
+
print("USE ENVIRONMENT-VAR: %s = %s (variant 1)" % (environment_variable, env_value))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# -- VARIANT 2: Use type converter
|
|
19
|
+
from behave import register_type
|
|
20
|
+
import parse
|
|
21
|
+
|
|
22
|
+
@parse.with_pattern(r"\$\w+") # -- ONLY FOR: $WORD
|
|
23
|
+
def parse_environment_var(text):
|
|
24
|
+
assert text.startswith("$")
|
|
25
|
+
env_name = text[1:]
|
|
26
|
+
env_value = os.environ.get(env_name, None)
|
|
27
|
+
return (env_name, env_value)
|
|
28
|
+
|
|
29
|
+
register_type(EnvironmentVar=parse_environment_var)
|
|
30
|
+
|
|
31
|
+
@when(u'I use the environment variable {environment_variable:EnvironmentVar}')
|
|
32
|
+
def step_impl(context, environment_variable):
|
|
33
|
+
env_name, env_value = environment_variable
|
|
34
|
+
if env_value is None:
|
|
35
|
+
raise LookupError("Environment variable '%s' is undefined" % env_name)
|
|
36
|
+
print("USE ENVIRONMENT-VAR: %s = %s (variant 2)" \
|
|
37
|
+
% (env_name, env_value))
|
|
38
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
behave features: Self-Tests
|
|
2
|
+
===============================================================================
|
|
3
|
+
|
|
4
|
+
This directory contains feature tests that are executed with behave.
|
|
5
|
+
These self-tests are used to:
|
|
6
|
+
|
|
7
|
+
* ensure that ``behave`` reacts as expected
|
|
8
|
+
* define the common expected behaviour for behave
|
|
9
|
+
* support "Acceptance Test Driven-Design" (ATDD)
|
|
10
|
+
|
|
11
|
+
RELATED:
|
|
12
|
+
* Cucumber Technology Compatibility Kit: https://github.com/cucumber/cucumber-tck
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
Feature: Background
|
|
2
|
+
|
|
3
|
+
As a test writer
|
|
4
|
+
I want to run a number of steps in each scenario
|
|
5
|
+
And I want to avoid duplicating these steps for each scenario
|
|
6
|
+
So that I write these steps only once (DRY principle).
|
|
7
|
+
|
|
8
|
+
. SPECIFICATION:
|
|
9
|
+
. * A feature can have an optional "Background" section
|
|
10
|
+
. * The Background must be specified before any Scenario/ScenarioOutline
|
|
11
|
+
. * The Background may occur at most once
|
|
12
|
+
. * The Background steps are executed in each Scenario/ScenarioOutline
|
|
13
|
+
. * The Background steps are executed before any Scenario steps
|
|
14
|
+
. * If a Background step fails then the is marked as scenario failed
|
|
15
|
+
. * If a Background fails in a scenario then other scenarios are still executed.
|
|
16
|
+
.
|
|
17
|
+
. RELATED:
|
|
18
|
+
. * parser.background.sad_cases.feature
|
|
19
|
+
.
|
|
20
|
+
. NOTE:
|
|
21
|
+
. Cucumber has a slightly different runtime behaviour.
|
|
22
|
+
. When a background step fails the first scenario is marked as failed.
|
|
23
|
+
. But the remaining scenarios are marked as skipped.
|
|
24
|
+
.
|
|
25
|
+
. This can lead to problems when you have sporadic background step failures.
|
|
26
|
+
. For this reason, behave retries the background steps for each scenario.
|
|
27
|
+
. But this may lead to an increased test duration if a systematic failure
|
|
28
|
+
. occurs in the failing background step.
|
|
29
|
+
.
|
|
30
|
+
. SEE ALSO:
|
|
31
|
+
. * https://github.com/cucumber/cucumber/blob/master/features/docs/gherkin/background.feature
|
|
32
|
+
|
|
33
|
+
@setup
|
|
34
|
+
Scenario: Feature Setup
|
|
35
|
+
Given a new working directory
|
|
36
|
+
And a file named "features/steps/background_steps.py" with:
|
|
37
|
+
"""
|
|
38
|
+
from behave import step
|
|
39
|
+
|
|
40
|
+
@step('{word} background step passes')
|
|
41
|
+
def step_background_step_passes(context, word):
|
|
42
|
+
pass
|
|
43
|
+
|
|
44
|
+
@step('{word} background step fails')
|
|
45
|
+
def step_background_step_fails(context, word):
|
|
46
|
+
assert False, "XFAIL: background step"
|
|
47
|
+
|
|
48
|
+
@step('{word} background step fails sometimes')
|
|
49
|
+
def step_background_step_fails_sometimes(context, word):
|
|
50
|
+
should_fail = (context.scenarios_count % 2) == 0
|
|
51
|
+
if should_fail:
|
|
52
|
+
step_background_step_fails(context, word)
|
|
53
|
+
"""
|
|
54
|
+
And a file named "features/steps/passing_steps.py" with:
|
|
55
|
+
"""
|
|
56
|
+
from behave import step
|
|
57
|
+
|
|
58
|
+
@step('{word} step passes')
|
|
59
|
+
def step_passes(context, word):
|
|
60
|
+
pass
|
|
61
|
+
|
|
62
|
+
@step('{word} step fails')
|
|
63
|
+
def step_fails(context, word):
|
|
64
|
+
assert False, "XFAIL"
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
Scenario: Feature with a Background and Scenarios
|
|
68
|
+
Given a file named "features/background_example1.feature" with:
|
|
69
|
+
"""
|
|
70
|
+
Feature:
|
|
71
|
+
Background:
|
|
72
|
+
Given a background step passes
|
|
73
|
+
And another background step passes
|
|
74
|
+
|
|
75
|
+
Scenario: S1
|
|
76
|
+
When a step passes
|
|
77
|
+
|
|
78
|
+
Scenario: S2
|
|
79
|
+
Then a step passes
|
|
80
|
+
And another step passes
|
|
81
|
+
"""
|
|
82
|
+
When I run "behave -f plain -T features/background_example1.feature"
|
|
83
|
+
Then it should pass with:
|
|
84
|
+
"""
|
|
85
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
86
|
+
7 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
87
|
+
"""
|
|
88
|
+
And the command output should contain:
|
|
89
|
+
"""
|
|
90
|
+
Feature:
|
|
91
|
+
Background:
|
|
92
|
+
|
|
93
|
+
Scenario: S1
|
|
94
|
+
Given a background step passes ... passed
|
|
95
|
+
And another background step passes ... passed
|
|
96
|
+
When a step passes ... passed
|
|
97
|
+
|
|
98
|
+
Scenario: S2
|
|
99
|
+
Given a background step passes ... passed
|
|
100
|
+
And another background step passes ... passed
|
|
101
|
+
Then a step passes ... passed
|
|
102
|
+
And another step passes ... passed
|
|
103
|
+
"""
|
|
104
|
+
But note that "the Background steps are injected into each Scenario"
|
|
105
|
+
And note that "the Background steps are executed before any Scenario steps"
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
Scenario: Failing Background Step causes all Scenarios to fail
|
|
109
|
+
Given a file named "features/background_fail_example.feature" with:
|
|
110
|
+
"""
|
|
111
|
+
Feature:
|
|
112
|
+
|
|
113
|
+
Background: B1
|
|
114
|
+
Given a background step passes
|
|
115
|
+
And a background step fails
|
|
116
|
+
And another background step passes
|
|
117
|
+
|
|
118
|
+
Scenario: S1
|
|
119
|
+
When a step passes
|
|
120
|
+
|
|
121
|
+
Scenario: S2
|
|
122
|
+
Then a step passes
|
|
123
|
+
And another step passes
|
|
124
|
+
"""
|
|
125
|
+
When I run "behave -f plain -T features/background_fail_example.feature"
|
|
126
|
+
Then it should fail with:
|
|
127
|
+
"""
|
|
128
|
+
0 scenarios passed, 2 failed, 0 skipped
|
|
129
|
+
2 steps passed, 2 failed, 5 skipped, 0 undefined
|
|
130
|
+
"""
|
|
131
|
+
And the command output should contain:
|
|
132
|
+
"""
|
|
133
|
+
Feature:
|
|
134
|
+
Background: B1
|
|
135
|
+
|
|
136
|
+
Scenario: S1
|
|
137
|
+
Given a background step passes ... passed
|
|
138
|
+
And a background step fails ... failed
|
|
139
|
+
Assertion Failed: XFAIL: background step
|
|
140
|
+
|
|
141
|
+
Scenario: S2
|
|
142
|
+
Given a background step passes ... passed
|
|
143
|
+
And a background step fails ... failed
|
|
144
|
+
Assertion Failed: XFAIL: background step
|
|
145
|
+
"""
|
|
146
|
+
And note that "the failing Background step causes all Scenarios to fail"
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
Scenario: Failing Background Step does not prevent that other Scenarios are executed
|
|
150
|
+
|
|
151
|
+
If a Background step fails sometimes
|
|
152
|
+
it should be retried in the remaining Scenarios where it might pass.
|
|
153
|
+
|
|
154
|
+
Given a file named "features/background_fails_sometimes_example.feature" with:
|
|
155
|
+
"""
|
|
156
|
+
Feature:
|
|
157
|
+
|
|
158
|
+
Background: B2
|
|
159
|
+
Given a background step fails sometimes
|
|
160
|
+
|
|
161
|
+
Scenario: S1
|
|
162
|
+
Given a step passes
|
|
163
|
+
|
|
164
|
+
Scenario: S2
|
|
165
|
+
When another step passes
|
|
166
|
+
|
|
167
|
+
Scenario: S3
|
|
168
|
+
Then another step passes
|
|
169
|
+
"""
|
|
170
|
+
And a file named "features/environment.py" with:
|
|
171
|
+
"""
|
|
172
|
+
scenarios_count = 0
|
|
173
|
+
|
|
174
|
+
def before_scenario(context, scenario):
|
|
175
|
+
global scenarios_count
|
|
176
|
+
context.scenarios_count = scenarios_count
|
|
177
|
+
scenarios_count += 1
|
|
178
|
+
"""
|
|
179
|
+
When I run "behave -f plain -T features/background_fails_sometimes_example.feature"
|
|
180
|
+
Then it should fail with:
|
|
181
|
+
"""
|
|
182
|
+
1 scenario passed, 2 failed, 0 skipped
|
|
183
|
+
2 steps passed, 2 failed, 2 skipped, 0 undefined
|
|
184
|
+
"""
|
|
185
|
+
And the command output should contain:
|
|
186
|
+
"""
|
|
187
|
+
Feature:
|
|
188
|
+
Background: B2
|
|
189
|
+
|
|
190
|
+
Scenario: S1
|
|
191
|
+
Given a background step fails sometimes ... failed
|
|
192
|
+
Assertion Failed: XFAIL: background step
|
|
193
|
+
|
|
194
|
+
Scenario: S2
|
|
195
|
+
Given a background step fails sometimes ... passed
|
|
196
|
+
When another step passes ... passed
|
|
197
|
+
|
|
198
|
+
Scenario: S3
|
|
199
|
+
Given a background step fails sometimes ... failed
|
|
200
|
+
Assertion Failed: XFAIL: background step
|
|
201
|
+
"""
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
Scenario: Feature with a Background and ScenarioOutlines
|
|
205
|
+
Given a file named "features/background_outline_example.feature" with:
|
|
206
|
+
"""
|
|
207
|
+
Feature:
|
|
208
|
+
Background:
|
|
209
|
+
Given a background step passes
|
|
210
|
+
And another background step passes
|
|
211
|
+
|
|
212
|
+
Scenario Outline: SO1
|
|
213
|
+
When a step <outcome1>
|
|
214
|
+
Then another step <outcome2>
|
|
215
|
+
|
|
216
|
+
Examples: Alpha
|
|
217
|
+
| outcome1 | outcome2 |
|
|
218
|
+
| passes | passes |
|
|
219
|
+
| passes | passes |
|
|
220
|
+
|
|
221
|
+
Scenario Outline: SO2
|
|
222
|
+
Given <word1> step passes
|
|
223
|
+
Then <word2> step passes
|
|
224
|
+
|
|
225
|
+
Examples:
|
|
226
|
+
| word1 | word2 |
|
|
227
|
+
| a | a |
|
|
228
|
+
| a | another |
|
|
229
|
+
| another | a |
|
|
230
|
+
"""
|
|
231
|
+
When I run "behave -f plain -T features/background_outline_example.feature"
|
|
232
|
+
Then it should pass with:
|
|
233
|
+
"""
|
|
234
|
+
5 scenarios passed, 0 failed, 0 skipped
|
|
235
|
+
20 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
236
|
+
"""
|
|
237
|
+
And the command output should contain:
|
|
238
|
+
"""
|
|
239
|
+
Feature:
|
|
240
|
+
Background:
|
|
241
|
+
|
|
242
|
+
Scenario Outline: SO1 -- @1.1 Alpha
|
|
243
|
+
Given a background step passes ... passed
|
|
244
|
+
And another background step passes ... passed
|
|
245
|
+
When a step passes ... passed
|
|
246
|
+
Then another step passes ... passed
|
|
247
|
+
|
|
248
|
+
Scenario Outline: SO1 -- @1.2 Alpha
|
|
249
|
+
Given a background step passes ... passed
|
|
250
|
+
And another background step passes ... passed
|
|
251
|
+
When a step passes ... passed
|
|
252
|
+
Then another step passes ... passed
|
|
253
|
+
|
|
254
|
+
Scenario Outline: SO2 -- @1.1
|
|
255
|
+
Given a background step passes ... passed
|
|
256
|
+
And another background step passes ... passed
|
|
257
|
+
Given a step passes ... passed
|
|
258
|
+
Then a step passes ... passed
|
|
259
|
+
|
|
260
|
+
Scenario Outline: SO2 -- @1.2
|
|
261
|
+
Given a background step passes ... passed
|
|
262
|
+
And another background step passes ... passed
|
|
263
|
+
Given a step passes ... passed
|
|
264
|
+
Then another step passes ... passed
|
|
265
|
+
|
|
266
|
+
Scenario Outline: SO2 -- @1.3
|
|
267
|
+
Given a background step passes ... passed
|
|
268
|
+
And another background step passes ... passed
|
|
269
|
+
Given another step passes ... passed
|
|
270
|
+
Then a step passes ... passed
|
|
271
|
+
"""
|
|
272
|
+
But note that "the Background steps are injected into each ScenarioOutline"
|
|
273
|
+
And note that "the Background steps are executed before any ScenarioOutline steps"
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
Scenario: Failing Background Step causes all ScenarioOutlines to fail
|
|
277
|
+
Given a file named "features/background_fail_outline_example.feature" with:
|
|
278
|
+
"""
|
|
279
|
+
Feature:
|
|
280
|
+
Background:
|
|
281
|
+
Given a background step passes
|
|
282
|
+
And a background step fails
|
|
283
|
+
But another background step passes
|
|
284
|
+
|
|
285
|
+
Scenario Outline: SO1
|
|
286
|
+
When a step <outcome1>
|
|
287
|
+
Then another step <outcome2>
|
|
288
|
+
|
|
289
|
+
Examples: Alpha
|
|
290
|
+
| outcome1 | outcome2 |
|
|
291
|
+
| passes | passes |
|
|
292
|
+
| passes | fails |
|
|
293
|
+
| fails | passes |
|
|
294
|
+
| fails | fails |
|
|
295
|
+
|
|
296
|
+
Scenario Outline: SO2
|
|
297
|
+
When <word1> step passes
|
|
298
|
+
|
|
299
|
+
Examples: Beta
|
|
300
|
+
| word1 |
|
|
301
|
+
| a |
|
|
302
|
+
| another |
|
|
303
|
+
"""
|
|
304
|
+
When I run "behave -f plain -T features/background_fail_outline_example.feature"
|
|
305
|
+
Then it should fail with:
|
|
306
|
+
"""
|
|
307
|
+
0 scenarios passed, 6 failed, 0 skipped
|
|
308
|
+
6 steps passed, 6 failed, 16 skipped, 0 undefined
|
|
309
|
+
"""
|
|
310
|
+
And the command output should contain:
|
|
311
|
+
"""
|
|
312
|
+
Feature:
|
|
313
|
+
Background:
|
|
314
|
+
|
|
315
|
+
Scenario Outline: SO1 -- @1.1 Alpha
|
|
316
|
+
Given a background step passes ... passed
|
|
317
|
+
And a background step fails ... failed
|
|
318
|
+
Assertion Failed: XFAIL: background step
|
|
319
|
+
|
|
320
|
+
Scenario Outline: SO1 -- @1.2 Alpha
|
|
321
|
+
Given a background step passes ... passed
|
|
322
|
+
And a background step fails ... failed
|
|
323
|
+
Assertion Failed: XFAIL: background step
|
|
324
|
+
|
|
325
|
+
Scenario Outline: SO1 -- @1.3 Alpha
|
|
326
|
+
Given a background step passes ... passed
|
|
327
|
+
And a background step fails ... failed
|
|
328
|
+
Assertion Failed: XFAIL: background step
|
|
329
|
+
|
|
330
|
+
Scenario Outline: SO1 -- @1.4 Alpha
|
|
331
|
+
Given a background step passes ... passed
|
|
332
|
+
And a background step fails ... failed
|
|
333
|
+
Assertion Failed: XFAIL: background step
|
|
334
|
+
|
|
335
|
+
Scenario Outline: SO2 -- @1.1 Beta
|
|
336
|
+
Given a background step passes ... passed
|
|
337
|
+
And a background step fails ... failed
|
|
338
|
+
Assertion Failed: XFAIL: background step
|
|
339
|
+
|
|
340
|
+
Scenario Outline: SO2 -- @1.2 Beta
|
|
341
|
+
Given a background step passes ... passed
|
|
342
|
+
And a background step fails ... failed
|
|
343
|
+
Assertion Failed: XFAIL: background step
|
|
344
|
+
"""
|
|
345
|
+
But note that "the failing Background step causes each ScenarioOutline to be marked as skipped"
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
Scenario: Feature with Background after first Scenario should fail (SAD CASE)
|
|
349
|
+
Given a file named "features/background_sad_example1.feature" with:
|
|
350
|
+
"""
|
|
351
|
+
Feature:
|
|
352
|
+
Scenario: S1
|
|
353
|
+
When a step passes
|
|
354
|
+
|
|
355
|
+
Background: B1
|
|
356
|
+
Given a background step passes
|
|
357
|
+
|
|
358
|
+
Scenario: S2
|
|
359
|
+
Then a step passes
|
|
360
|
+
And another step passes
|
|
361
|
+
"""
|
|
362
|
+
When I run "behave -f plain -T features/background_sad_example1.feature"
|
|
363
|
+
Then it should fail with:
|
|
364
|
+
"""
|
|
365
|
+
Parser failure in state steps, at line 5: "Background: B1"
|
|
366
|
+
REASON: Background may not occur after Scenario/ScenarioOutline.
|
|
367
|
+
"""
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
Scenario: Feature with two Backgrounds should fail (SAD CASE)
|
|
371
|
+
Given a file named "features/background_sad_example2.feature" with:
|
|
372
|
+
"""
|
|
373
|
+
Feature:
|
|
374
|
+
Background: B1
|
|
375
|
+
Given a background step passes
|
|
376
|
+
|
|
377
|
+
Background: B2 (XFAIL)
|
|
378
|
+
Given another background step passes
|
|
379
|
+
|
|
380
|
+
Scenario: S1
|
|
381
|
+
When a step passes
|
|
382
|
+
|
|
383
|
+
Scenario: S2
|
|
384
|
+
Then a step passes
|
|
385
|
+
And another step passes
|
|
386
|
+
"""
|
|
387
|
+
When I run "behave -f plain -T features/background_sad_example2.feature"
|
|
388
|
+
Then it should fail with:
|
|
389
|
+
"""
|
|
390
|
+
Parser failure in state steps, at line 5: "Background: B2 (XFAIL)"
|
|
391
|
+
REASON: Background should not be used here.
|
|
392
|
+
"""
|