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,59 @@
|
|
|
1
|
+
Feature: Execute Steps within a Step Function (Nested Steps)
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want to reuse existing steps and call several ones within another step
|
|
5
|
+
So that I can comply with the the DRY principle.
|
|
6
|
+
|
|
7
|
+
Scenario: Execute a number of simple steps (GOOD CASE)
|
|
8
|
+
Given a new working directory
|
|
9
|
+
And a file named "features/steps/steps.py" with:
|
|
10
|
+
"""
|
|
11
|
+
from behave import given, when, then
|
|
12
|
+
|
|
13
|
+
@given(u'I go to the supermarket')
|
|
14
|
+
def step_given_I_go_to_the_supermarket(context):
|
|
15
|
+
context.shopping_cart = {}
|
|
16
|
+
|
|
17
|
+
@when(u'I buy {amount:n} {item:w}')
|
|
18
|
+
def step_when_I_buy(context, amount, item):
|
|
19
|
+
assert amount >= 0
|
|
20
|
+
if not item in context.shopping_cart:
|
|
21
|
+
context.shopping_cart[item] = 0
|
|
22
|
+
context.shopping_cart[item] += amount
|
|
23
|
+
|
|
24
|
+
# -- HERE: Is the interesting functionality.
|
|
25
|
+
@when(u'I buy the usual things')
|
|
26
|
+
def step_when_I_buy_the_usual_things(context):
|
|
27
|
+
context.execute_steps(u'''
|
|
28
|
+
When I buy 2 apples
|
|
29
|
+
And I buy 3 bananas
|
|
30
|
+
''')
|
|
31
|
+
|
|
32
|
+
@then(u'I have {amount:n} {item:w}')
|
|
33
|
+
def step_then_I_have(context, amount, item):
|
|
34
|
+
actual = context.shopping_cart.get(item, 0)
|
|
35
|
+
assert amount == actual
|
|
36
|
+
"""
|
|
37
|
+
And a file named "features/use_nested_steps.feature" with:
|
|
38
|
+
"""
|
|
39
|
+
Feature:
|
|
40
|
+
Scenario:
|
|
41
|
+
Given I go to the supermarket
|
|
42
|
+
When I buy the usual things
|
|
43
|
+
Then I have 2 apples
|
|
44
|
+
And I have 3 bananas
|
|
45
|
+
"""
|
|
46
|
+
When I run "behave -f plain features/use_nested_steps.feature"
|
|
47
|
+
Then it should pass with:
|
|
48
|
+
"""
|
|
49
|
+
1 feature passed, 0 failed, 0 skipped
|
|
50
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
51
|
+
4 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
@not_implemented
|
|
55
|
+
Scenario: A Nested Step Fails with Assert
|
|
56
|
+
|
|
57
|
+
@not_implemented
|
|
58
|
+
Scenario: A Nested Step Fails with Exception
|
|
59
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Feature: Execute nested steps that use a table
|
|
2
|
+
|
|
3
|
+
Scenario:
|
|
4
|
+
Given a new working directory
|
|
5
|
+
And a file named "features/steps/steps.py" with:
|
|
6
|
+
"""
|
|
7
|
+
from behave import given, when, then, step
|
|
8
|
+
import six
|
|
9
|
+
@given('the following nested steps')
|
|
10
|
+
def step_given_following_nested_steps(context):
|
|
11
|
+
assert context.text, "ENSURE: multi-line text is provided."
|
|
12
|
+
context.nested_steps = six.text_type(context.text)
|
|
13
|
+
|
|
14
|
+
@step('I execute the nested steps {comment}')
|
|
15
|
+
def step_execute_nested_steps_with_table(context, comment):
|
|
16
|
+
assert context.nested_steps, "ENSURE: nested steps are provided."
|
|
17
|
+
context.execute_steps(context.nested_steps)
|
|
18
|
+
|
|
19
|
+
@then('the step "{expected_step}" was called')
|
|
20
|
+
def then_step_was_called(context, expected_step):
|
|
21
|
+
assert context.steps_called, "ENSURE: steps_called is provided."
|
|
22
|
+
assert expected_step in context.steps_called
|
|
23
|
+
|
|
24
|
+
@then('the table should be equal to')
|
|
25
|
+
def then_table_should_be_equal_to(context):
|
|
26
|
+
assert context.table, "ENSURE: table is provided."
|
|
27
|
+
expected_table = context.table
|
|
28
|
+
actual_table = context.the_table
|
|
29
|
+
assert actual_table == expected_table
|
|
30
|
+
|
|
31
|
+
# -- SPECIAL-STEP:
|
|
32
|
+
@step('I setup an address book with')
|
|
33
|
+
def step_setup_address_book_with_friends(context):
|
|
34
|
+
assert context.table, "ENSURE: table is provided."
|
|
35
|
+
if not hasattr(context, "steps_called"):
|
|
36
|
+
context.steps_called = []
|
|
37
|
+
context.steps_called.append("I setup an address book with")
|
|
38
|
+
context.the_table = context.table
|
|
39
|
+
"""
|
|
40
|
+
And a file named "features/execute_nested_steps_with_table.feature" with:
|
|
41
|
+
'''
|
|
42
|
+
Feature:
|
|
43
|
+
Scenario:
|
|
44
|
+
Given the following nested steps:
|
|
45
|
+
"""
|
|
46
|
+
When I setup an address book with:
|
|
47
|
+
| Name | Telephone Number |
|
|
48
|
+
| Alice | 555 1111 |
|
|
49
|
+
| Bob | 555 2222 |
|
|
50
|
+
"""
|
|
51
|
+
When I execute the nested steps with a table
|
|
52
|
+
Then the step "I setup an address book with" was called
|
|
53
|
+
And the table should be equal to:
|
|
54
|
+
| Name | Telephone Number |
|
|
55
|
+
| Alice | 555 1111 |
|
|
56
|
+
| Bob | 555 2222 |
|
|
57
|
+
'''
|
|
58
|
+
When I run "behave -f plain features/execute_nested_steps_with_table.feature"
|
|
59
|
+
Then it should pass with:
|
|
60
|
+
"""
|
|
61
|
+
1 feature passed, 0 failed, 0 skipped
|
|
62
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
63
|
+
4 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
64
|
+
"""
|
|
65
|
+
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
Feature: Ensure that a step module can import another step module
|
|
2
|
+
|
|
3
|
+
As a test writer
|
|
4
|
+
I want to import step definitions from another module in a step module
|
|
5
|
+
So that I can reuse other steps and call them directly.
|
|
6
|
+
|
|
7
|
+
. When a step module imports another step module
|
|
8
|
+
. this should not cause AmbiguousStep errors
|
|
9
|
+
. due to duplicated registration of the same step functions.
|
|
10
|
+
.
|
|
11
|
+
. NOTES:
|
|
12
|
+
. * In general you should avoid this case (provided as example here).
|
|
13
|
+
. * Use "context.execute_steps(...)" to avoid importing other step modules
|
|
14
|
+
. * Use step-libraries; this will in general use sane imports of other step modules
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
Scenario: Step module that imports another step module
|
|
18
|
+
Given a new working directory
|
|
19
|
+
And a file named "features/steps/alice1_steps.py" with:
|
|
20
|
+
"""
|
|
21
|
+
from behave import given
|
|
22
|
+
|
|
23
|
+
@given(u'I call Alice')
|
|
24
|
+
def step_call_alice(context):
|
|
25
|
+
pass
|
|
26
|
+
"""
|
|
27
|
+
And a file named "features/steps/bob1_steps.py" with:
|
|
28
|
+
"""
|
|
29
|
+
from behave import given
|
|
30
|
+
from alice1_steps import step_call_alice
|
|
31
|
+
|
|
32
|
+
@given(u'I call Bob')
|
|
33
|
+
def step_call_bob(context):
|
|
34
|
+
pass
|
|
35
|
+
|
|
36
|
+
@given(u'I call Bob and Alice')
|
|
37
|
+
def step_call_bob_and_alice(context):
|
|
38
|
+
step_call_bob(context)
|
|
39
|
+
step_call_alice(context)
|
|
40
|
+
"""
|
|
41
|
+
And a file named "features/example.import_step_module.feature" with:
|
|
42
|
+
"""
|
|
43
|
+
Feature:
|
|
44
|
+
Scenario:
|
|
45
|
+
Given I call Bob and Alice
|
|
46
|
+
"""
|
|
47
|
+
When I run "behave -f plain --no-timings features/example.import_step_module.feature"
|
|
48
|
+
Then it should pass with:
|
|
49
|
+
"""
|
|
50
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
51
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
52
|
+
"""
|
|
53
|
+
And the command output should contain:
|
|
54
|
+
"""
|
|
55
|
+
Feature:
|
|
56
|
+
Scenario:
|
|
57
|
+
Given I call Bob and Alice ... passed
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
Scenario: Step module that imports another step module (cross-wise)
|
|
62
|
+
Given a new working directory
|
|
63
|
+
And a file named "features/steps/alice2_steps.py" with:
|
|
64
|
+
"""
|
|
65
|
+
from behave import given
|
|
66
|
+
import bob2_steps # -- BAD: Import other step module, cross-wise.
|
|
67
|
+
|
|
68
|
+
@given(u'I call Alice')
|
|
69
|
+
def step_call_alice(context):
|
|
70
|
+
pass
|
|
71
|
+
"""
|
|
72
|
+
And a file named "features/steps/bob2_steps.py" with:
|
|
73
|
+
"""
|
|
74
|
+
from behave import given
|
|
75
|
+
import alice2_steps # -- BAD: Import other step module, cross-wise.
|
|
76
|
+
|
|
77
|
+
@given(u'I call Bob')
|
|
78
|
+
def step_call_bob(context):
|
|
79
|
+
pass
|
|
80
|
+
"""
|
|
81
|
+
And a file named "features/example.cross_imported_step_modules.feature" with:
|
|
82
|
+
"""
|
|
83
|
+
Feature:
|
|
84
|
+
Scenario:
|
|
85
|
+
Given I call Alice
|
|
86
|
+
And I call Bob
|
|
87
|
+
"""
|
|
88
|
+
When I run "behave -f plain --no-timings features/example.cross_imported_step_modules.feature"
|
|
89
|
+
Then it should pass with:
|
|
90
|
+
"""
|
|
91
|
+
1 feature passed, 0 failed, 0 skipped
|
|
92
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
93
|
+
2 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
94
|
+
"""
|
|
95
|
+
And the command output should contain:
|
|
96
|
+
"""
|
|
97
|
+
Feature:
|
|
98
|
+
Scenario:
|
|
99
|
+
Given I call Alice ... passed
|
|
100
|
+
And I call Bob ... passed
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
Feature: Pending Step (Exists with NotImplementedError Marker)
|
|
2
|
+
|
|
3
|
+
. TERMINOLOGY:
|
|
4
|
+
. * An undefined step is a step without matching step implementation.
|
|
5
|
+
. * A pending step exists,
|
|
6
|
+
. but contains only the undefined step snippet as implementation,
|
|
7
|
+
. that marks it as NotImplemented.
|
|
8
|
+
.
|
|
9
|
+
. RELATED TO:
|
|
10
|
+
. * step.undefined_steps.feature
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@setup
|
|
14
|
+
Scenario: Feature Setup
|
|
15
|
+
Given a new working directory
|
|
16
|
+
And a file named "behave.ini" with:
|
|
17
|
+
"""
|
|
18
|
+
[behave]
|
|
19
|
+
show_skipped = false
|
|
20
|
+
show_timings = false
|
|
21
|
+
"""
|
|
22
|
+
And a file named "features/steps/passing_steps.py" with:
|
|
23
|
+
"""
|
|
24
|
+
from behave import step
|
|
25
|
+
|
|
26
|
+
@step('{word:w} step passes')
|
|
27
|
+
def step_passes(context, word):
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
@step('{word:w} step fails')
|
|
31
|
+
def step_fails(context, word):
|
|
32
|
+
assert False, "XFAIL"
|
|
33
|
+
"""
|
|
34
|
+
And a file named "features/steps/pending_steps.py" with:
|
|
35
|
+
"""
|
|
36
|
+
from behave import given, when, then
|
|
37
|
+
|
|
38
|
+
@given('a pending step is used')
|
|
39
|
+
def step_pending_given(context):
|
|
40
|
+
raise NotImplementedError('STEP: Given a pending step is used')
|
|
41
|
+
|
|
42
|
+
@when('a pending step is used')
|
|
43
|
+
def step_pending_when(context):
|
|
44
|
+
raise NotImplementedError('STEP: When a pending step is used')
|
|
45
|
+
|
|
46
|
+
@then('a pending step is used')
|
|
47
|
+
def step_pending_then(context):
|
|
48
|
+
raise NotImplementedError('STEP: Then a pending step is used')
|
|
49
|
+
"""
|
|
50
|
+
And a file named "features/use_pending_steps.feature" with:
|
|
51
|
+
"""
|
|
52
|
+
Feature:
|
|
53
|
+
Scenario: 1
|
|
54
|
+
Given a step passes
|
|
55
|
+
And a pending step is used
|
|
56
|
+
When another step passes
|
|
57
|
+
|
|
58
|
+
Scenario: 2
|
|
59
|
+
Given a step passes
|
|
60
|
+
When a pending step is used
|
|
61
|
+
Then some step passes
|
|
62
|
+
|
|
63
|
+
Scenario: 3
|
|
64
|
+
Given a step passes
|
|
65
|
+
When another step passes
|
|
66
|
+
Then a pending step is used
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
Scenario: Pending given step (not implemented)
|
|
70
|
+
When I run "behave -f plain features/use_pending_steps.feature:2"
|
|
71
|
+
Then it should fail
|
|
72
|
+
And the command output should contain:
|
|
73
|
+
"""
|
|
74
|
+
Feature:
|
|
75
|
+
Scenario: 1
|
|
76
|
+
Given a step passes ... passed
|
|
77
|
+
And a pending step is used ... failed
|
|
78
|
+
"""
|
|
79
|
+
But the command output should contain:
|
|
80
|
+
"""
|
|
81
|
+
NotImplementedError: STEP: Given a pending step is used
|
|
82
|
+
"""
|
|
83
|
+
And the command output should contain:
|
|
84
|
+
"""
|
|
85
|
+
File "features/steps/pending_steps.py", line 5, in step_pending_given
|
|
86
|
+
raise NotImplementedError('STEP: Given a pending step is used')
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
Scenario: Pending when step (not implemented)
|
|
90
|
+
When I run "behave -f plain features/use_pending_steps.feature:7"
|
|
91
|
+
Then it should fail
|
|
92
|
+
And the command output should contain:
|
|
93
|
+
"""
|
|
94
|
+
Feature:
|
|
95
|
+
Scenario: 2
|
|
96
|
+
Given a step passes ... passed
|
|
97
|
+
When a pending step is used ... failed
|
|
98
|
+
"""
|
|
99
|
+
But the command output should contain:
|
|
100
|
+
"""
|
|
101
|
+
NotImplementedError: STEP: When a pending step is used
|
|
102
|
+
"""
|
|
103
|
+
And the command output should contain:
|
|
104
|
+
"""
|
|
105
|
+
File "features/steps/pending_steps.py", line 9, in step_pending_when
|
|
106
|
+
raise NotImplementedError('STEP: When a pending step is used')
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
Scenario: Pending then step (not implemented)
|
|
110
|
+
When I run "behave -f plain features/use_pending_steps.feature:12"
|
|
111
|
+
Then it should fail
|
|
112
|
+
And the command output should contain:
|
|
113
|
+
"""
|
|
114
|
+
Feature:
|
|
115
|
+
Scenario: 3
|
|
116
|
+
Given a step passes ... passed
|
|
117
|
+
When another step passes ... passed
|
|
118
|
+
Then a pending step is used ... failed
|
|
119
|
+
"""
|
|
120
|
+
But the command output should contain:
|
|
121
|
+
"""
|
|
122
|
+
NotImplementedError: STEP: Then a pending step is used
|
|
123
|
+
"""
|
|
124
|
+
And the command output should contain:
|
|
125
|
+
"""
|
|
126
|
+
File "features/steps/pending_steps.py", line 13, in step_pending_then
|
|
127
|
+
raise NotImplementedError('STEP: Then a pending step is used')
|
|
128
|
+
"""
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
Feature: Undefined Step
|
|
2
|
+
|
|
3
|
+
. TERMINOLOGY:
|
|
4
|
+
. * An undefined step is a step without matching step implementation.
|
|
5
|
+
.
|
|
6
|
+
. SPECIFICATION:
|
|
7
|
+
. * An undefined step should be reported after the run.
|
|
8
|
+
. * An undefined step should cause its scenario to fail.
|
|
9
|
+
. * If an undefined step is detected the remaining scenario steps are skipped.
|
|
10
|
+
. * All undefined steps in a scenario should be reported (issue #42).
|
|
11
|
+
. * Undefined steps should be detected even after a step fails in a scenario.
|
|
12
|
+
. * Each undefined step should be reported only once.
|
|
13
|
+
. * If a scenario is disabled (by tag expression, etc.),
|
|
14
|
+
. the undefined step discovery should not occur.
|
|
15
|
+
. This allows to prepare scenarios that are not intended to run (yet).
|
|
16
|
+
. * Option --dry-run should discover undefined steps, too.
|
|
17
|
+
.
|
|
18
|
+
. RELATED TO:
|
|
19
|
+
. * issue #42 Multiple undefined steps in same scenario are detected.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@setup
|
|
23
|
+
Scenario: Feature Setup
|
|
24
|
+
Given a new working directory
|
|
25
|
+
And a file named "features/steps/passing_steps.py" with:
|
|
26
|
+
"""
|
|
27
|
+
from behave import step
|
|
28
|
+
|
|
29
|
+
@step('a step passes')
|
|
30
|
+
def step_passes(context):
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
@step('a step fails')
|
|
34
|
+
def step_fails(context):
|
|
35
|
+
assert False, "XFAIL"
|
|
36
|
+
"""
|
|
37
|
+
And a file named "features/undefined_last_step.feature" with:
|
|
38
|
+
"""
|
|
39
|
+
Feature:
|
|
40
|
+
Scenario:
|
|
41
|
+
Given a step passes
|
|
42
|
+
When an undefined step is used
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
Scenario: An undefined step should be reported
|
|
46
|
+
When I run "behave -f plain -T features/undefined_last_step.feature"
|
|
47
|
+
Then it should fail
|
|
48
|
+
And the command output should contain:
|
|
49
|
+
"""
|
|
50
|
+
Feature:
|
|
51
|
+
Scenario:
|
|
52
|
+
Given a step passes ... passed
|
|
53
|
+
When an undefined step is used ... undefined
|
|
54
|
+
"""
|
|
55
|
+
And the command output should contain:
|
|
56
|
+
"""
|
|
57
|
+
You can implement step definitions for undefined steps with these snippets:
|
|
58
|
+
|
|
59
|
+
@when(u'an undefined step is used')
|
|
60
|
+
def step_impl(context):
|
|
61
|
+
raise NotImplementedError(u'STEP: When an undefined step is used')
|
|
62
|
+
"""
|
|
63
|
+
And an undefined-step snippet should exist for "When an undefined step is used"
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
Scenario: An undefined step should cause its scenario to fail
|
|
67
|
+
When I run "behave -f plain features/undefined_last_step.feature"
|
|
68
|
+
Then it should fail with:
|
|
69
|
+
"""
|
|
70
|
+
0 features passed, 1 failed, 0 skipped
|
|
71
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
72
|
+
1 step passed, 0 failed, 0 skipped, 1 undefined
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
Scenario: Additional scenario steps after an undefined step are skipped
|
|
77
|
+
Given a file named "features/undefined_step_and_more.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 a step fails
|
|
85
|
+
"""
|
|
86
|
+
When I run "behave -f plain -T features/undefined_step_and_more.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, 2 skipped, 1 undefined
|
|
92
|
+
"""
|
|
93
|
+
And the command output should contain:
|
|
94
|
+
"""
|
|
95
|
+
Feature:
|
|
96
|
+
Scenario:
|
|
97
|
+
Given a step passes ... passed
|
|
98
|
+
When an undefined step is used ... undefined
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
Scenario: Two undefined steps in same scenario should be detected
|
|
103
|
+
Given a file named "features/two_undefined_steps1.feature" with:
|
|
104
|
+
"""
|
|
105
|
+
Feature:
|
|
106
|
+
Scenario:
|
|
107
|
+
Given a step passes
|
|
108
|
+
When an undefined step is used
|
|
109
|
+
And a step fails
|
|
110
|
+
Then another undefined step is used
|
|
111
|
+
"""
|
|
112
|
+
When I run "behave -f plain -T features/two_undefined_steps1.feature"
|
|
113
|
+
Then it should fail with:
|
|
114
|
+
"""
|
|
115
|
+
0 features passed, 1 failed, 0 skipped
|
|
116
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
117
|
+
1 step passed, 0 failed, 1 skipped, 2 undefined
|
|
118
|
+
"""
|
|
119
|
+
And the command output should contain:
|
|
120
|
+
"""
|
|
121
|
+
Feature:
|
|
122
|
+
Scenario:
|
|
123
|
+
Given a step passes ... passed
|
|
124
|
+
When an undefined step is used ... undefined
|
|
125
|
+
"""
|
|
126
|
+
And undefined-step snippets should exist for:
|
|
127
|
+
| Step |
|
|
128
|
+
| When an undefined step is used |
|
|
129
|
+
| Then another undefined step is used |
|
|
130
|
+
But the command output should not contain:
|
|
131
|
+
"""
|
|
132
|
+
And a step fails ... skipped
|
|
133
|
+
Then another undefined step is used ... undefined
|
|
134
|
+
"""
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
Scenario: Two undefined steps in different scenarios
|
|
138
|
+
Given a file named "features/two_undefined_steps2.feature" with:
|
|
139
|
+
"""
|
|
140
|
+
Feature:
|
|
141
|
+
Scenario:
|
|
142
|
+
Given a step passes
|
|
143
|
+
When an undefined step is used
|
|
144
|
+
|
|
145
|
+
Scenario:
|
|
146
|
+
Given another undefined step is used
|
|
147
|
+
When a step passes
|
|
148
|
+
"""
|
|
149
|
+
When I run "behave -f plain -T features/two_undefined_steps2.feature"
|
|
150
|
+
Then it should fail with:
|
|
151
|
+
"""
|
|
152
|
+
0 features passed, 1 failed, 0 skipped
|
|
153
|
+
0 scenarios passed, 2 failed, 0 skipped
|
|
154
|
+
1 step passed, 0 failed, 1 skipped, 2 undefined
|
|
155
|
+
"""
|
|
156
|
+
And the command output should contain:
|
|
157
|
+
"""
|
|
158
|
+
Feature:
|
|
159
|
+
Scenario:
|
|
160
|
+
Given a step passes ... passed
|
|
161
|
+
When an undefined step is used ... undefined
|
|
162
|
+
|
|
163
|
+
Scenario:
|
|
164
|
+
Given another undefined step is used ... undefined
|
|
165
|
+
"""
|
|
166
|
+
And undefined-step snippets should exist for:
|
|
167
|
+
| Step |
|
|
168
|
+
| When an undefined step is used |
|
|
169
|
+
| Given another undefined step is used |
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
Scenario: Undefined step in Scenario Outline
|
|
173
|
+
Given a file named "features/undefined_step_in_scenario_outline.feature" with:
|
|
174
|
+
"""
|
|
175
|
+
Feature:
|
|
176
|
+
Scenario Outline:
|
|
177
|
+
Given a step <outcome1>
|
|
178
|
+
When an undefined step is used
|
|
179
|
+
Then a step <outcome2>
|
|
180
|
+
|
|
181
|
+
Examples:
|
|
182
|
+
| outcome1 | outcome2 |
|
|
183
|
+
| passes | passes |
|
|
184
|
+
| passes | fails |
|
|
185
|
+
| fails | passes |
|
|
186
|
+
| fails | fails |
|
|
187
|
+
"""
|
|
188
|
+
When I run "behave -f plain -T features/undefined_step_in_scenario_outline.feature"
|
|
189
|
+
Then it should fail with:
|
|
190
|
+
"""
|
|
191
|
+
0 features passed, 1 failed, 0 skipped
|
|
192
|
+
0 scenarios passed, 4 failed, 0 skipped
|
|
193
|
+
2 steps passed, 2 failed, 4 skipped, 4 undefined
|
|
194
|
+
"""
|
|
195
|
+
And an undefined-step snippet should exist for "When an undefined step is used"
|
|
196
|
+
And the command output should contain:
|
|
197
|
+
"""
|
|
198
|
+
Feature:
|
|
199
|
+
Scenario Outline: -- @1.1
|
|
200
|
+
Given a step passes ... passed
|
|
201
|
+
When an undefined step is used ... undefined
|
|
202
|
+
|
|
203
|
+
Scenario Outline: -- @1.2
|
|
204
|
+
Given a step passes ... passed
|
|
205
|
+
When an undefined step is used ... undefined
|
|
206
|
+
|
|
207
|
+
Scenario Outline: -- @1.3
|
|
208
|
+
Given a step fails ... failed
|
|
209
|
+
Assertion Failed: XFAIL
|
|
210
|
+
|
|
211
|
+
Scenario Outline: -- @1.4
|
|
212
|
+
Given a step fails ... failed
|
|
213
|
+
Assertion Failed: XFAIL
|
|
214
|
+
"""
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
Scenario: Two undefined step in Scenario Outline
|
|
218
|
+
Given a file named "features/two_undefined_step_in_scenario_outline.feature" with:
|
|
219
|
+
"""
|
|
220
|
+
Feature:
|
|
221
|
+
Scenario Outline:
|
|
222
|
+
Given a step <outcome1>
|
|
223
|
+
When an undefined step is used
|
|
224
|
+
Then a step <outcome2>
|
|
225
|
+
And another undefined step is used
|
|
226
|
+
|
|
227
|
+
Examples:
|
|
228
|
+
| outcome1 | outcome2 |
|
|
229
|
+
| passes | passes |
|
|
230
|
+
| passes | fails |
|
|
231
|
+
| fails | passes |
|
|
232
|
+
| fails | fails |
|
|
233
|
+
"""
|
|
234
|
+
When I run "behave -f plain features/two_undefined_step_in_scenario_outline.feature"
|
|
235
|
+
Then it should fail with:
|
|
236
|
+
"""
|
|
237
|
+
0 features passed, 1 failed, 0 skipped
|
|
238
|
+
0 scenarios passed, 4 failed, 0 skipped
|
|
239
|
+
2 steps passed, 2 failed, 4 skipped, 8 undefined
|
|
240
|
+
"""
|
|
241
|
+
And undefined-step snippets should exist for:
|
|
242
|
+
| Step |
|
|
243
|
+
| When an undefined step is used |
|
|
244
|
+
| Then another undefined step is used |
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
Scenario: Undefined steps are detected if scenario is selected via tag
|
|
248
|
+
Given a file named "features/undefined_steps_with_tagged_scenario.feature" with:
|
|
249
|
+
"""
|
|
250
|
+
Feature:
|
|
251
|
+
|
|
252
|
+
@selected
|
|
253
|
+
Scenario: S1
|
|
254
|
+
Given a step passes
|
|
255
|
+
And an undefined step Alice
|
|
256
|
+
When a step fails
|
|
257
|
+
Then an undefined step Bob
|
|
258
|
+
|
|
259
|
+
@selected
|
|
260
|
+
Scenario: S2
|
|
261
|
+
Given a step passes
|
|
262
|
+
When an undefined step Charly
|
|
263
|
+
|
|
264
|
+
@not_selected
|
|
265
|
+
Scenario: S3
|
|
266
|
+
Given an undefined step Delta
|
|
267
|
+
Then a step fails
|
|
268
|
+
"""
|
|
269
|
+
When I run "behave -f plain --tags=@selected features/undefined_steps_with_tagged_scenario.feature"
|
|
270
|
+
Then it should fail with:
|
|
271
|
+
"""
|
|
272
|
+
0 features passed, 1 failed, 0 skipped
|
|
273
|
+
0 scenarios passed, 2 failed, 1 skipped
|
|
274
|
+
2 steps passed, 0 failed, 3 skipped, 3 undefined
|
|
275
|
+
"""
|
|
276
|
+
And undefined-step snippets should exist for:
|
|
277
|
+
| Step |
|
|
278
|
+
| Given an undefined step Alice |
|
|
279
|
+
| Then an undefined step Bob |
|
|
280
|
+
| When an undefined step Charly |
|
|
281
|
+
But undefined-step snippets should not exist for:
|
|
282
|
+
| Step |
|
|
283
|
+
| Given a step passes |
|
|
284
|
+
| Given an undefined step Delta |
|
|
285
|
+
| When a step fails |
|
|
286
|
+
| Then a step fails |
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
Scenario: Undefined steps are detected if --dry-run option is used
|
|
290
|
+
When I run "behave -f plain --dry-run features/undefined_steps_with_tagged_scenario.feature"
|
|
291
|
+
Then it should fail with:
|
|
292
|
+
"""
|
|
293
|
+
0 features passed, 0 failed, 0 skipped, 1 untested
|
|
294
|
+
0 scenarios passed, 0 failed, 0 skipped, 3 untested
|
|
295
|
+
0 steps passed, 0 failed, 0 skipped, 4 undefined, 4 untested
|
|
296
|
+
"""
|
|
297
|
+
And undefined-step snippets should exist for:
|
|
298
|
+
| Step |
|
|
299
|
+
| Given an undefined step Alice |
|
|
300
|
+
| Then an undefined step Bob |
|
|
301
|
+
| When an undefined step Charly |
|
|
302
|
+
| Given an undefined step Delta |
|
|
303
|
+
But undefined-step snippets should not exist for:
|
|
304
|
+
| Step |
|
|
305
|
+
| Given a step passes |
|
|
306
|
+
| When a step fails |
|
|
307
|
+
| Then a step fails |
|