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,101 @@
|
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
Provides step definitions for behave based on behave4cmd.
|
|
4
|
+
|
|
5
|
+
REQUIRES:
|
|
6
|
+
* behave4cmd.steplib.output steps (command output from behave).
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import absolute_import
|
|
10
|
+
from behave import then
|
|
11
|
+
from behave.runner_util import make_undefined_step_snippet
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# -----------------------------------------------------------------------------
|
|
15
|
+
# UTILITY FUNCTIONS:
|
|
16
|
+
# -----------------------------------------------------------------------------
|
|
17
|
+
def text_indent(text, indent_size=0):
|
|
18
|
+
prefix = " " * indent_size
|
|
19
|
+
return prefix.join(text.splitlines(True))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# -----------------------------------------------------------------------------
|
|
23
|
+
# STEPS FOR: Undefined step definitions
|
|
24
|
+
# -----------------------------------------------------------------------------
|
|
25
|
+
@then(u'an undefined-step snippets section exists')
|
|
26
|
+
def step_undefined_step_snippets_section_exists(context):
|
|
27
|
+
"""
|
|
28
|
+
Checks if an undefined-step snippet section is in behave command output.
|
|
29
|
+
"""
|
|
30
|
+
context.execute_steps(u'''
|
|
31
|
+
Then the command output should contain:
|
|
32
|
+
"""
|
|
33
|
+
You can implement step definitions for undefined steps with these snippets:
|
|
34
|
+
"""
|
|
35
|
+
''')
|
|
36
|
+
|
|
37
|
+
@then(u'an undefined-step snippet should exist for "{step}"')
|
|
38
|
+
def step_undefined_step_snippet_should_exist_for(context, step):
|
|
39
|
+
"""
|
|
40
|
+
Checks if an undefined-step snippet is provided for a step
|
|
41
|
+
in behave command output (last command).
|
|
42
|
+
|
|
43
|
+
EXAMPLE:
|
|
44
|
+
Then an undefined-step snippet should exist for "Given an undefined step"
|
|
45
|
+
"""
|
|
46
|
+
undefined_step_snippet = make_undefined_step_snippet(step)
|
|
47
|
+
context.execute_steps(u'''\
|
|
48
|
+
Then the command output should contain:
|
|
49
|
+
"""
|
|
50
|
+
{undefined_step_snippet}
|
|
51
|
+
"""
|
|
52
|
+
'''.format(undefined_step_snippet=text_indent(undefined_step_snippet, 4)))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@then(u'an undefined-step snippet should not exist for "{step}"')
|
|
56
|
+
def step_undefined_step_snippet_should_not_exist_for(context, step):
|
|
57
|
+
"""
|
|
58
|
+
Checks if an undefined-step snippet is provided for a step
|
|
59
|
+
in behave command output (last command).
|
|
60
|
+
"""
|
|
61
|
+
undefined_step_snippet = make_undefined_step_snippet(step)
|
|
62
|
+
context.execute_steps(u'''\
|
|
63
|
+
Then the command output should not contain:
|
|
64
|
+
"""
|
|
65
|
+
{undefined_step_snippet}
|
|
66
|
+
"""
|
|
67
|
+
'''.format(undefined_step_snippet=text_indent(undefined_step_snippet, 4)))
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@then(u'undefined-step snippets should exist for')
|
|
71
|
+
def step_undefined_step_snippets_should_exist_for_table(context):
|
|
72
|
+
"""
|
|
73
|
+
Checks if undefined-step snippets are provided.
|
|
74
|
+
|
|
75
|
+
EXAMPLE:
|
|
76
|
+
Then undefined-step snippets should exist for:
|
|
77
|
+
| Step |
|
|
78
|
+
| When an undefined step is used |
|
|
79
|
+
| Then another undefined step is used |
|
|
80
|
+
"""
|
|
81
|
+
assert context.table, "REQUIRES: table"
|
|
82
|
+
for row in context.table.rows:
|
|
83
|
+
step = row["Step"]
|
|
84
|
+
step_undefined_step_snippet_should_exist_for(context, step)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@then(u'undefined-step snippets should not exist for')
|
|
88
|
+
def step_undefined_step_snippets_should_not_exist_for_table(context):
|
|
89
|
+
"""
|
|
90
|
+
Checks if undefined-step snippets are not provided.
|
|
91
|
+
|
|
92
|
+
EXAMPLE:
|
|
93
|
+
Then undefined-step snippets should not exist for:
|
|
94
|
+
| Step |
|
|
95
|
+
| When an known step is used |
|
|
96
|
+
| Then another known step is used |
|
|
97
|
+
"""
|
|
98
|
+
assert context.table, "REQUIRES: table"
|
|
99
|
+
for row in context.table.rows:
|
|
100
|
+
step = row["Step"]
|
|
101
|
+
step_undefined_step_snippet_should_not_exist_for(context, step)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
Use behave4cmd0 step library (predecessor of behave4cmd).
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import absolute_import
|
|
7
|
+
|
|
8
|
+
# -- REGISTER-STEPS FROM STEP-LIBRARY:
|
|
9
|
+
import behave4cmd0.__all_steps__
|
|
10
|
+
import behave4cmd0.passing_steps
|
|
11
|
+
import behave4cmd0.failing_steps
|
|
12
|
+
import behave4cmd0.note_steps
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
Feature: Summary with Undefined Steps
|
|
2
|
+
|
|
3
|
+
. SPECIFICATION:
|
|
4
|
+
. * An undefined step should be counted as "undefined" step.
|
|
5
|
+
. * An undefined step should cause its scenario to fail.
|
|
6
|
+
. * If an undefined step is detected the remaining scenario steps are skipped.
|
|
7
|
+
.
|
|
8
|
+
. RELATED TO:
|
|
9
|
+
. * issue #42 Multiple undefined steps in same scenario are detected.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@setup
|
|
13
|
+
Scenario: Test Setup
|
|
14
|
+
Given a new working directory
|
|
15
|
+
And a file named "features/steps/passing_steps.py" with:
|
|
16
|
+
"""
|
|
17
|
+
from behave import step
|
|
18
|
+
|
|
19
|
+
@step('a step passes')
|
|
20
|
+
def step_passes(context):
|
|
21
|
+
pass
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
Scenario: Undefined step as first step in a scenario
|
|
25
|
+
Given a file named "features/summary_undefined_first_step.feature" with:
|
|
26
|
+
"""
|
|
27
|
+
Feature:
|
|
28
|
+
Scenario:
|
|
29
|
+
Given an undefined step is used
|
|
30
|
+
When a step passes
|
|
31
|
+
Then a step passes
|
|
32
|
+
"""
|
|
33
|
+
When I run "behave -f plain features/summary_undefined_first_step.feature"
|
|
34
|
+
Then it should fail with:
|
|
35
|
+
"""
|
|
36
|
+
0 features passed, 1 failed, 0 skipped
|
|
37
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
38
|
+
0 steps passed, 0 failed, 2 skipped, 1 undefined
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
Scenario: Undefined step as last step in a scenario
|
|
42
|
+
Given a file named "features/summary_undefined_last_step.feature" with:
|
|
43
|
+
"""
|
|
44
|
+
Feature:
|
|
45
|
+
Scenario:
|
|
46
|
+
Given a step passes
|
|
47
|
+
When an undefined step is used
|
|
48
|
+
"""
|
|
49
|
+
When I run "behave -f plain features/summary_undefined_last_step.feature"
|
|
50
|
+
Then it should fail with:
|
|
51
|
+
"""
|
|
52
|
+
0 features passed, 1 failed, 0 skipped
|
|
53
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
54
|
+
1 step passed, 0 failed, 0 skipped, 1 undefined
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
Scenario: Undefined step as middle step in a scenario
|
|
59
|
+
Given a file named "features/summary_undefined_middle_step.feature" with:
|
|
60
|
+
"""
|
|
61
|
+
Feature:
|
|
62
|
+
Scenario:
|
|
63
|
+
Given a step passes
|
|
64
|
+
When an undefined step is used
|
|
65
|
+
Then a step passes
|
|
66
|
+
And a step passes
|
|
67
|
+
"""
|
|
68
|
+
When I run "behave -f plain features/summary_undefined_middle_step.feature"
|
|
69
|
+
Then it should fail with:
|
|
70
|
+
"""
|
|
71
|
+
0 features passed, 1 failed, 0 skipped
|
|
72
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
73
|
+
1 step passed, 0 failed, 2 skipped, 1 undefined
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
Scenario: Two undefined steps in same scenario, all are detected (skipped)
|
|
77
|
+
Given a file named "features/summary_undefined_step2.feature" with:
|
|
78
|
+
"""
|
|
79
|
+
Feature:
|
|
80
|
+
Scenario:
|
|
81
|
+
Given a step passes
|
|
82
|
+
When an undefined step is used
|
|
83
|
+
Then a step passes
|
|
84
|
+
And another undefined step is used
|
|
85
|
+
"""
|
|
86
|
+
When I run "behave -f plain features/summary_undefined_step2.feature"
|
|
87
|
+
Then it should fail with:
|
|
88
|
+
"""
|
|
89
|
+
0 features passed, 1 failed, 0 skipped
|
|
90
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
91
|
+
1 step passed, 0 failed, 1 skipped, 2 undefined
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
Scenario: Two undefined steps in different scenarios
|
|
96
|
+
Given a file named "features/summary_undefined_step_and_another.feature" with:
|
|
97
|
+
"""
|
|
98
|
+
Feature:
|
|
99
|
+
Scenario:
|
|
100
|
+
Given a step passes
|
|
101
|
+
When an undefined step is used
|
|
102
|
+
Then a step passes
|
|
103
|
+
|
|
104
|
+
Scenario:
|
|
105
|
+
Given an undefined step is used
|
|
106
|
+
When a step passes
|
|
107
|
+
"""
|
|
108
|
+
When I run "behave -f plain features/summary_undefined_step_and_another.feature"
|
|
109
|
+
Then it should fail with:
|
|
110
|
+
"""
|
|
111
|
+
0 features passed, 1 failed, 0 skipped
|
|
112
|
+
0 scenarios passed, 2 failed, 0 skipped
|
|
113
|
+
1 step passed, 0 failed, 2 skipped, 2 undefined
|
|
114
|
+
"""
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
Feature: Active Tags
|
|
2
|
+
|
|
3
|
+
As a test writer
|
|
4
|
+
I want that some tags are evaluated at runtime
|
|
5
|
+
So that some features/scenarios automatically excluded from the run-set.
|
|
6
|
+
|
|
7
|
+
. SPECIFICATION: Active tag
|
|
8
|
+
. * An active tag is evaluated at runtime.
|
|
9
|
+
. * An active tag is either enabled or disabled (decided by runtime decision logic).
|
|
10
|
+
. * A disabled active tag causes that its feature/scenario is excluded from the run-set.
|
|
11
|
+
. * If several active tags are used for a feature/scenario/scenario outline,
|
|
12
|
+
. the following tag logic is used:
|
|
13
|
+
.
|
|
14
|
+
. SIMPLIFIED ALGORITHM: For active-tag expression
|
|
15
|
+
.
|
|
16
|
+
. enabled := enabled(active-tag1) and enabled(active-tag2) and ...
|
|
17
|
+
.
|
|
18
|
+
. where all active-tags have a different category.
|
|
19
|
+
.
|
|
20
|
+
. REAL ALGORITHM:
|
|
21
|
+
. If multiple active-tags for the same catgory exist,
|
|
22
|
+
. then these active-tags need to be merged together into a tag_group.
|
|
23
|
+
.
|
|
24
|
+
. enabled := enabled(tag_group1) and enabled(tag_group2) and ...
|
|
25
|
+
. tag_group.enabled := enabled(tag1) or enabled(tag2) or ...
|
|
26
|
+
.
|
|
27
|
+
. where all the active-tags within a tag-group have the same category.
|
|
28
|
+
.
|
|
29
|
+
. ACTIVE TAG SCHEMA (dialect1):
|
|
30
|
+
. @use.with_{category}={value}
|
|
31
|
+
. @not.with_{category}={value}
|
|
32
|
+
.
|
|
33
|
+
. DEPRECATED: @only.with_{category}={value}
|
|
34
|
+
.
|
|
35
|
+
. ACTIVE TAG SCHEMA (dialect2):
|
|
36
|
+
. @active.with_{category}={value}
|
|
37
|
+
. @not_active.with_{category}={value}
|
|
38
|
+
.
|
|
39
|
+
. RATIONALE:
|
|
40
|
+
. Some aspects of the runtime environment are only known
|
|
41
|
+
. when the tests are running. Therefore, it many cases it is simpler
|
|
42
|
+
. to use such a mechanism as "active tags" instead of moving this decision
|
|
43
|
+
. to the build-script that runs the tests.
|
|
44
|
+
.
|
|
45
|
+
. This allows to automatically skip some tests (scenarios, features)
|
|
46
|
+
. that would otherwise fail anyway.
|
|
47
|
+
.
|
|
48
|
+
. NOTE:
|
|
49
|
+
. * DRY-RUN MODE: Hooks are not called in dry-run mode.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@setup
|
|
53
|
+
Scenario: Feature Setup
|
|
54
|
+
Given a new working directory
|
|
55
|
+
And a file named "features/steps/pass_steps.py" with:
|
|
56
|
+
"""
|
|
57
|
+
from behave import step
|
|
58
|
+
|
|
59
|
+
@step('{word:w} step passes')
|
|
60
|
+
def step_passes(context, word):
|
|
61
|
+
pass
|
|
62
|
+
|
|
63
|
+
# -- REUSE: Step definitions.
|
|
64
|
+
from behave4cmd0 import note_steps
|
|
65
|
+
"""
|
|
66
|
+
And a file named "features/environment.py" with:
|
|
67
|
+
"""
|
|
68
|
+
from behave.tag_matcher import ActiveTagMatcher, setup_active_tag_values
|
|
69
|
+
import sys
|
|
70
|
+
|
|
71
|
+
# -- ACTIVE TAG SUPPORT: @use.with_{category}={value}, ...
|
|
72
|
+
active_tag_value_provider = {
|
|
73
|
+
"browser": "chrome",
|
|
74
|
+
"webserver": "apache",
|
|
75
|
+
}
|
|
76
|
+
active_tag_matcher = ActiveTagMatcher(active_tag_value_provider)
|
|
77
|
+
|
|
78
|
+
# -- BEHAVE-HOOKS:
|
|
79
|
+
def before_all(context):
|
|
80
|
+
setup_active_tag_values(active_tag_value_provider, context.config.userdata)
|
|
81
|
+
|
|
82
|
+
def before_scenario(context, scenario):
|
|
83
|
+
if active_tag_matcher.should_exclude_with(scenario.effective_tags):
|
|
84
|
+
sys.stdout.write("ACTIVE-TAG DISABLED: Scenario %s\n" % scenario.name)
|
|
85
|
+
scenario.skip(active_tag_matcher.exclude_reason)
|
|
86
|
+
"""
|
|
87
|
+
And a file named "behave.ini" with:
|
|
88
|
+
"""
|
|
89
|
+
[behave]
|
|
90
|
+
default_format = pretty
|
|
91
|
+
show_timings = no
|
|
92
|
+
show_skipped = no
|
|
93
|
+
color = no
|
|
94
|
+
"""
|
|
95
|
+
|
|
96
|
+
Scenario: Use active-tag with Scenario and one category (tag schema dialect2)
|
|
97
|
+
Given a file named "features/e1.active_tags.feature" with:
|
|
98
|
+
"""
|
|
99
|
+
Feature:
|
|
100
|
+
|
|
101
|
+
@use.with_browser=chrome
|
|
102
|
+
Scenario: Alice (Run only with Web-Browser Chrome)
|
|
103
|
+
Given a step passes
|
|
104
|
+
When another step passes
|
|
105
|
+
|
|
106
|
+
@only.with_browser=safari
|
|
107
|
+
Scenario: Bob (Run only with Web-Browser Safari)
|
|
108
|
+
Given some step passes
|
|
109
|
+
"""
|
|
110
|
+
When I run "behave -f plain features/e1.active_tags.feature"
|
|
111
|
+
Then it should pass with:
|
|
112
|
+
"""
|
|
113
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
114
|
+
2 steps passed, 0 failed, 1 skipped, 0 undefined
|
|
115
|
+
"""
|
|
116
|
+
And the command output should contain:
|
|
117
|
+
"""
|
|
118
|
+
ACTIVE-TAG DISABLED: Scenario Bob
|
|
119
|
+
"""
|
|
120
|
+
But the command output should not contain:
|
|
121
|
+
"""
|
|
122
|
+
ACTIVE-TAG DISABLED: Scenario Alice
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
Scenario: Use tag schema dialect1 with several categories
|
|
126
|
+
Given a file named "features/e2.active_tags.feature" with:
|
|
127
|
+
"""
|
|
128
|
+
Feature:
|
|
129
|
+
|
|
130
|
+
@active.with_webserver=apache
|
|
131
|
+
Scenario: Alice (Run only with Apache Web-Server)
|
|
132
|
+
Given a step passes
|
|
133
|
+
When another step passes
|
|
134
|
+
|
|
135
|
+
@active.with_browser=safari
|
|
136
|
+
Scenario: Bob (Run only with Safari Web-Browser)
|
|
137
|
+
Given another step passes
|
|
138
|
+
"""
|
|
139
|
+
When I run "behave -f plain -D browser=firefox features/e2.active_tags.feature"
|
|
140
|
+
Then it should pass with:
|
|
141
|
+
"""
|
|
142
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
143
|
+
2 steps passed, 0 failed, 1 skipped, 0 undefined
|
|
144
|
+
"""
|
|
145
|
+
And the command output should contain:
|
|
146
|
+
"""
|
|
147
|
+
ACTIVE-TAG DISABLED: Scenario Bob
|
|
148
|
+
"""
|
|
149
|
+
But the command output should not contain:
|
|
150
|
+
"""
|
|
151
|
+
ACTIVE-TAG DISABLED: Scenario Alice
|
|
152
|
+
"""
|
|
153
|
+
|
|
154
|
+
Scenario Outline: Use active tags with positive and negative logic: <browser>
|
|
155
|
+
Given a file named "features/e3.active_tags.feature" with:
|
|
156
|
+
"""
|
|
157
|
+
Feature:
|
|
158
|
+
|
|
159
|
+
@active.with_browser=chrome
|
|
160
|
+
Scenario: Alice
|
|
161
|
+
Given a step passes
|
|
162
|
+
When another step passes
|
|
163
|
+
|
|
164
|
+
@not_active.with_browser=opera
|
|
165
|
+
Scenario: Bob
|
|
166
|
+
Given another step passes
|
|
167
|
+
|
|
168
|
+
@use.with_browser=safari
|
|
169
|
+
Scenario: Charly
|
|
170
|
+
Given some step passes
|
|
171
|
+
"""
|
|
172
|
+
When I run "behave -f plain -D browser=<browser> features/e3.active_tags.feature"
|
|
173
|
+
Then it should pass with:
|
|
174
|
+
"""
|
|
175
|
+
ACTIVE-TAG DISABLED: Scenario <disabled scenario>
|
|
176
|
+
"""
|
|
177
|
+
And the command output should not contain:
|
|
178
|
+
"""
|
|
179
|
+
ACTIVE-TAG DISABLED: Scenario <enabled scenario>
|
|
180
|
+
"""
|
|
181
|
+
And note that "<comment>"
|
|
182
|
+
|
|
183
|
+
Examples:
|
|
184
|
+
| browser | enabled scenario | disabled scenario | comment |
|
|
185
|
+
| chrome | Alice | Charly | Bob is also enabled |
|
|
186
|
+
| firefox | Bob | Alice | Charly is also disabled |
|
|
187
|
+
| safari | Charly | Alice | Bob is also enabled |
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
Scenario: Tag logic with one active tag
|
|
191
|
+
Given I setup the current values for active tags with:
|
|
192
|
+
| category | value |
|
|
193
|
+
| foo | xxx |
|
|
194
|
+
Then the following active tag combinations are enabled:
|
|
195
|
+
| tags | enabled? |
|
|
196
|
+
| @active.with_foo=xxx | yes |
|
|
197
|
+
| @active.with_foo=other | no |
|
|
198
|
+
| @not_active.with_foo=xxx | no |
|
|
199
|
+
| @not_active.with_foo=other | yes |
|
|
200
|
+
And the following active tag combinations are enabled:
|
|
201
|
+
| tags | enabled? |
|
|
202
|
+
| @use.with_foo=xxx | yes |
|
|
203
|
+
| @use.with_foo=other | no |
|
|
204
|
+
| @only.with_foo=xxx | yes |
|
|
205
|
+
| @only.with_foo=other | no |
|
|
206
|
+
| @not.with_foo=xxx | no |
|
|
207
|
+
| @not.with_foo=other | yes |
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
Scenario: Tag logic with two active tags
|
|
211
|
+
Given I setup the current values for active tags with:
|
|
212
|
+
| category | value |
|
|
213
|
+
| foo | xxx |
|
|
214
|
+
| bar | zzz |
|
|
215
|
+
Then the following active tag combinations are enabled:
|
|
216
|
+
| tags | enabled? |
|
|
217
|
+
| @use.with_foo=xxx @use.with_bar=zzz | yes |
|
|
218
|
+
| @use.with_foo=xxx @use.with_bar=other | no |
|
|
219
|
+
| @use.with_foo=other @use.with_bar=zzz | no |
|
|
220
|
+
| @use.with_foo=other @use.with_bar=other | no |
|
|
221
|
+
| @not.with_foo=xxx @use.with_bar=zzz | no |
|
|
222
|
+
| @not.with_foo=xxx @use.with_bar=other | no |
|
|
223
|
+
| @not.with_foo=other @use.with_bar=zzz | yes |
|
|
224
|
+
| @not.with_foo=other @use.with_bar=other | no |
|
|
225
|
+
| @use.with_foo=xxx @not.with_bar=zzz | no |
|
|
226
|
+
| @use.with_foo=xxx @not.with_bar=other | yes |
|
|
227
|
+
| @use.with_foo=other @not.with_bar=zzz | no |
|
|
228
|
+
| @use.with_foo=other @not.with_bar=other | no |
|
|
229
|
+
| @not.with_foo=xxx @not.with_bar=zzz | no |
|
|
230
|
+
| @not.with_foo=xxx @not.with_bar=other | no |
|
|
231
|
+
| @not.with_foo=other @not.with_bar=zzz | no |
|
|
232
|
+
| @not.with_foo=other @not.with_bar=other | yes |
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
Scenario: Tag logic with two active tags of same category
|
|
236
|
+
Given I setup the current values for active tags with:
|
|
237
|
+
| category | value |
|
|
238
|
+
| foo | xxx |
|
|
239
|
+
Then the following active tag combinations are enabled:
|
|
240
|
+
| tags | enabled? | Comment |
|
|
241
|
+
| @use.with_foo=xxx @use.with_foo=other | yes | Enabled: tag1 |
|
|
242
|
+
| @use.with_foo=xxx @not.with_foo=other | yes | Enabled: tag1, tag2|
|
|
243
|
+
| @use.with_foo=xxx @not.with_foo=xxx | yes | Enabled: tag1 (BAD-SPEC) |
|
|
244
|
+
| @use.with_foo=other @not.with_foo=xxx | no | Enabled: none |
|
|
245
|
+
| @not.with_foo=other @not.with_foo=xxx | yes | Enabled: tag1 |
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
Scenario: Tag logic with unknown categories (case: ignored)
|
|
249
|
+
|
|
250
|
+
Unknown categories (where a value is missing) are ignored by default.
|
|
251
|
+
Therefore, the active tag that uses an unknown category acts
|
|
252
|
+
as if it is always enabled (even in the negated case).
|
|
253
|
+
|
|
254
|
+
Given I setup the current values for active tags with:
|
|
255
|
+
| category | value |
|
|
256
|
+
| foo | xxx |
|
|
257
|
+
When unknown categories are ignored in active tags
|
|
258
|
+
Then the following active tag combinations are enabled:
|
|
259
|
+
| tags | enabled? |
|
|
260
|
+
| @use.with_unknown=xxx | yes |
|
|
261
|
+
| @use.with_unknown=zzz | yes |
|
|
262
|
+
| @not.with_unknown=xxx | yes |
|
|
263
|
+
| @not.with_unknown=zzz | yes |
|
|
264
|
+
But note that "the active tag with the unknown category acts like a passive tag"
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
Scenario: Tag logic with unknown categories (case: not ignored)
|
|
268
|
+
|
|
269
|
+
If unknown categories are not ignored, then the active tag is disabled.
|
|
270
|
+
|
|
271
|
+
Given I setup the current values for active tags with:
|
|
272
|
+
| category | value |
|
|
273
|
+
| foo | xxx |
|
|
274
|
+
When unknown categories are not ignored in active tags
|
|
275
|
+
Then the following active tag combinations are enabled:
|
|
276
|
+
| tags | enabled? |
|
|
277
|
+
| @use.with_unknown=xxx | no |
|
|
278
|
+
| @use.with_unknown=zzz | no |
|
|
279
|
+
| @not.with_unknown=xxx | yes |
|
|
280
|
+
| @not.with_unknown=zzz | yes |
|
|
281
|
+
But note that "the active tag with the unknown category is disabled"
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
Scenario: ScenarioOutline with enabled active-tag is executed
|
|
285
|
+
Given a file named "features/outline1.active_tags.feature" with:
|
|
286
|
+
"""
|
|
287
|
+
Feature:
|
|
288
|
+
|
|
289
|
+
@use.with_browser=chrome
|
|
290
|
+
Scenario Outline: Alice -- <name>, <language>
|
|
291
|
+
Given a step passes
|
|
292
|
+
But note that "<name> can speak <language>"
|
|
293
|
+
|
|
294
|
+
Examples:
|
|
295
|
+
| name | language |
|
|
296
|
+
| Anna | German |
|
|
297
|
+
| Arabella | English |
|
|
298
|
+
"""
|
|
299
|
+
When I run "behave -D browser=chrome features/outline1.active_tags.feature"
|
|
300
|
+
Then it should pass with:
|
|
301
|
+
"""
|
|
302
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
303
|
+
4 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
304
|
+
"""
|
|
305
|
+
And the command output should contain:
|
|
306
|
+
"""
|
|
307
|
+
@use.with_browser=chrome
|
|
308
|
+
Scenario Outline: Alice -- Anna, German -- @1.1 # features/outline1.active_tags.feature:10
|
|
309
|
+
Given a step passes # features/steps/pass_steps.py:3
|
|
310
|
+
But note that "Anna can speak German" # ../behave4cmd0/note_steps.py:15
|
|
311
|
+
|
|
312
|
+
@use.with_browser=chrome
|
|
313
|
+
Scenario Outline: Alice -- Arabella, English -- @1.2 # features/outline1.active_tags.feature:11
|
|
314
|
+
Given a step passes # features/steps/pass_steps.py:3
|
|
315
|
+
But note that "Arabella can speak English" # ../behave4cmd0/note_steps.py:15
|
|
316
|
+
"""
|
|
317
|
+
And the command output should not contain "ACTIVE-TAG DISABLED: Scenario Alice"
|
|
318
|
+
But note that "we check now that tags for example rows are generated correctly"
|
|
319
|
+
And the command output should not contain "@use.with_browserchrome"
|
|
320
|
+
But the command output should contain "@use.with_browser=chrome"
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
Scenario: ScenarioOutline with disabled active-tag is skipped
|
|
324
|
+
Given a file named "features/outline2.active_tags.feature" with:
|
|
325
|
+
"""
|
|
326
|
+
Feature:
|
|
327
|
+
|
|
328
|
+
@use.with_browser=chrome
|
|
329
|
+
Scenario Outline: Bob -- <name>, <language>
|
|
330
|
+
Given some step passes
|
|
331
|
+
But note that "<name> can speak <language>"
|
|
332
|
+
|
|
333
|
+
Examples:
|
|
334
|
+
| name | language |
|
|
335
|
+
| Bernhard | French |
|
|
336
|
+
"""
|
|
337
|
+
When I run "behave -D browser=other features/outline2.active_tags.feature"
|
|
338
|
+
Then it should pass with:
|
|
339
|
+
"""
|
|
340
|
+
0 scenarios passed, 0 failed, 1 skipped
|
|
341
|
+
0 steps passed, 0 failed, 2 skipped, 0 undefined
|
|
342
|
+
"""
|
|
343
|
+
And the command output should contain:
|
|
344
|
+
"""
|
|
345
|
+
ACTIVE-TAG DISABLED: Scenario Bob -- Bernhard, French -- @1.1
|
|
346
|
+
"""
|
|
347
|
+
|
|
348
|
+
Scenario: ScenarioOutline with generated active-tag
|
|
349
|
+
Given a file named "features/outline3.active_tags.feature" with:
|
|
350
|
+
"""
|
|
351
|
+
Feature:
|
|
352
|
+
|
|
353
|
+
@use.with_browser=<browser>
|
|
354
|
+
Scenario Outline: Charly -- <name>, <language>, <browser>
|
|
355
|
+
Given a step passes
|
|
356
|
+
But note that "<name> can speak <language>"
|
|
357
|
+
|
|
358
|
+
Examples:
|
|
359
|
+
| name | language | browser | Comment |
|
|
360
|
+
| Anna | German | firefox | Should be skipped when browser=chrome |
|
|
361
|
+
| Arabella | English | chrome | Should be executed when browser=chrome |
|
|
362
|
+
"""
|
|
363
|
+
When I run "behave -D browser=chrome features/outline3.active_tags.feature"
|
|
364
|
+
Then it should pass with:
|
|
365
|
+
"""
|
|
366
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
367
|
+
2 steps passed, 0 failed, 2 skipped, 0 undefined
|
|
368
|
+
"""
|
|
369
|
+
And the command output should contain:
|
|
370
|
+
"""
|
|
371
|
+
ACTIVE-TAG DISABLED: Scenario Charly -- Anna, German, firefox -- @1.1
|
|
372
|
+
"""
|
|
373
|
+
And the command output should not contain:
|
|
374
|
+
"""
|
|
375
|
+
ACTIVE-TAG DISABLED: Scenario Charly -- Arabella, English, chrome -- @1.2
|
|
376
|
+
"""
|
|
377
|
+
And the command output should contain:
|
|
378
|
+
"""
|
|
379
|
+
ACTIVE-TAG DISABLED: Scenario Charly -- Anna, German, firefox -- @1.1
|
|
380
|
+
|
|
381
|
+
@use.with_browser=chrome
|
|
382
|
+
Scenario Outline: Charly -- Arabella, English, chrome -- @1.2 # features/outline3.active_tags.feature:11
|
|
383
|
+
Given a step passes # features/steps/pass_steps.py:3
|
|
384
|
+
But note that "Arabella can speak English" # ../behave4cmd0/note_steps.py:15
|
|
385
|
+
"""
|