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,118 @@
|
|
|
1
|
+
Feature: ScenarioOutline with tagged Examples
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want to select (or exclude) a specific Examples table of a ScenarioOutline
|
|
5
|
+
To run only the scenarios from the Examples table of interest.
|
|
6
|
+
|
|
7
|
+
| SPECIFICATION:
|
|
8
|
+
| Scenarios from a Examples table inherit the tags from
|
|
9
|
+
| its ScenarioOutline tags and its Examples tags:
|
|
10
|
+
|
|
|
11
|
+
| scenario.tags = scenario_outline.tags + examples.tags
|
|
12
|
+
|
|
|
13
|
+
| Therefore, examples.tags can easily be used to select all scenarios
|
|
14
|
+
| of this Examples table.
|
|
15
|
+
|
|
|
16
|
+
| NOTE: This allows to provide multiple Examples sections,
|
|
17
|
+
| one for each stage of testing and/or one for each test team
|
|
18
|
+
| (development testing, integration testing, system tests, ...).
|
|
19
|
+
|
|
20
|
+
@setup
|
|
21
|
+
Scenario: Feature Setup
|
|
22
|
+
Given a new working directory
|
|
23
|
+
And a file named "behave.ini" with:
|
|
24
|
+
"""
|
|
25
|
+
[behave]
|
|
26
|
+
show_timestamps = false
|
|
27
|
+
show_skipped = false
|
|
28
|
+
"""
|
|
29
|
+
And a file named "features/steps/steps.py" with:
|
|
30
|
+
"""
|
|
31
|
+
from behave import step
|
|
32
|
+
|
|
33
|
+
@step('{word:w} step passes')
|
|
34
|
+
def step_passes(context, word):
|
|
35
|
+
pass
|
|
36
|
+
"""
|
|
37
|
+
And a file named "features/tagged_examples.feature" with:
|
|
38
|
+
"""
|
|
39
|
+
Feature:
|
|
40
|
+
|
|
41
|
+
@zap
|
|
42
|
+
Scenario Outline:
|
|
43
|
+
Given <variant> step passes
|
|
44
|
+
|
|
45
|
+
@foo
|
|
46
|
+
Examples: Alice
|
|
47
|
+
| variant | Comment |
|
|
48
|
+
| a | First case |
|
|
49
|
+
| another | Second case |
|
|
50
|
+
|
|
51
|
+
@bar
|
|
52
|
+
Examples: Bob
|
|
53
|
+
| variant | Comment |
|
|
54
|
+
| weird | First case |
|
|
55
|
+
"""
|
|
56
|
+
And a file named "behave.ini" with:
|
|
57
|
+
"""
|
|
58
|
+
[behave]
|
|
59
|
+
show_skipped = false
|
|
60
|
+
show_timings = false
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
Scenario: Use all Examples (and Scenarios)
|
|
64
|
+
When I run "behave -f plain features/tagged_examples.feature"
|
|
65
|
+
Then it should pass with:
|
|
66
|
+
"""
|
|
67
|
+
1 feature passed, 0 failed, 0 skipped
|
|
68
|
+
3 scenarios passed, 0 failed, 0 skipped
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
Scenario: Select all Examples (and Scenarios)
|
|
72
|
+
When I run "behave -f plain --tags=@zap features/tagged_examples.feature"
|
|
73
|
+
Then it should pass with:
|
|
74
|
+
"""
|
|
75
|
+
1 feature passed, 0 failed, 0 skipped
|
|
76
|
+
3 scenarios passed, 0 failed, 0 skipped
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
Scenario: Select only first Examples table
|
|
80
|
+
When I run "behave -f plain --tags=@foo features/tagged_examples.feature"
|
|
81
|
+
Then it should pass with:
|
|
82
|
+
"""
|
|
83
|
+
1 feature passed, 0 failed, 0 skipped
|
|
84
|
+
2 scenarios passed, 0 failed, 1 skipped
|
|
85
|
+
"""
|
|
86
|
+
And the command output should contain:
|
|
87
|
+
"""
|
|
88
|
+
Scenario Outline: -- @1.1 Alice
|
|
89
|
+
Given a step passes ... passed
|
|
90
|
+
|
|
91
|
+
Scenario Outline: -- @1.2 Alice
|
|
92
|
+
Given another step passes ... passed
|
|
93
|
+
"""
|
|
94
|
+
But the command output should not contain:
|
|
95
|
+
"""
|
|
96
|
+
Scenario Outline: -- @2.1 Bob
|
|
97
|
+
"""
|
|
98
|
+
|
|
99
|
+
Scenario: Select only second Examples table
|
|
100
|
+
When I run "behave -f plain --tags=@bar features/tagged_examples.feature"
|
|
101
|
+
Then it should pass with:
|
|
102
|
+
"""
|
|
103
|
+
1 feature passed, 0 failed, 0 skipped
|
|
104
|
+
1 scenario passed, 0 failed, 2 skipped
|
|
105
|
+
"""
|
|
106
|
+
And the command output should contain:
|
|
107
|
+
"""
|
|
108
|
+
Scenario Outline: -- @2.1 Bob
|
|
109
|
+
Given weird step passes ... passed
|
|
110
|
+
"""
|
|
111
|
+
But the command output should not contain:
|
|
112
|
+
"""
|
|
113
|
+
Scenario Outline: -- @1.1 Alice
|
|
114
|
+
Given a step passes ... passed
|
|
115
|
+
|
|
116
|
+
Scenario Outline: -- @1.2 Alice
|
|
117
|
+
Given another step passes ... passed
|
|
118
|
+
"""
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
Feature: Async-Test Support (async-step, ...)
|
|
2
|
+
|
|
3
|
+
As a test writer and step provider
|
|
4
|
+
I want to test async frameworks or protocols (that use asyncio)
|
|
5
|
+
|
|
6
|
+
. USE CASES:
|
|
7
|
+
. * async-step with run-to-complete semantics (like synchronous step)
|
|
8
|
+
. * async-dispatch-and-collect-results-later:
|
|
9
|
+
. one or more steps dispatch async-calls (tasks)
|
|
10
|
+
. and final step(s) that waits until tasks have been completed
|
|
11
|
+
. (collects the results of the async-calls and verifies them)
|
|
12
|
+
.
|
|
13
|
+
. TERMINOLOGY: async-step
|
|
14
|
+
. An async-step is either
|
|
15
|
+
. * an async-function as coroutine using async/await keywords (Python 3.5)
|
|
16
|
+
. * an async-function tagged with @asyncio.coroutine and using "yield from"
|
|
17
|
+
.
|
|
18
|
+
. # -- EXAMPLE CASE 1 (since Python 3.5):
|
|
19
|
+
. async def coroutine1(duration):
|
|
20
|
+
. await asyncio.sleep(duration)
|
|
21
|
+
.
|
|
22
|
+
. # -- EXAMPLE CASE 2 (since Python 3.4):
|
|
23
|
+
. @asyncio.coroutine
|
|
24
|
+
. def coroutine2(duration):
|
|
25
|
+
. yield from asyncio.sleep(duration)
|
|
26
|
+
.
|
|
27
|
+
. RATIONALE:
|
|
28
|
+
. By using async-steps, an additional layer of indirection is avoided.
|
|
29
|
+
. The async-step can directly interact with other async-functions.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@use.with_python.version=3.5
|
|
33
|
+
@use.with_python.version=3.6
|
|
34
|
+
Scenario: Use async-step with @async_run_until_complete (async)
|
|
35
|
+
Given a new working directory
|
|
36
|
+
And a file named "features/steps/async_steps35.py" with:
|
|
37
|
+
"""
|
|
38
|
+
from behave import step
|
|
39
|
+
from behave.api.async_step import async_run_until_complete
|
|
40
|
+
import asyncio
|
|
41
|
+
|
|
42
|
+
@step('an async-step waits {duration:f} seconds')
|
|
43
|
+
@async_run_until_complete
|
|
44
|
+
async def step_async_step_waits_seconds(context, duration):
|
|
45
|
+
await asyncio.sleep(duration)
|
|
46
|
+
"""
|
|
47
|
+
And a file named "features/async_run.feature" with:
|
|
48
|
+
"""
|
|
49
|
+
Feature:
|
|
50
|
+
Scenario:
|
|
51
|
+
Given an async-step waits 0.2 seconds
|
|
52
|
+
"""
|
|
53
|
+
When I run "behave -f plain --show-timings features/async_run.feature"
|
|
54
|
+
Then it should pass with:
|
|
55
|
+
"""
|
|
56
|
+
Feature:
|
|
57
|
+
Scenario:
|
|
58
|
+
Given an async-step waits 0.2 seconds ... passed in 0.2
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@use.with_python.version=3.4
|
|
63
|
+
@use.with_python.version=3.5
|
|
64
|
+
@use.with_python.version=3.6
|
|
65
|
+
Scenario: Use async-step with @async_run_until_complete (@coroutine)
|
|
66
|
+
Given a new working directory
|
|
67
|
+
And a file named "features/steps/async_steps34.py" with:
|
|
68
|
+
"""
|
|
69
|
+
from behave import step
|
|
70
|
+
from behave.api.async_step import async_run_until_complete
|
|
71
|
+
import asyncio
|
|
72
|
+
|
|
73
|
+
@step('an async-step waits {duration:f} seconds')
|
|
74
|
+
@async_run_until_complete
|
|
75
|
+
@asyncio.coroutine
|
|
76
|
+
def step_async_step_waits_seconds2(context, duration):
|
|
77
|
+
yield from asyncio.sleep(duration)
|
|
78
|
+
"""
|
|
79
|
+
And a file named "features/async_run.feature" with:
|
|
80
|
+
"""
|
|
81
|
+
Feature:
|
|
82
|
+
Scenario:
|
|
83
|
+
Given an async-step waits 0.3 seconds
|
|
84
|
+
"""
|
|
85
|
+
When I run "behave -f plain --show-timings features/async_run.feature"
|
|
86
|
+
Then it should pass with:
|
|
87
|
+
"""
|
|
88
|
+
Feature:
|
|
89
|
+
Scenario:
|
|
90
|
+
Given an async-step waits 0.3 seconds ... passed in 0.3
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
@use.with_python.version=3.5
|
|
94
|
+
@use.with_python.version=3.6
|
|
95
|
+
Scenario: Use @async_run_until_complete(timeout=...) and TIMEOUT occurs (async)
|
|
96
|
+
Given a new working directory
|
|
97
|
+
And a file named "features/steps/async_steps_timeout35.py" with:
|
|
98
|
+
"""
|
|
99
|
+
from behave import step
|
|
100
|
+
from behave.api.async_step import async_run_until_complete
|
|
101
|
+
import asyncio
|
|
102
|
+
|
|
103
|
+
@step('an async-step waits {duration:f} seconds with timeout')
|
|
104
|
+
@async_run_until_complete(timeout=0.1) # BAD-TIMEOUT-BY-DESIGN
|
|
105
|
+
async def step_async_step_waits_seconds_with_timeout35(context, duration):
|
|
106
|
+
await asyncio.sleep(duration)
|
|
107
|
+
"""
|
|
108
|
+
And a file named "features/async_timeout35.feature" with:
|
|
109
|
+
"""
|
|
110
|
+
Feature:
|
|
111
|
+
Scenario:
|
|
112
|
+
Given an async-step waits 1.0 seconds with timeout
|
|
113
|
+
"""
|
|
114
|
+
When I run "behave -f plain --show-timings features/async_timeout35.feature"
|
|
115
|
+
Then it should fail with:
|
|
116
|
+
"""
|
|
117
|
+
0 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
118
|
+
"""
|
|
119
|
+
And the command output should contain:
|
|
120
|
+
"""
|
|
121
|
+
Given an async-step waits 1.0 seconds with timeout ... failed in 0.1
|
|
122
|
+
"""
|
|
123
|
+
And the command output should contain:
|
|
124
|
+
"""
|
|
125
|
+
Assertion Failed: TIMEOUT-OCCURED: timeout=0.1
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
@use.with_python.version=3.4
|
|
129
|
+
@use.with_python.version=3.5
|
|
130
|
+
@use.with_python.version=3.6
|
|
131
|
+
Scenario: Use @async_run_until_complete(timeout=...) and TIMEOUT occurs (@coroutine)
|
|
132
|
+
Given a new working directory
|
|
133
|
+
And a file named "features/steps/async_steps_timeout34.py" with:
|
|
134
|
+
"""
|
|
135
|
+
from behave import step
|
|
136
|
+
from behave.api.async_step import async_run_until_complete
|
|
137
|
+
import asyncio
|
|
138
|
+
|
|
139
|
+
@step('an async-step waits {duration:f} seconds with timeout')
|
|
140
|
+
@async_run_until_complete(timeout=0.2) # BAD-TIMEOUT-BY-DESIGN
|
|
141
|
+
@asyncio.coroutine
|
|
142
|
+
def step_async_step_waits_seconds_with_timeout34(context, duration):
|
|
143
|
+
yield from asyncio.sleep(duration)
|
|
144
|
+
"""
|
|
145
|
+
And a file named "features/async_timeout34.feature" with:
|
|
146
|
+
"""
|
|
147
|
+
Feature:
|
|
148
|
+
Scenario:
|
|
149
|
+
Given an async-step waits 1.0 seconds with timeout
|
|
150
|
+
"""
|
|
151
|
+
When I run "behave -f plain --show-timings features/async_timeout34.feature"
|
|
152
|
+
Then it should fail with:
|
|
153
|
+
"""
|
|
154
|
+
0 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
155
|
+
"""
|
|
156
|
+
And the command output should contain:
|
|
157
|
+
"""
|
|
158
|
+
Given an async-step waits 1.0 seconds with timeout ... failed in 0.2
|
|
159
|
+
"""
|
|
160
|
+
And the command output should contain:
|
|
161
|
+
"""
|
|
162
|
+
Assertion Failed: TIMEOUT-OCCURED: timeout=0.2
|
|
163
|
+
"""
|
|
164
|
+
|
|
165
|
+
@use.with_python.version=3.4
|
|
166
|
+
@use.with_python.version=3.5
|
|
167
|
+
@use.with_python.version=3.6
|
|
168
|
+
Scenario: Use async-dispatch and async-collect concepts
|
|
169
|
+
Given a new working directory
|
|
170
|
+
And a file named "features/steps/async_dispatch_steps.py" with:
|
|
171
|
+
"""
|
|
172
|
+
from behave import given, then, step
|
|
173
|
+
from behave.api.async_step import use_or_create_async_context, AsyncContext
|
|
174
|
+
from hamcrest import assert_that, equal_to, empty
|
|
175
|
+
import asyncio
|
|
176
|
+
|
|
177
|
+
@asyncio.coroutine
|
|
178
|
+
def async_func(param):
|
|
179
|
+
yield from asyncio.sleep(0.2)
|
|
180
|
+
return str(param).upper()
|
|
181
|
+
|
|
182
|
+
@given('I dispatch an async-call with param "{param}"')
|
|
183
|
+
def step_dispatch_async_call(context, param):
|
|
184
|
+
async_context = use_or_create_async_context(context, "async_context1")
|
|
185
|
+
task = async_context.loop.create_task(async_func(param))
|
|
186
|
+
async_context.tasks.append(task)
|
|
187
|
+
|
|
188
|
+
@then('the collected result of the async-calls is "{expected}"')
|
|
189
|
+
def step_collected_async_call_result_is(context, expected):
|
|
190
|
+
async_context = context.async_context1
|
|
191
|
+
done, pending = async_context.loop.run_until_complete(
|
|
192
|
+
asyncio.wait(async_context.tasks, loop=async_context.loop))
|
|
193
|
+
|
|
194
|
+
parts = [task.result() for task in done]
|
|
195
|
+
joined_result = ", ".join(sorted(parts))
|
|
196
|
+
assert_that(joined_result, equal_to(expected))
|
|
197
|
+
assert_that(pending, empty())
|
|
198
|
+
"""
|
|
199
|
+
And a file named "features/async_dispatch.feature" with:
|
|
200
|
+
"""
|
|
201
|
+
Feature:
|
|
202
|
+
Scenario:
|
|
203
|
+
Given I dispatch an async-call with param "Alice"
|
|
204
|
+
And I dispatch an async-call with param "Bob"
|
|
205
|
+
Then the collected result of the async-calls is "ALICE, BOB"
|
|
206
|
+
"""
|
|
207
|
+
When I run "behave -f plain --show-timings features/async_dispatch.feature"
|
|
208
|
+
Then it should pass with:
|
|
209
|
+
"""
|
|
210
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
211
|
+
"""
|
|
212
|
+
And the command output should contain:
|
|
213
|
+
"""
|
|
214
|
+
Given I dispatch an async-call with param "Alice" ... passed in 0.00
|
|
215
|
+
"""
|
|
216
|
+
And the command output should contain:
|
|
217
|
+
"""
|
|
218
|
+
And I dispatch an async-call with param "Bob" ... passed in 0.00
|
|
219
|
+
"""
|
|
220
|
+
And the command output should contain:
|
|
221
|
+
"""
|
|
222
|
+
Then the collected result of the async-calls is "ALICE, BOB" ... passed in 0.2
|
|
223
|
+
"""
|
|
224
|
+
But note that "the async-collect step waits 0.2 seconds for both async-tasks to finish"
|
|
225
|
+
And note that "the async-dispatch steps do not wait at all"
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
Feature: Duplicated Step Definitions
|
|
2
|
+
|
|
3
|
+
As I tester and test writer
|
|
4
|
+
I want to know when step definitions are duplicated
|
|
5
|
+
So that I can fix these problems.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Duplicated Step in same File
|
|
9
|
+
Given a new working directory
|
|
10
|
+
And a file named "features/steps/alice_steps.py" with:
|
|
11
|
+
"""
|
|
12
|
+
from behave import given, when, then
|
|
13
|
+
|
|
14
|
+
@given(u'I call Alice')
|
|
15
|
+
def step(context):
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
@given(u'I call Alice')
|
|
19
|
+
def step(context):
|
|
20
|
+
pass
|
|
21
|
+
"""
|
|
22
|
+
And a file named "features/duplicated_step_alice.feature" with:
|
|
23
|
+
"""
|
|
24
|
+
Feature:
|
|
25
|
+
Scenario: Duplicated Step
|
|
26
|
+
Given I call Alice
|
|
27
|
+
"""
|
|
28
|
+
When I run "behave -f plain features/duplicated_step_alice.feature"
|
|
29
|
+
Then it should fail
|
|
30
|
+
And the command output should contain:
|
|
31
|
+
"""
|
|
32
|
+
AmbiguousStep: @given('I call Alice') has already been defined in
|
|
33
|
+
existing step @given('I call Alice') at features/steps/alice_steps.py:3
|
|
34
|
+
"""
|
|
35
|
+
And the command output should contain:
|
|
36
|
+
"""
|
|
37
|
+
File "features/steps/alice_steps.py", line 7, in <module>
|
|
38
|
+
@given(u'I call Alice')
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
Scenario: Duplicated Step Definition in another File
|
|
43
|
+
Given a new working directory
|
|
44
|
+
And a file named "features/steps/bob1_steps.py" with:
|
|
45
|
+
"""
|
|
46
|
+
from behave import given
|
|
47
|
+
|
|
48
|
+
@given('I call Bob')
|
|
49
|
+
def step_call_bob1(context):
|
|
50
|
+
pass
|
|
51
|
+
"""
|
|
52
|
+
And a file named "features/steps/bob2_steps.py" with:
|
|
53
|
+
"""
|
|
54
|
+
from behave import given
|
|
55
|
+
|
|
56
|
+
@given('I call Bob')
|
|
57
|
+
def step_call_bob2(context):
|
|
58
|
+
pass
|
|
59
|
+
"""
|
|
60
|
+
And a file named "features/duplicated_step_bob.feature" with:
|
|
61
|
+
"""
|
|
62
|
+
Feature:
|
|
63
|
+
Scenario: Duplicated Step
|
|
64
|
+
Given I call Bob
|
|
65
|
+
"""
|
|
66
|
+
When I run "behave -f plain features/duplicated_step_bob.feature"
|
|
67
|
+
Then it should fail
|
|
68
|
+
And the command output should contain:
|
|
69
|
+
"""
|
|
70
|
+
AmbiguousStep: @given('I call Bob') has already been defined in
|
|
71
|
+
existing step @given('I call Bob') at features/steps/bob1_steps.py:3
|
|
72
|
+
"""
|
|
73
|
+
And the command output should contain:
|
|
74
|
+
"""
|
|
75
|
+
File "features/steps/bob2_steps.py", line 3, in <module>
|
|
76
|
+
@given('I call Bob')
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
@xfail
|
|
80
|
+
Scenario: Duplicated Same Step Definition via import from another File
|
|
81
|
+
Given a new working directory
|
|
82
|
+
And a file named "features/steps/charly1_steps.py" with:
|
|
83
|
+
"""
|
|
84
|
+
from behave import given
|
|
85
|
+
|
|
86
|
+
@given('I call Charly')
|
|
87
|
+
def step_call_charly1(context):
|
|
88
|
+
pass
|
|
89
|
+
"""
|
|
90
|
+
And a file named "features/steps/charly2_steps.py" with:
|
|
91
|
+
"""
|
|
92
|
+
import charly1_steps
|
|
93
|
+
"""
|
|
94
|
+
And a file named "features/duplicated_step_via_import.feature" with:
|
|
95
|
+
"""
|
|
96
|
+
Feature:
|
|
97
|
+
Scenario: Duplicated same step via import
|
|
98
|
+
Given I call Charly
|
|
99
|
+
"""
|
|
100
|
+
When I run "behave -f plain features/duplicated_step_via_import.feature"
|
|
101
|
+
Then it should pass
|
|
102
|
+
And the command output should not contain:
|
|
103
|
+
"""
|
|
104
|
+
AmbiguousStep: @given('I call Charly') has already been defined in
|
|
105
|
+
existing step @given('I call Charly') at features/steps/charly1_steps.py:3
|
|
106
|
+
"""
|