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,122 @@
|
|
|
1
|
+
@sequential
|
|
2
|
+
Feature: Runner should stop after first failure if --stop option is used
|
|
3
|
+
|
|
4
|
+
As a tester
|
|
5
|
+
To abort testing early (sometimes)
|
|
6
|
+
When the first failure occurs.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@setup
|
|
10
|
+
Scenario: Test Setup
|
|
11
|
+
Given a new working directory
|
|
12
|
+
And a file named "features/steps/steps.py" with:
|
|
13
|
+
"""
|
|
14
|
+
from behave import step
|
|
15
|
+
import sys
|
|
16
|
+
|
|
17
|
+
@step('a step passes')
|
|
18
|
+
def step_passes(context):
|
|
19
|
+
pass
|
|
20
|
+
|
|
21
|
+
@step('a step fails')
|
|
22
|
+
def step_fails(context):
|
|
23
|
+
assert False, "XFAIL"
|
|
24
|
+
"""
|
|
25
|
+
And a file named "features/alice_fails.feature" with:
|
|
26
|
+
"""
|
|
27
|
+
Feature: Alice
|
|
28
|
+
Scenario: A1
|
|
29
|
+
Given a step passes
|
|
30
|
+
When a step passes
|
|
31
|
+
Then a step passes
|
|
32
|
+
|
|
33
|
+
Scenario: A2 fails
|
|
34
|
+
Given a step passes
|
|
35
|
+
When a step fails
|
|
36
|
+
Then a step passes
|
|
37
|
+
|
|
38
|
+
Scenario: A3
|
|
39
|
+
Given a step passes
|
|
40
|
+
|
|
41
|
+
Scenario: A4 fails
|
|
42
|
+
Given a step fails
|
|
43
|
+
"""
|
|
44
|
+
And a file named "features/bob_passes.feature" with:
|
|
45
|
+
"""
|
|
46
|
+
Feature: Bob
|
|
47
|
+
Scenario: B1
|
|
48
|
+
Given a step passes
|
|
49
|
+
When a step passes
|
|
50
|
+
Then a step passes
|
|
51
|
+
|
|
52
|
+
Scenario: B2 fails
|
|
53
|
+
Given a step passes
|
|
54
|
+
When a step passes
|
|
55
|
+
Then a step passes
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
Scenario: Stop running after first failure with one feature
|
|
60
|
+
When I run "behave -f plain -T --stop features/alice_fails.feature"
|
|
61
|
+
Then it should fail with:
|
|
62
|
+
"""
|
|
63
|
+
Failing scenarios:
|
|
64
|
+
features/alice_fails.feature:7 A2 fails
|
|
65
|
+
|
|
66
|
+
0 features passed, 1 failed, 0 skipped
|
|
67
|
+
1 scenario passed, 1 failed, 0 skipped, 2 untested
|
|
68
|
+
4 steps passed, 1 failed, 1 skipped, 0 undefined, 2 untested
|
|
69
|
+
"""
|
|
70
|
+
And the command output should contain:
|
|
71
|
+
"""
|
|
72
|
+
Feature: Alice
|
|
73
|
+
Scenario: A1
|
|
74
|
+
Given a step passes ... passed
|
|
75
|
+
When a step passes ... passed
|
|
76
|
+
Then a step passes ... passed
|
|
77
|
+
|
|
78
|
+
Scenario: A2 fails
|
|
79
|
+
Given a step passes ... passed
|
|
80
|
+
When a step fails ... failed
|
|
81
|
+
Assertion Failed: XFAIL
|
|
82
|
+
"""
|
|
83
|
+
But the command output should not contain:
|
|
84
|
+
"""
|
|
85
|
+
Scenario: A3
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
Scenario: Stop running after first failure with several features (CASE 1)
|
|
89
|
+
When I run "behave -f plain -T --stop features/alice_fails.feature features/bob_passes.feature "
|
|
90
|
+
Then it should fail with:
|
|
91
|
+
"""
|
|
92
|
+
Failing scenarios:
|
|
93
|
+
features/alice_fails.feature:7 A2 fails
|
|
94
|
+
|
|
95
|
+
0 features passed, 1 failed, 0 skipped, 1 untested
|
|
96
|
+
1 scenario passed, 1 failed, 0 skipped, 4 untested
|
|
97
|
+
4 steps passed, 1 failed, 1 skipped, 0 undefined, 8 untested
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
Scenario: Stop running after first failure with several features (CASE 2: Different order)
|
|
101
|
+
When I run "behave -f plain -T --stop features/bob_passes.feature features/alice_fails.feature"
|
|
102
|
+
Then it should fail with:
|
|
103
|
+
"""
|
|
104
|
+
Failing scenarios:
|
|
105
|
+
features/alice_fails.feature:7 A2 fails
|
|
106
|
+
|
|
107
|
+
1 feature passed, 1 failed, 0 skipped
|
|
108
|
+
3 scenarios passed, 1 failed, 0 skipped, 2 untested
|
|
109
|
+
10 steps passed, 1 failed, 1 skipped, 0 undefined, 2 untested
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
Scenario: Stop running after first failure with several features (CASE 3: Use directory)
|
|
113
|
+
When I run "behave -f plain -T --stop features/"
|
|
114
|
+
Then it should fail with:
|
|
115
|
+
"""
|
|
116
|
+
Failing scenarios:
|
|
117
|
+
features/alice_fails.feature:7 A2 fails
|
|
118
|
+
|
|
119
|
+
0 features passed, 1 failed, 0 skipped, 1 untested
|
|
120
|
+
1 scenario passed, 1 failed, 0 skipped, 4 untested
|
|
121
|
+
4 steps passed, 1 failed, 1 skipped, 0 undefined, 8 untested
|
|
122
|
+
"""
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Feature: Runner Tag logic
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want to select scenarios using logical AND/OR of tags
|
|
5
|
+
In order to conveniently run subsets of these scenarios
|
|
6
|
+
|
|
7
|
+
. SPECIFICATION: Tag logic
|
|
8
|
+
. See "tag_expression.feature" description.
|
|
9
|
+
.
|
|
10
|
+
. RELATED:
|
|
11
|
+
. * tag_expression.feature
|
|
12
|
+
|
|
13
|
+
Scenario: Select scenarios with 1 tag (@foo)
|
|
14
|
+
Given a behave model with:
|
|
15
|
+
| statement | name | tags | Comment |
|
|
16
|
+
| Scenario | S0 | | Untagged |
|
|
17
|
+
| Scenario | S1 | @foo | With 1 tag |
|
|
18
|
+
| Scenario | S2 | @other | |
|
|
19
|
+
| Scenario | S3 | @foo @other | With 2 tags |
|
|
20
|
+
And note that "are all combinations of 0..2 tags"
|
|
21
|
+
When I run the behave model with "tags"
|
|
22
|
+
Then the following scenarios are selected with cmdline:
|
|
23
|
+
| cmdline | selected? | Logic comment |
|
|
24
|
+
| | S0, S1, S2, S3 | ALL, no selector |
|
|
25
|
+
| --tags=@foo | S1, S3 | @foo |
|
|
26
|
+
| --tags=-@foo | S0, S2 | not @foo |
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
Scenario: Use other tag expression variants
|
|
30
|
+
Given a behave model with:
|
|
31
|
+
| statement | name | tags | Comment |
|
|
32
|
+
| Scenario | S0 | | Untagged |
|
|
33
|
+
| Scenario | S1 | @foo | With 1 tag |
|
|
34
|
+
| Scenario | S2 | @other | |
|
|
35
|
+
| Scenario | S3 | @foo @other | With 2 tags |
|
|
36
|
+
Then the following scenarios are selected with cmdline:
|
|
37
|
+
| cmdline | selected? | Logic comment |
|
|
38
|
+
| --tags=foo | S1, S3 | @foo, without optional @ |
|
|
39
|
+
| --tags=-foo | S0, S2 | not @foo, without optional @ |
|
|
40
|
+
| --tags=~foo | S0, S2 | not @foo, with tilde as minus |
|
|
41
|
+
| --tags=~@foo | S0, S2 | not @foo, with tilde and @ |
|
|
42
|
+
And note that "these tag expression variants can also be used"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
Scenario: Select scenarios with 2 tags (@foo, @bar)
|
|
46
|
+
Given a behave model with:
|
|
47
|
+
| statement | name | tags | Comment |
|
|
48
|
+
| Scenario | S0 | | Untagged |
|
|
49
|
+
| Scenario | S1 | @foo | With a tag |
|
|
50
|
+
| Scenario | S2 | @bar | |
|
|
51
|
+
| Scenario | S3 | @other | |
|
|
52
|
+
| Scenario | S4 | @foo @bar | With 2 tags |
|
|
53
|
+
| Scenario | S5 | @foo @other | |
|
|
54
|
+
| Scenario | S6 | @bar @other | |
|
|
55
|
+
| Scenario | S7 | @foo @bar @other | With 3 tags |
|
|
56
|
+
And note that "are all combinations of 0..3 tags"
|
|
57
|
+
When I run the behave model with "tags"
|
|
58
|
+
Then the following scenarios are selected with cmdline:
|
|
59
|
+
| cmdline | selected? | Logic comment |
|
|
60
|
+
| | S0, S1, S2, S3, S4, S5, S6, S7 | ALL, no selector |
|
|
61
|
+
| --tags=@foo,@bar | S1, S2, S4, S5, S6, S7 | @foo or @bar |
|
|
62
|
+
| --tags=@foo,-@bar | S0, S1, S3, S4, S5, S7 | @foo or not @bar |
|
|
63
|
+
| --tags=-@foo,-@bar | S0, S1, S2, S3, S5, S6 | not @foo or not @bar |
|
|
64
|
+
| --tags=@foo --tags=@bar | S4, S7 | @foo and @bar |
|
|
65
|
+
| --tags=@foo --tags=-@bar | S1, S5 | @foo and not @bar |
|
|
66
|
+
| --tags=-@foo --tags=-@bar | S0, S3 | not @foo and not @bar |
|
|
67
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Feature: When an unknown formatter is used
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Scenario: Unknown formatter is used
|
|
5
|
+
When I run "behave -f unknown1"
|
|
6
|
+
Then it should fail with:
|
|
7
|
+
"""
|
|
8
|
+
behave: error: format=unknown1 is unknown
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
Scenario: Unknown formatter is used together with another formatter
|
|
12
|
+
When I run "behave -f plain -f unknown1"
|
|
13
|
+
Then it should fail with:
|
|
14
|
+
"""
|
|
15
|
+
behave: error: format=unknown1 is unknown
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
Scenario: Two unknown formatters are used
|
|
19
|
+
When I run "behave -f plain -f unknown1 -f tags -f unknown2"
|
|
20
|
+
Then it should fail with:
|
|
21
|
+
"""
|
|
22
|
+
behave: error: format=unknown1, unknown2 is unknown
|
|
23
|
+
"""
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
Feature: Use Alternate Step Implementations for Each Test Stage
|
|
2
|
+
|
|
3
|
+
As I tester and test writer
|
|
4
|
+
I want to run the same feature with other step implementations during different testing stages
|
|
5
|
+
So I can run quick checks in a development environment and detailed checks in a testlab.
|
|
6
|
+
|
|
7
|
+
. CONCEPT: TEST STAGE
|
|
8
|
+
. A test stage allows you to use different step/environment implementations
|
|
9
|
+
. compared to other test stage or the default, unnamed test stage.
|
|
10
|
+
.
|
|
11
|
+
. Examples for test stages are:
|
|
12
|
+
. * develop (using the development environment with more diagnostics)
|
|
13
|
+
. * product (using the product database, ...)
|
|
14
|
+
. * systemtest
|
|
15
|
+
. * systemint (system integration)
|
|
16
|
+
. * ...
|
|
17
|
+
.
|
|
18
|
+
. NOTE:
|
|
19
|
+
. Test stages can be used to adapt to different test environments
|
|
20
|
+
. while using these test stages.
|
|
21
|
+
.
|
|
22
|
+
.
|
|
23
|
+
. EXAMPLE DIRECTORY LAYOUT (with default stage and stage=testlab):
|
|
24
|
+
.
|
|
25
|
+
. features/
|
|
26
|
+
. +-- steps/ # -- Step implementations for default stage.
|
|
27
|
+
. | +-- foo_steps.py
|
|
28
|
+
. +-- testlab_steps/ # -- Step implementations for stage=testlab.
|
|
29
|
+
. | +-- foo_steps.py
|
|
30
|
+
. +-- *.feature
|
|
31
|
+
. +-- environment.py # -- Environment for default stage.
|
|
32
|
+
. +-- testlab_environment.py # -- Environment for stage=testlab.
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@setup
|
|
36
|
+
Scenario: Feature Setup
|
|
37
|
+
Given a new working directory
|
|
38
|
+
And a file named "features/example1.feature" with:
|
|
39
|
+
"""
|
|
40
|
+
Feature:
|
|
41
|
+
Scenario:
|
|
42
|
+
Given I do something in a test stage
|
|
43
|
+
"""
|
|
44
|
+
And a file named "features/environment.py" with:
|
|
45
|
+
"""
|
|
46
|
+
def before_all(context):
|
|
47
|
+
context.use_develop_environment = False
|
|
48
|
+
"""
|
|
49
|
+
And a file named "features/steps/foo_steps.py" with:
|
|
50
|
+
"""
|
|
51
|
+
from behave import step
|
|
52
|
+
|
|
53
|
+
@step('I do something in a test stage')
|
|
54
|
+
def step_do_something(context):
|
|
55
|
+
assert not context.config.stage
|
|
56
|
+
assert not context.use_develop_environment
|
|
57
|
+
"""
|
|
58
|
+
And I remove the environment variable "BEHAVE_STAGE"
|
|
59
|
+
|
|
60
|
+
Scenario: Use stage=develop
|
|
61
|
+
Given a file named "features/develop_environment.py" with:
|
|
62
|
+
"""
|
|
63
|
+
def before_all(context):
|
|
64
|
+
context.use_develop_environment = True
|
|
65
|
+
"""
|
|
66
|
+
And a file named "features/develop_steps/foo_steps.py" with:
|
|
67
|
+
"""
|
|
68
|
+
from behave import step
|
|
69
|
+
|
|
70
|
+
@step('I do something in a test stage')
|
|
71
|
+
def step_do_something(context):
|
|
72
|
+
assert context.config.stage == "develop"
|
|
73
|
+
assert context.use_develop_environment
|
|
74
|
+
"""
|
|
75
|
+
When I run "behave -c --stage=develop features/example1.feature"
|
|
76
|
+
Then it should pass with:
|
|
77
|
+
"""
|
|
78
|
+
1 feature passed, 0 failed, 0 skipped
|
|
79
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
80
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
81
|
+
"""
|
|
82
|
+
And the command output should contain:
|
|
83
|
+
"""
|
|
84
|
+
Scenario: # features/example1.feature:2
|
|
85
|
+
Given I do something in a test stage # features/develop_steps/foo_steps.py:3
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
Scenario: Use default stage
|
|
89
|
+
Given I remove the environment variable "BEHAVE_STAGE"
|
|
90
|
+
When I run "behave -c features/example1.feature"
|
|
91
|
+
Then it should pass with:
|
|
92
|
+
"""
|
|
93
|
+
1 feature passed, 0 failed, 0 skipped
|
|
94
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
95
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
96
|
+
"""
|
|
97
|
+
And the command output should contain:
|
|
98
|
+
"""
|
|
99
|
+
Scenario: # features/example1.feature:2
|
|
100
|
+
Given I do something in a test stage # features/steps/foo_steps.py:3
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
Scenario: Use the BEHAVE_STAGE environment variable to define the test stage
|
|
104
|
+
Given I set the environment variable "BEHAVE_STAGE" to "develop"
|
|
105
|
+
When I run "behave -c features/example1.feature"
|
|
106
|
+
Then it should pass with:
|
|
107
|
+
"""
|
|
108
|
+
1 feature passed, 0 failed, 0 skipped
|
|
109
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
110
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
111
|
+
"""
|
|
112
|
+
And the command output should contain:
|
|
113
|
+
"""
|
|
114
|
+
Scenario: # features/example1.feature:2
|
|
115
|
+
Given I do something in a test stage # features/develop_steps/foo_steps.py:3
|
|
116
|
+
"""
|
|
117
|
+
But note that "I should better remove it again (TEARDOWN PHASE)"
|
|
118
|
+
And I remove the environment variable "BEHAVE_STAGE"
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
Scenario: Using an unknown stage
|
|
122
|
+
When I run "behave -c --stage=unknown features/example1.feature"
|
|
123
|
+
Then it should fail with:
|
|
124
|
+
"""
|
|
125
|
+
ConfigError: No unknown_steps directory
|
|
126
|
+
"""
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
Feature: Scenario Description
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want to explain the rationale of a test scenario or scenario outline
|
|
5
|
+
Before I actually execute the steps.
|
|
6
|
+
|
|
7
|
+
. SPECIFICATION: Scenario Description
|
|
8
|
+
. * Scenario descriptions are in optional section between
|
|
9
|
+
. Scenario line and the first step.
|
|
10
|
+
. * All description lines are added to the scenario description.
|
|
11
|
+
. * Empty lines are not part of the scenario description (are removed).
|
|
12
|
+
. * Comment lines are not part of the scenario description (are removed).
|
|
13
|
+
. * A Scenario/ScenarioOutline with a scenario description,
|
|
14
|
+
. but without steps is valid (to support preparation of scenarios).
|
|
15
|
+
.
|
|
16
|
+
. SPECIFICATION: A scenario description line...
|
|
17
|
+
. * must not start with step keywords, like:
|
|
18
|
+
.
|
|
19
|
+
. Given, When, Then, And, But, etc.
|
|
20
|
+
. (including lower-case versions)
|
|
21
|
+
.
|
|
22
|
+
. * must not start with '*' (ASTERISK) due to generic step keyword ambiguity
|
|
23
|
+
. * must not start with '@' (AT) due to tag ambiguity
|
|
24
|
+
. (supporting: scenario without steps but with step description).
|
|
25
|
+
. * may start with '|' (table-cell-separator).
|
|
26
|
+
. * does not contain only whitespace chars (empty line, filtered-out).
|
|
27
|
+
. * does not start with '#' (HASH) after whitespace chars (comment line).
|
|
28
|
+
.
|
|
29
|
+
. GRAMMAR STRUCTURE:
|
|
30
|
+
. Scenario-Line : 1
|
|
31
|
+
. Scenario-Description-Line : 0 .. N
|
|
32
|
+
. Step-Line : 0 .. N
|
|
33
|
+
.
|
|
34
|
+
. Scenario-Line := Scenario-Keyword ':' Scenario-Name
|
|
35
|
+
. Scenario-Description-Line := Line does not start with Step-Keyword
|
|
36
|
+
. Step-Line := Step-Keyword Words+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@setup
|
|
40
|
+
Scenario: Feature Setup
|
|
41
|
+
Given a new working directory
|
|
42
|
+
And a file named "features/steps/steps.py" with:
|
|
43
|
+
"""
|
|
44
|
+
from behave import step
|
|
45
|
+
import sys
|
|
46
|
+
|
|
47
|
+
@step('a step passes')
|
|
48
|
+
def step_passes(context):
|
|
49
|
+
pass
|
|
50
|
+
|
|
51
|
+
@step('a step passes with "{comment}"')
|
|
52
|
+
def step_passes(context, comment):
|
|
53
|
+
sys.stdout.write("PASSING-STEP: %s;\n" % comment)
|
|
54
|
+
|
|
55
|
+
@step('a step fails')
|
|
56
|
+
def step_fails(context):
|
|
57
|
+
assert False, "XFAIL-STEP"
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
Scenario: First Example for a Scenario Description
|
|
62
|
+
Given a file named "features/example_description1.feature" with:
|
|
63
|
+
"""
|
|
64
|
+
Feature:
|
|
65
|
+
Scenario: E1
|
|
66
|
+
|
|
67
|
+
This is a simple scenario description before the steps start.
|
|
68
|
+
It explains why this scenario is important.
|
|
69
|
+
|
|
70
|
+
Here another scenario description line after an empty line.
|
|
71
|
+
|
|
72
|
+
Given a step passes with "Alice"
|
|
73
|
+
When a step passes with "Bob"
|
|
74
|
+
Then a step passes with "Charly"
|
|
75
|
+
"""
|
|
76
|
+
When I run "behave -f plain -T features/example_description1.feature"
|
|
77
|
+
Then it should pass with:
|
|
78
|
+
"""
|
|
79
|
+
1 feature passed, 0 failed, 0 skipped
|
|
80
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
81
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
82
|
+
"""
|
|
83
|
+
And the command output should contain:
|
|
84
|
+
"""
|
|
85
|
+
Feature:
|
|
86
|
+
Scenario: E1
|
|
87
|
+
Given a step passes with "Alice" ... passed
|
|
88
|
+
When a step passes with "Bob" ... passed
|
|
89
|
+
Then a step passes with "Charly" ... passed
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
Scenario: Inspect the Scenario Description by using JSON
|
|
94
|
+
Given a file named "features/example_description1.feature" exists
|
|
95
|
+
When I run "behave -f json.pretty -o example1.json -f plain -T features/example_description1.feature"
|
|
96
|
+
Then it should pass
|
|
97
|
+
And the file "example1.json" should contain:
|
|
98
|
+
"""
|
|
99
|
+
"description": [
|
|
100
|
+
"This is a simple scenario description before the steps start.",
|
|
101
|
+
"It explains why this scenario is important.",
|
|
102
|
+
"Here another scenario description line after an empty line."
|
|
103
|
+
],
|
|
104
|
+
"keyword": "Scenario",
|
|
105
|
+
"location": "features/example_description1.feature:2",
|
|
106
|
+
"name": "E1",
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
Scenario: Second Example with 2 scenario with scenario descriptions
|
|
111
|
+
Given a file named "features/example_description2.feature" with:
|
|
112
|
+
"""
|
|
113
|
+
@one
|
|
114
|
+
Feature: F2
|
|
115
|
+
|
|
116
|
+
Feature description line 1.
|
|
117
|
+
Feature description line 2.
|
|
118
|
+
|
|
119
|
+
@foo
|
|
120
|
+
Scenario: S2.1
|
|
121
|
+
|
|
122
|
+
Scenario description line S2.1-1.
|
|
123
|
+
Scenario description line S2.1-2 (indentation is removed).
|
|
124
|
+
|
|
125
|
+
Given a step passes with "Alice"
|
|
126
|
+
Then a step passes with "Charly"
|
|
127
|
+
|
|
128
|
+
@foo
|
|
129
|
+
@bar @baz
|
|
130
|
+
Scenario: S2.2
|
|
131
|
+
|
|
132
|
+
Scenario description line S2.2-1.
|
|
133
|
+
|
|
134
|
+
When a step passes with "Bob"
|
|
135
|
+
"""
|
|
136
|
+
When I run "behave -f json.pretty -o example2.json -f plain -T features/example_description2.feature"
|
|
137
|
+
Then it should pass with:
|
|
138
|
+
"""
|
|
139
|
+
1 feature passed, 0 failed, 0 skipped
|
|
140
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
141
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
142
|
+
"""
|
|
143
|
+
And the command output should contain:
|
|
144
|
+
"""
|
|
145
|
+
Feature: F2
|
|
146
|
+
Scenario: S2.1
|
|
147
|
+
Given a step passes with "Alice" ... passed
|
|
148
|
+
Then a step passes with "Charly" ... passed
|
|
149
|
+
|
|
150
|
+
Scenario: S2.2
|
|
151
|
+
When a step passes with "Bob" ... passed
|
|
152
|
+
"""
|
|
153
|
+
And the file "example2.json" should contain:
|
|
154
|
+
"""
|
|
155
|
+
"description": [
|
|
156
|
+
"Scenario description line S2.1-1.",
|
|
157
|
+
"Scenario description line S2.1-2 (indentation is removed)."
|
|
158
|
+
],
|
|
159
|
+
"keyword": "Scenario",
|
|
160
|
+
"location": "features/example_description2.feature:8",
|
|
161
|
+
"name": "S2.1",
|
|
162
|
+
"""
|
|
163
|
+
And the file "example2.json" should contain:
|
|
164
|
+
"""
|
|
165
|
+
"description": [
|
|
166
|
+
"Scenario description line S2.2-1."
|
|
167
|
+
],
|
|
168
|
+
"keyword": "Scenario",
|
|
169
|
+
"location": "features/example_description2.feature:18",
|
|
170
|
+
"name": "S2.2",
|
|
171
|
+
"""
|