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,168 @@
|
|
|
1
|
+
Feature: Setup logging_level
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want to configure the logging_level for --logcapture mode
|
|
5
|
+
So that I see only the important log-records when a scenario fails.
|
|
6
|
+
|
|
7
|
+
As a tester
|
|
8
|
+
I want to configure the logging_level for --nologcapture mode
|
|
9
|
+
So that I see only the important log-records up to this level.
|
|
10
|
+
|
|
11
|
+
. SPECIFICATION:
|
|
12
|
+
. * logging_level can be defined on command-line
|
|
13
|
+
. * logging_level can be defined in behave configuration file
|
|
14
|
+
. * logging_level should be applied in before_all() hook in --nologcapture mode
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@setup
|
|
18
|
+
Scenario: Feature Setup
|
|
19
|
+
Given a new working directory
|
|
20
|
+
And a file named "features/steps/use_behave4cmd_steps.py" with:
|
|
21
|
+
"""
|
|
22
|
+
import behave4cmd0.log.steps
|
|
23
|
+
import behave4cmd0.failing_steps
|
|
24
|
+
import behave4cmd0.passing_steps
|
|
25
|
+
"""
|
|
26
|
+
And a file named "features/environment.py" with:
|
|
27
|
+
"""
|
|
28
|
+
def before_all(context):
|
|
29
|
+
context.config.setup_logging()
|
|
30
|
+
"""
|
|
31
|
+
And a file named "features/example.log_with_failure.feature" with:
|
|
32
|
+
"""
|
|
33
|
+
Feature:
|
|
34
|
+
Scenario: S1
|
|
35
|
+
Given I create log records with:
|
|
36
|
+
| category | level | message |
|
|
37
|
+
| root | ERROR | Hello1 log-error-record |
|
|
38
|
+
| root | WARN | Hello1 log-warn-record |
|
|
39
|
+
| root | INFO | Hello1 log-info-record |
|
|
40
|
+
| root | DEBUG | Hello1 log-debug-record |
|
|
41
|
+
When a step fails
|
|
42
|
+
"""
|
|
43
|
+
And a file named "features/example.log_with_pass.feature" with:
|
|
44
|
+
"""
|
|
45
|
+
Feature:
|
|
46
|
+
Scenario: S2
|
|
47
|
+
Given I create log records with:
|
|
48
|
+
| category | level | message |
|
|
49
|
+
| root | ERROR | Hello2 log-error-record |
|
|
50
|
+
| root | WARN | Hello2 log-warn-record |
|
|
51
|
+
| root | INFO | Hello2 log-info-record |
|
|
52
|
+
| root | DEBUG | Hello2 log-debug-record |
|
|
53
|
+
When a step passes
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
@capture
|
|
57
|
+
Scenario: Logcapture mode: Use logging_level on command-line
|
|
58
|
+
|
|
59
|
+
Also ensure that command-line option can override configuration file info.
|
|
60
|
+
|
|
61
|
+
Given a file named "behave.ini" with:
|
|
62
|
+
"""
|
|
63
|
+
[behave]
|
|
64
|
+
logging_level = INFO
|
|
65
|
+
"""
|
|
66
|
+
When I run "behave -f plain -T --logging-level=WARN features/"
|
|
67
|
+
Then it should fail with:
|
|
68
|
+
"""
|
|
69
|
+
1 scenario passed, 1 failed, 0 skipped
|
|
70
|
+
3 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
71
|
+
"""
|
|
72
|
+
And the command output should contain:
|
|
73
|
+
"""
|
|
74
|
+
Captured logging:
|
|
75
|
+
ERROR:root:Hello1 log-error-record
|
|
76
|
+
WARNING:root:Hello1 log-warn-record
|
|
77
|
+
"""
|
|
78
|
+
But the command output should not contain the following log records:
|
|
79
|
+
| category | level | message | Comment |
|
|
80
|
+
| root | INFO | Hello1 log-info-record | Log-level too low |
|
|
81
|
+
| root | DEBUG | Hello1 log-debug-record | Log-level too low |
|
|
82
|
+
| root | ERROR | Hello2 log-error-record | Scenario passes, capture log is suppressed |
|
|
83
|
+
| root | WARN | Hello2 log-warn-record | Scenario passes, capture log is suppressed |
|
|
84
|
+
| root | INFO | Hello2 log-info-record | Scenario passes, capture log is suppressed |
|
|
85
|
+
| root | DEBUG | Hello2 log-debug-record | Scenario passes, capture log is suppressed |
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
@capture
|
|
89
|
+
Scenario: Logcapture mode: Use logging_level in configuration file
|
|
90
|
+
Given a file named "behave.ini" with:
|
|
91
|
+
"""
|
|
92
|
+
[behave]
|
|
93
|
+
logging_level = ERROR
|
|
94
|
+
"""
|
|
95
|
+
When I run "behave -f plain -T features/"
|
|
96
|
+
Then it should fail with:
|
|
97
|
+
"""
|
|
98
|
+
1 scenario passed, 1 failed, 0 skipped
|
|
99
|
+
3 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
100
|
+
"""
|
|
101
|
+
And the command output should contain:
|
|
102
|
+
"""
|
|
103
|
+
Captured logging:
|
|
104
|
+
ERROR:root:Hello1 log-error-record
|
|
105
|
+
"""
|
|
106
|
+
But the command output should not contain the following log records:
|
|
107
|
+
| category | level | message | Comment |
|
|
108
|
+
| root | WARN | Hello1 log-warn-record | Log-level too low |
|
|
109
|
+
| root | INFO | Hello1 log-info-record | Log-level too low |
|
|
110
|
+
| root | DEBUG | Hello1 log-debug-record | Log-level too low |
|
|
111
|
+
| root | ERROR | Hello2 log-error-record | Scenario passes |
|
|
112
|
+
| root | WARN | Hello2 log-warn-record | Scenario passes |
|
|
113
|
+
| root | INFO | Hello2 log-info-record | Scenario passes |
|
|
114
|
+
| root | DEBUG | Hello2 log-debug-record | Scenario passes |
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
@no_capture
|
|
118
|
+
Scenario: Normal mode: Use logging_level on command-line
|
|
119
|
+
Given a file named "behave.ini" with:
|
|
120
|
+
"""
|
|
121
|
+
[behave]
|
|
122
|
+
logging_level = INFO
|
|
123
|
+
"""
|
|
124
|
+
When I run "behave -f plain -T --logging-level=WARN --no-logcapture features/"
|
|
125
|
+
Then it should fail with:
|
|
126
|
+
"""
|
|
127
|
+
1 scenario passed, 1 failed, 0 skipped
|
|
128
|
+
3 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
129
|
+
"""
|
|
130
|
+
And the command output should contain the following log records:
|
|
131
|
+
| category | level | message |
|
|
132
|
+
| root | ERROR | Hello1 log-error-record |
|
|
133
|
+
| root | WARN | Hello1 log-warn-record |
|
|
134
|
+
| root | ERROR | Hello2 log-error-record |
|
|
135
|
+
| root | WARN | Hello2 log-warn-record |
|
|
136
|
+
But the command output should not contain the following log records:
|
|
137
|
+
| category | level | message | Comment |
|
|
138
|
+
| root | INFO | Hello1 log-info-record | Log-level too low |
|
|
139
|
+
| root | DEBUG | Hello1 log-debug-record | Same reason |
|
|
140
|
+
| root | INFO | Hello2 log-info-record | Same reason |
|
|
141
|
+
| root | DEBUG | Hello2 log-debug-record | Same reason |
|
|
142
|
+
|
|
143
|
+
@no_capture
|
|
144
|
+
Scenario: Normal mode: Use logging_level in configuration file
|
|
145
|
+
Given a file named "behave.ini" with:
|
|
146
|
+
"""
|
|
147
|
+
[behave]
|
|
148
|
+
log_capture = false
|
|
149
|
+
logging_level = ERROR
|
|
150
|
+
"""
|
|
151
|
+
When I run "behave -f plain -T features/"
|
|
152
|
+
Then it should fail with:
|
|
153
|
+
"""
|
|
154
|
+
1 scenario passed, 1 failed, 0 skipped
|
|
155
|
+
3 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
156
|
+
"""
|
|
157
|
+
And the command output should contain the following log records:
|
|
158
|
+
| category | level | message |
|
|
159
|
+
| root | ERROR | Hello1 log-error-record |
|
|
160
|
+
| root | ERROR | Hello2 log-error-record |
|
|
161
|
+
But the command output should not contain the following log records:
|
|
162
|
+
| category | level | message | Comment |
|
|
163
|
+
| root | WARN | Hello1 log-warn-record | Log-level too low |
|
|
164
|
+
| root | INFO | Hello1 log-info-record | Same reason |
|
|
165
|
+
| root | DEBUG | Hello1 log-debug-record | Same reason |
|
|
166
|
+
| root | WARN | Hello2 log-warn-record | Same reason |
|
|
167
|
+
| root | INFO | Hello2 log-info-record | Same reason |
|
|
168
|
+
| root | DEBUG | Hello2 log-debug-record | Same reason |
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
Feature: Setup logging subsystem by using a logging configfile
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want to setup the logging subsystem by using a configfile
|
|
5
|
+
To be more flexible even in complex situations
|
|
6
|
+
|
|
7
|
+
@setup
|
|
8
|
+
Scenario: Feature setup
|
|
9
|
+
Given a new working directory
|
|
10
|
+
And a file named "features/steps/use_behave4cmd_steps.py" with:
|
|
11
|
+
"""
|
|
12
|
+
import behave4cmd0.log.steps
|
|
13
|
+
import behave4cmd0.failing_steps
|
|
14
|
+
import behave4cmd0.passing_steps
|
|
15
|
+
"""
|
|
16
|
+
And a file named "features/example.log_and_pass.feature" with:
|
|
17
|
+
"""
|
|
18
|
+
Feature:
|
|
19
|
+
Scenario: Passing
|
|
20
|
+
Given I create log records with:
|
|
21
|
+
| category | level | message |
|
|
22
|
+
| root | FATAL | Hello Alice |
|
|
23
|
+
| foo | ERROR | Hello Bob |
|
|
24
|
+
| foo.bar | WARN | Hello Charly |
|
|
25
|
+
| bar | INFO | Hello Dora |
|
|
26
|
+
| baz | DEBUG | Hello Emily |
|
|
27
|
+
And another step passes
|
|
28
|
+
"""
|
|
29
|
+
And a file named "features/example.log_and_fail.feature" with:
|
|
30
|
+
"""
|
|
31
|
+
Feature:
|
|
32
|
+
Scenario: Failing
|
|
33
|
+
Given I create log records with:
|
|
34
|
+
| category | level | message |
|
|
35
|
+
| root | FATAL | Hello Alice |
|
|
36
|
+
| foo | ERROR | Hello Bob |
|
|
37
|
+
| foo.bar | WARN | Hello Charly |
|
|
38
|
+
| bar | INFO | Hello Dora |
|
|
39
|
+
| baz | DEBUG | Hello Emily |
|
|
40
|
+
And another step fails
|
|
41
|
+
"""
|
|
42
|
+
And a file named "behave.ini" with:
|
|
43
|
+
"""
|
|
44
|
+
[behave]
|
|
45
|
+
log_capture = false
|
|
46
|
+
logging_level = DEBUG
|
|
47
|
+
logging_format = LOG.%(levelname)-8s %(name)-10s: %(message)s
|
|
48
|
+
"""
|
|
49
|
+
And a file named "behave_logging.ini" with:
|
|
50
|
+
"""
|
|
51
|
+
[loggers]
|
|
52
|
+
keys=root
|
|
53
|
+
|
|
54
|
+
[handlers]
|
|
55
|
+
keys=Console,File
|
|
56
|
+
|
|
57
|
+
[formatters]
|
|
58
|
+
keys=Brief
|
|
59
|
+
|
|
60
|
+
[logger_root]
|
|
61
|
+
level = NOTSET
|
|
62
|
+
handlers = File
|
|
63
|
+
# handlers = Console,File
|
|
64
|
+
|
|
65
|
+
[handler_File]
|
|
66
|
+
class=FileHandler
|
|
67
|
+
args=("behave.log", 'w')
|
|
68
|
+
level=NOTSET
|
|
69
|
+
formatter=Brief
|
|
70
|
+
|
|
71
|
+
[handler_Console]
|
|
72
|
+
class=StreamHandler
|
|
73
|
+
args=(sys.stderr,)
|
|
74
|
+
level=NOTSET
|
|
75
|
+
formatter=Brief
|
|
76
|
+
|
|
77
|
+
[formatter_Brief]
|
|
78
|
+
format= LOG.%(levelname)-8s %(name)-10s: %(message)s
|
|
79
|
+
datefmt=
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
Scenario: Setup logging subsystem via environment (case: logging mode)
|
|
83
|
+
Given a file named "features/environment.py" with:
|
|
84
|
+
"""
|
|
85
|
+
def before_all(context):
|
|
86
|
+
context.config.setup_logging(configfile="behave_logging.ini")
|
|
87
|
+
"""
|
|
88
|
+
And I use the log record configuration:
|
|
89
|
+
| property | value |
|
|
90
|
+
| format | LOG.%(levelname)-8s %(name)-10s: %(message)s |
|
|
91
|
+
When I run "behave -f plain features/example.log_and_pass.feature"
|
|
92
|
+
Then it should pass
|
|
93
|
+
And the file "behave.log" should contain the log records:
|
|
94
|
+
| category | level | message |
|
|
95
|
+
| root | FATAL | Hello Alice |
|
|
96
|
+
| foo | ERROR | Hello Bob |
|
|
97
|
+
| foo.bar | WARN | Hello Charly |
|
|
98
|
+
| bar | INFO | Hello Dora |
|
|
99
|
+
| baz | DEBUG | Hello Emily |
|
|
100
|
+
And the command output should not contain the following log records:
|
|
101
|
+
| category | level | message |
|
|
102
|
+
| root | FATAL | Hello Alice |
|
|
103
|
+
| foo | ERROR | Hello Bob |
|
|
104
|
+
| foo.bar | WARN | Hello Charly |
|
|
105
|
+
| bar | INFO | Hello Dora |
|
|
106
|
+
| baz | DEBUG | Hello Emily |
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
Scenario: Setup logging subsystem via environment (case: log-capture mode)
|
|
110
|
+
Given a file named "features/environment.py" with:
|
|
111
|
+
"""
|
|
112
|
+
def before_all(context):
|
|
113
|
+
context.config.setup_logging(configfile="behave_logging.ini")
|
|
114
|
+
"""
|
|
115
|
+
And I use the log record configuration:
|
|
116
|
+
| property | value |
|
|
117
|
+
| format | LOG.%(levelname)-8s %(name)-10s: %(message)s |
|
|
118
|
+
When I run "behave -f plain --logcapture features/example.log_and_fail.feature"
|
|
119
|
+
Then it should fail with:
|
|
120
|
+
"""
|
|
121
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
122
|
+
1 step passed, 1 failed, 0 skipped, 0 undefined
|
|
123
|
+
"""
|
|
124
|
+
And the file "behave.log" should contain the log records:
|
|
125
|
+
| category | level | message |
|
|
126
|
+
| root | FATAL | Hello Alice |
|
|
127
|
+
| foo | ERROR | Hello Bob |
|
|
128
|
+
| foo.bar | WARN | Hello Charly |
|
|
129
|
+
| bar | INFO | Hello Dora |
|
|
130
|
+
| baz | DEBUG | Hello Emily |
|
|
131
|
+
And the command output should contain the following log records:
|
|
132
|
+
| category | level | message |
|
|
133
|
+
| root | FATAL | Hello Alice |
|
|
134
|
+
| foo | ERROR | Hello Bob |
|
|
135
|
+
| foo.bar | WARN | Hello Charly |
|
|
136
|
+
| bar | INFO | Hello Dora |
|
|
137
|
+
| baz | DEBUG | Hello Emily |
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
Feature: Ensure that BAD/SAD Use cases of Background are detected
|
|
2
|
+
|
|
3
|
+
To improve diagnostics when parser failures occur
|
|
4
|
+
As a test writer
|
|
5
|
+
I expect reasonable explanations what went wrong.
|
|
6
|
+
|
|
7
|
+
@setup
|
|
8
|
+
Scenario: Feature Setup
|
|
9
|
+
Given a new working directory
|
|
10
|
+
And a file named "features/steps/passing_steps.py" with
|
|
11
|
+
"""
|
|
12
|
+
from behave import step
|
|
13
|
+
|
|
14
|
+
@step('a step passes')
|
|
15
|
+
def step_passes(context):
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
@step('a step passes with "{text}"')
|
|
19
|
+
def step_passes(context, text):
|
|
20
|
+
pass
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
Scenario: Background with tags is not supported
|
|
25
|
+
Given a file named "features/syndrome.background_with_tags.feature" with
|
|
26
|
+
"""
|
|
27
|
+
Feature: Ensure this fails
|
|
28
|
+
|
|
29
|
+
@tags_are @not_supported @here
|
|
30
|
+
Background: Oops...
|
|
31
|
+
Given a step passes
|
|
32
|
+
|
|
33
|
+
Scenario: More...
|
|
34
|
+
Given a step passes
|
|
35
|
+
"""
|
|
36
|
+
When I run "behave -f plain -T features/syndrome.background_with_tags.feature"
|
|
37
|
+
Then it should fail with
|
|
38
|
+
"""
|
|
39
|
+
Failed to parse "{__WORKDIR__}/features/syndrome.background_with_tags.feature":
|
|
40
|
+
Parser failure in state taggable_statement, at line 4: "Background: Oops..."
|
|
41
|
+
REASON: Background does not support tags.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
Scenario: Background should not occur after a Scenario
|
|
46
|
+
Given a file named "features/syndrome.background_after_scenario.feature" with
|
|
47
|
+
"""
|
|
48
|
+
Feature: Ensure this fails1
|
|
49
|
+
|
|
50
|
+
Scenario: One...
|
|
51
|
+
Given a step passes
|
|
52
|
+
|
|
53
|
+
Background: Oops, too late (after Scenario)
|
|
54
|
+
When a step passes
|
|
55
|
+
"""
|
|
56
|
+
When I run "behave -f plain -T features/syndrome.background_after_scenario.feature"
|
|
57
|
+
Then it should fail with
|
|
58
|
+
"""
|
|
59
|
+
Failed to parse "{__WORKDIR__}/features/syndrome.background_after_scenario.feature":
|
|
60
|
+
Parser failure in state steps, at line 6: "Background: Oops, too late (after Scenario)"
|
|
61
|
+
REASON: Background may not occur after Scenario/ScenarioOutline.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
Scenario: Tagged Background should not occur after a Scenario
|
|
66
|
+
Given a file named "features/syndrome.tagged_background_after_scenario.feature" with
|
|
67
|
+
"""
|
|
68
|
+
Feature: Ensure this fails1
|
|
69
|
+
|
|
70
|
+
Scenario: One...
|
|
71
|
+
Given a step passes
|
|
72
|
+
|
|
73
|
+
@tags_are @not_supported @here
|
|
74
|
+
Background: Oops, too late (after Scenario)
|
|
75
|
+
When a step passes
|
|
76
|
+
"""
|
|
77
|
+
When I run "behave -f plain -T features/syndrome.tagged_background_after_scenario.feature"
|
|
78
|
+
Then it should fail with
|
|
79
|
+
"""
|
|
80
|
+
Parser failure in state taggable_statement, at line 7: "Background: Oops, too late (after Scenario)"
|
|
81
|
+
REASON: Background may not occur after Scenario/ScenarioOutline.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
Scenario: Background should not occur after a Scenario Outline
|
|
86
|
+
Given a file named "features/syndrome.background_after_scenario_outline.feature" with
|
|
87
|
+
"""
|
|
88
|
+
Feature: Ensure this fails3
|
|
89
|
+
|
|
90
|
+
Scenario Outline: Two...
|
|
91
|
+
Given a step passes with "<name>"
|
|
92
|
+
|
|
93
|
+
Examples:
|
|
94
|
+
| name |
|
|
95
|
+
| Alice |
|
|
96
|
+
|
|
97
|
+
Background: Oops, too late (after Scenario Outline)
|
|
98
|
+
When a step passes
|
|
99
|
+
"""
|
|
100
|
+
When I run "behave -f plain -T features/syndrome.background_after_scenario_outline.feature"
|
|
101
|
+
Then it should fail with
|
|
102
|
+
"""
|
|
103
|
+
Parser failure in state steps, at line 10: "Background: Oops, too late (after Scenario Outline)"
|
|
104
|
+
REASON: Background may not occur after Scenario/ScenarioOutline.
|
|
105
|
+
"""
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
Scenario: Tagged Background should not occur after a Scenario Outline
|
|
109
|
+
Given a file named "features/syndrome.background_after_scenario_outline.feature" with
|
|
110
|
+
"""
|
|
111
|
+
Feature: Ensure this fails4
|
|
112
|
+
|
|
113
|
+
Scenario Outline: Two...
|
|
114
|
+
Given a step passes with "<name>"
|
|
115
|
+
|
|
116
|
+
Examples:
|
|
117
|
+
| name |
|
|
118
|
+
| Alice |
|
|
119
|
+
|
|
120
|
+
@tags_are @not_supported @here
|
|
121
|
+
Background: Oops, too late (after Scenario Outline)
|
|
122
|
+
When a step passes
|
|
123
|
+
"""
|
|
124
|
+
When I run "behave -f plain -T features/syndrome.background_after_scenario_outline.feature"
|
|
125
|
+
Then it should fail with
|
|
126
|
+
"""
|
|
127
|
+
Parser failure in state taggable_statement, at line 11: "Background: Oops, too late (after Scenario Outline)"
|
|
128
|
+
REASON: Background may not occur after Scenario/ScenarioOutline.
|
|
129
|
+
"""
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
Feature: Parsing a Feature File without a Feature or with several Features
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@setup
|
|
5
|
+
Scenario: Feature Setup
|
|
6
|
+
Given a new working directory
|
|
7
|
+
And an empty file named "features/steps/empty_steps.py"
|
|
8
|
+
And a file named "features/steps/passing_steps.py" with:
|
|
9
|
+
"""
|
|
10
|
+
from behave import step
|
|
11
|
+
|
|
12
|
+
@step('a step passes')
|
|
13
|
+
def step_passes(context):
|
|
14
|
+
pass
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
@no_feature
|
|
18
|
+
Scenario: Empty Feature File
|
|
19
|
+
Given an empty file named "features/empty.feature"
|
|
20
|
+
When I run "behave -f plain features/empty.feature"
|
|
21
|
+
Then it should pass with:
|
|
22
|
+
"""
|
|
23
|
+
0 features passed, 0 failed, 0 skipped
|
|
24
|
+
0 scenarios passed, 0 failed, 0 skipped
|
|
25
|
+
0 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@no_feature
|
|
30
|
+
Scenario: Feature File without Feature, only with Comments
|
|
31
|
+
Given a file named "features/only_comments.feature" with:
|
|
32
|
+
"""
|
|
33
|
+
# COMMENT: Comment starts at begin of line.
|
|
34
|
+
# INDENTED-COMMENT: Comment starts after some whitespace.
|
|
35
|
+
"""
|
|
36
|
+
When I run "behave -f plain features/only_comments.feature"
|
|
37
|
+
Then it should pass with:
|
|
38
|
+
"""
|
|
39
|
+
0 features passed, 0 failed, 0 skipped
|
|
40
|
+
0 scenarios passed, 0 failed, 0 skipped
|
|
41
|
+
0 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@no_feature
|
|
46
|
+
Scenario: Feature File without Feature, only with Empty Lines
|
|
47
|
+
Given a file named "features/only_empty_lines.feature" with:
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
"""
|
|
51
|
+
When I run "behave -f plain features/only_empty_lines.feature"
|
|
52
|
+
Then it should pass with:
|
|
53
|
+
"""
|
|
54
|
+
0 features passed, 0 failed, 0 skipped
|
|
55
|
+
0 scenarios passed, 0 failed, 0 skipped
|
|
56
|
+
0 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@no_feature
|
|
61
|
+
Scenario: Feature File without Feature, only with Tags
|
|
62
|
+
Given a file named "features/only_tags.feature" with:
|
|
63
|
+
"""
|
|
64
|
+
@weird
|
|
65
|
+
@no_feature
|
|
66
|
+
"""
|
|
67
|
+
When I run "behave -f plain features/only_tags.feature"
|
|
68
|
+
Then it should pass with:
|
|
69
|
+
"""
|
|
70
|
+
0 features passed, 0 failed, 0 skipped
|
|
71
|
+
0 scenarios passed, 0 failed, 0 skipped
|
|
72
|
+
0 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
@no_feature
|
|
76
|
+
@parser.with_parse_error
|
|
77
|
+
Scenario: Feature File with Text
|
|
78
|
+
Given a file named "features/only_text.feature" with:
|
|
79
|
+
"""
|
|
80
|
+
This File: Contains only text without keywords.
|
|
81
|
+
OOPS.
|
|
82
|
+
"""
|
|
83
|
+
When I run "behave -f plain features/only_text.feature"
|
|
84
|
+
Then it should fail with:
|
|
85
|
+
"""
|
|
86
|
+
Failed to parse "{__WORKDIR__}/features/only_text.feature":
|
|
87
|
+
Parser failure in state init, at line 1: "This File: Contains only text without keywords."
|
|
88
|
+
REASON: No feature found.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@no_feature
|
|
93
|
+
@parser.with_parse_error
|
|
94
|
+
Scenario: Feature File with Scenario, but without Feature keyword
|
|
95
|
+
Given a file named "features/naked_scenario_only.feature" with:
|
|
96
|
+
"""
|
|
97
|
+
Scenario:
|
|
98
|
+
Given a step passes
|
|
99
|
+
When a step passes
|
|
100
|
+
Then a step passes
|
|
101
|
+
"""
|
|
102
|
+
When I run "behave -f plain features/naked_scenario_only.feature"
|
|
103
|
+
Then it should fail with:
|
|
104
|
+
"""
|
|
105
|
+
Failed to parse "{__WORKDIR__}/features/naked_scenario_only.feature":
|
|
106
|
+
Parser failure in state init, at line 1: "Scenario:"
|
|
107
|
+
REASON: Scenario may not occur before Feature.
|
|
108
|
+
"""
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@many_features
|
|
112
|
+
@parser.with_parse_error
|
|
113
|
+
Scenario: Feature file with 2 features
|
|
114
|
+
|
|
115
|
+
NOTE: Gherkin parser supports only one feature per feature file.
|
|
116
|
+
|
|
117
|
+
Given a file named "features/steps/passing_steps.py" with:
|
|
118
|
+
"""
|
|
119
|
+
from behave import step
|
|
120
|
+
|
|
121
|
+
@step('a step passes')
|
|
122
|
+
def step_passes(context):
|
|
123
|
+
pass
|
|
124
|
+
"""
|
|
125
|
+
And a file named "features/two_features.feature" with:
|
|
126
|
+
"""
|
|
127
|
+
Feature: F1
|
|
128
|
+
Scenario: F1.1
|
|
129
|
+
Given a step passes
|
|
130
|
+
When a step passes
|
|
131
|
+
Then a step passes
|
|
132
|
+
|
|
133
|
+
Feature: F2
|
|
134
|
+
Scenario: F2.1
|
|
135
|
+
Given a step passes
|
|
136
|
+
Then a step passes
|
|
137
|
+
"""
|
|
138
|
+
When I run "behave -f plain features/two_features.feature"
|
|
139
|
+
Then it should fail with:
|
|
140
|
+
"""
|
|
141
|
+
Failed to parse "{__WORKDIR__}/features/two_features.feature":
|
|
142
|
+
Parser failure in state steps, at line 7: "Feature: F2"
|
|
143
|
+
REASON: Multiple features in one file are not supported.
|
|
144
|
+
"""
|