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,11 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #197: Hooks processing should be more exception safe
|
|
3
|
+
|
|
4
|
+
TESTS PROVIDED IN: features/runner.hook_errors.feature
|
|
5
|
+
|
|
6
|
+
@reuse.colocated_test
|
|
7
|
+
Scenario: Hook processing in case of errors
|
|
8
|
+
Given I use the current directory as working directory
|
|
9
|
+
When I run "behave -f plain features/runner.hook_errors.feature"
|
|
10
|
+
Then it should pass
|
|
11
|
+
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #216: ANSI escape sequences are used while using --wip option
|
|
3
|
+
|
|
4
|
+
. ENSURE THAT:
|
|
5
|
+
. * Coloring is disabled when --wip option is used.
|
|
6
|
+
. * In addition, no colouring is used when using --show-skipped option
|
|
7
|
+
. * Undefined step snippets are not "colored".
|
|
8
|
+
|
|
9
|
+
@setup
|
|
10
|
+
Scenario: Feature Setup
|
|
11
|
+
Given a new working directory
|
|
12
|
+
And a file named "behave.ini" with:
|
|
13
|
+
"""
|
|
14
|
+
[behave]
|
|
15
|
+
default_format = pretty
|
|
16
|
+
show_skipped = false
|
|
17
|
+
show_timings = false
|
|
18
|
+
"""
|
|
19
|
+
And a file named "features/steps/use_behave4cmd_steps.py" with:
|
|
20
|
+
"""
|
|
21
|
+
import behave4cmd0.passing_steps
|
|
22
|
+
import behave4cmd0.failing_steps
|
|
23
|
+
import behave4cmd0.note_steps
|
|
24
|
+
"""
|
|
25
|
+
And a file named "features/steps/ansi_steps.py" with:
|
|
26
|
+
"""
|
|
27
|
+
from behave import step, then
|
|
28
|
+
from behave4cmd0.command_steps import step_command_output_should_not_contain_text
|
|
29
|
+
|
|
30
|
+
@then(u'the command output should not contain any ANSI escape sequences')
|
|
31
|
+
def step_command_ouput_should_not_contain_ansi_sequences(context):
|
|
32
|
+
CSI = u"\x1b[" #< ANSI CONTROL SEQUENCE INTRODUCER (CSI).
|
|
33
|
+
step_command_output_should_not_contain_text(context, CSI)
|
|
34
|
+
"""
|
|
35
|
+
And a file named "features/scenario_with_undefined_steps.feature" with:
|
|
36
|
+
"""
|
|
37
|
+
Feature:
|
|
38
|
+
|
|
39
|
+
@wip
|
|
40
|
+
Scenario: Alice
|
|
41
|
+
Given a step passes
|
|
42
|
+
When a step is undefined
|
|
43
|
+
Then a step passes
|
|
44
|
+
|
|
45
|
+
@foo
|
|
46
|
+
Scenario: Bob
|
|
47
|
+
When another step is undefined
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
Scenario: When using --wip, coloring is disabled
|
|
52
|
+
When I run "behave --wip features"
|
|
53
|
+
Then it should fail with:
|
|
54
|
+
"""
|
|
55
|
+
0 features passed, 1 failed, 0 skipped
|
|
56
|
+
0 scenarios passed, 1 failed, 0 skipped, 1 untested
|
|
57
|
+
1 step passed, 0 failed, 1 skipped, 1 undefined, 1 untested
|
|
58
|
+
"""
|
|
59
|
+
And the command output should contain:
|
|
60
|
+
"""
|
|
61
|
+
Scenario: Alice
|
|
62
|
+
Given a step passes ... passed
|
|
63
|
+
When a step is undefined ... undefined
|
|
64
|
+
"""
|
|
65
|
+
But the command output should not contain any ANSI escape sequences
|
|
66
|
+
And note that "the plain formatter is used as default formatter"
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
Scenario: When using --wip and --show-skipped, coloring is disabled
|
|
70
|
+
When I run "behave --wip --show-skipped features"
|
|
71
|
+
Then it should fail with:
|
|
72
|
+
"""
|
|
73
|
+
0 features passed, 1 failed, 0 skipped
|
|
74
|
+
0 scenarios passed, 1 failed, 0 skipped, 1 untested
|
|
75
|
+
1 step passed, 0 failed, 1 skipped, 1 undefined, 1 untested
|
|
76
|
+
"""
|
|
77
|
+
And the command output should contain:
|
|
78
|
+
"""
|
|
79
|
+
Scenario: Alice
|
|
80
|
+
Given a step passes ... passed
|
|
81
|
+
When a step is undefined ... undefined
|
|
82
|
+
"""
|
|
83
|
+
But the command output should not contain any ANSI escape sequences
|
|
84
|
+
And note that "the plain formatter is used as default formatter"
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
Scenario: When using --wip and --format, coloring is disabled
|
|
88
|
+
When I run "behave --wip -f pretty features"
|
|
89
|
+
Then it should fail with:
|
|
90
|
+
"""
|
|
91
|
+
0 features passed, 1 failed, 0 skipped
|
|
92
|
+
0 scenarios passed, 1 failed, 0 skipped, 1 untested
|
|
93
|
+
1 step passed, 0 failed, 1 skipped, 1 undefined, 1 untested
|
|
94
|
+
"""
|
|
95
|
+
And the command output should contain:
|
|
96
|
+
"""
|
|
97
|
+
Feature: # features/scenario_with_undefined_steps.feature:1
|
|
98
|
+
|
|
99
|
+
@wip
|
|
100
|
+
Scenario: Alice # features/scenario_with_undefined_steps.feature:4
|
|
101
|
+
Given a step passes # ../behave4cmd0/passing_steps.py:23
|
|
102
|
+
When a step is undefined # None
|
|
103
|
+
Then a step passes # None
|
|
104
|
+
"""
|
|
105
|
+
But the command output should not contain any ANSI escape sequences
|
|
106
|
+
And note that "the plain formatter is overridden on command-line"
|
|
107
|
+
And note that "the coloring mode is disabled"
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
Scenario: When using --wip and --color, coloring is disabled
|
|
111
|
+
When I run "behave --wip -f pretty --color features"
|
|
112
|
+
Then it should fail with:
|
|
113
|
+
"""
|
|
114
|
+
0 features passed, 1 failed, 0 skipped
|
|
115
|
+
0 scenarios passed, 1 failed, 0 skipped, 1 untested
|
|
116
|
+
1 step passed, 0 failed, 1 skipped, 1 undefined, 1 untested
|
|
117
|
+
"""
|
|
118
|
+
And the command output should contain:
|
|
119
|
+
"""
|
|
120
|
+
Feature: # features/scenario_with_undefined_steps.feature:1
|
|
121
|
+
|
|
122
|
+
@wip
|
|
123
|
+
Scenario: Alice # features/scenario_with_undefined_steps.feature:4
|
|
124
|
+
Given a step passes # ../behave4cmd0/passing_steps.py:23
|
|
125
|
+
When a step is undefined # None
|
|
126
|
+
Then a step passes # None
|
|
127
|
+
"""
|
|
128
|
+
But the command output should not contain any ANSI escape sequences
|
|
129
|
+
And note that "the coloring mode is overridden by the wip mode"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
@unicode
|
|
3
|
+
Feature: UnicodeDecodeError in tracebacks (when an exception in a step implementation)
|
|
4
|
+
|
|
5
|
+
. Exception with non-ASCII character is raised in a step implementation.
|
|
6
|
+
. UnicodeDecodeError occurs with:
|
|
7
|
+
. 'ascii' codec can't decode byte 0x82 in position 11: ordinal not in range(128)
|
|
8
|
+
.
|
|
9
|
+
. RELATED:
|
|
10
|
+
. * features/i18n.unicode_problems.feature
|
|
11
|
+
|
|
12
|
+
@setup
|
|
13
|
+
Scenario: Feature Setup
|
|
14
|
+
Given a new working directory
|
|
15
|
+
And a file named "features/steps/steps.py" with:
|
|
16
|
+
"""
|
|
17
|
+
# -*- coding: UTF-8 -*-
|
|
18
|
+
from behave import step
|
|
19
|
+
import six
|
|
20
|
+
if six.PY2:
|
|
21
|
+
chr = unichr
|
|
22
|
+
|
|
23
|
+
@step(u'a step raises an exception with non-ASCII character "{char_code:d}"')
|
|
24
|
+
def step_raises_exception_with_non_ascii_text(context, char_code):
|
|
25
|
+
assert 0 <= char_code <= 255, "RANGE-ERROR: char_code=%s" % char_code
|
|
26
|
+
raise RuntimeError(u"FAIL:"+ chr(char_code) +";")
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
Scenario Outline: Syndrome with non-ASCII char <char_code> (format=<format>)
|
|
30
|
+
Given a file named "features/syndrome_0226_<char_code>.feature" with:
|
|
31
|
+
"""
|
|
32
|
+
Feature:
|
|
33
|
+
Scenario:
|
|
34
|
+
Given a step raises an exception with non-ASCII character "<char_code>"
|
|
35
|
+
"""
|
|
36
|
+
When I run "behave -f <format> features/syndrome_0226_<char_code>.feature"
|
|
37
|
+
Then it should fail with:
|
|
38
|
+
"""
|
|
39
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
40
|
+
0 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
41
|
+
"""
|
|
42
|
+
And the command output should contain:
|
|
43
|
+
"""
|
|
44
|
+
RuntimeError: FAIL:<special_char>;
|
|
45
|
+
"""
|
|
46
|
+
But the command output should not contain "UnicodeDecodeError"
|
|
47
|
+
|
|
48
|
+
Examples:
|
|
49
|
+
| format | char_code | special_char | comment! |
|
|
50
|
+
| plain | 162 | ¢ | cent |
|
|
51
|
+
| pretty | 191 | ¿ | question-mark on-the-head |
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
@feature_request
|
|
2
|
+
@issue
|
|
3
|
+
Feature: Issue #228: Allow before_scenario to determine whether steps should be run.
|
|
4
|
+
|
|
5
|
+
Allow before_scenario to call mark_skipped() and early out if the current
|
|
6
|
+
scenario should be skipped.
|
|
7
|
+
|
|
8
|
+
Scenario: Allow before_scenario to skip the current scenario
|
|
9
|
+
|
|
10
|
+
Given a new working directory
|
|
11
|
+
And a file named "features/steps/steps.py" with:
|
|
12
|
+
"""
|
|
13
|
+
from behave import step
|
|
14
|
+
|
|
15
|
+
@step('a step passes')
|
|
16
|
+
def step_passes(context):
|
|
17
|
+
pass
|
|
18
|
+
"""
|
|
19
|
+
And a file named "features/environment.py" with
|
|
20
|
+
"""
|
|
21
|
+
def before_scenario(context, scenario):
|
|
22
|
+
if scenario.name == 'Skip this scenario':
|
|
23
|
+
scenario.skip()
|
|
24
|
+
"""
|
|
25
|
+
And a file named "features/issue228_example.feature" with
|
|
26
|
+
"""
|
|
27
|
+
Feature:
|
|
28
|
+
Scenario: Skip this scenario
|
|
29
|
+
Given I'm using an "undefined step"
|
|
30
|
+
|
|
31
|
+
Scenario: Run this scenario
|
|
32
|
+
Given a step passes
|
|
33
|
+
"""
|
|
34
|
+
When I run "behave -f plain features/issue228_example.feature"
|
|
35
|
+
Then it should pass
|
|
36
|
+
And the command output should contain:
|
|
37
|
+
"""
|
|
38
|
+
1 feature passed, 0 failed, 0 skipped
|
|
39
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
40
|
+
1 step passed, 0 failed, 1 skipped, 0 undefined
|
|
41
|
+
"""
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
@unicode
|
|
3
|
+
Feature: Assert with non-ASCII char causes UnicodeDecodeError
|
|
4
|
+
|
|
5
|
+
. Failing assert with non-ASCII character in its message
|
|
6
|
+
. causes UnicodeDecodeError and silent exit in Python2.
|
|
7
|
+
.
|
|
8
|
+
. RELATED:
|
|
9
|
+
. * features/i18n.unicode_problems.feature
|
|
10
|
+
|
|
11
|
+
@setup
|
|
12
|
+
Scenario: Feature Setup
|
|
13
|
+
Given a new working directory
|
|
14
|
+
And a file named "features/steps/steps.py" with:
|
|
15
|
+
"""
|
|
16
|
+
from behave import step
|
|
17
|
+
|
|
18
|
+
@step(u'a step fails with non-ASCII character "{char_code:d}"')
|
|
19
|
+
def step_fails_with_non_ascii_text(context, char_code):
|
|
20
|
+
assert 0 <= char_code <= 255, "RANGE-ERROR: char_code=%s" % char_code
|
|
21
|
+
assert False, "FAIL:"+ chr(char_code) +";"
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
Scenario Outline: Syndrome with non-ASCII char <char_code> (format=<format>)
|
|
25
|
+
Given a file named "features/syndrome_0230_<char_code>.feature" with:
|
|
26
|
+
"""
|
|
27
|
+
Feature:
|
|
28
|
+
Scenario:
|
|
29
|
+
Given a step fails with non-ASCII character "<char_code>"
|
|
30
|
+
"""
|
|
31
|
+
When I run "behave -f <format> features/syndrome_0230_<char_code>.feature"
|
|
32
|
+
Then it should fail with:
|
|
33
|
+
"""
|
|
34
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
35
|
+
0 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
36
|
+
"""
|
|
37
|
+
And the command output should not contain "UnicodeDecodeError"
|
|
38
|
+
But the command output should contain:
|
|
39
|
+
"""
|
|
40
|
+
Assertion Failed: FAIL:
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
Examples:
|
|
44
|
+
| format | char_code |
|
|
45
|
+
| plain | 130 |
|
|
46
|
+
| pretty | 190 |
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
@not_reproducible
|
|
3
|
+
Feature: Issue #231: Display the output of the last print command
|
|
4
|
+
|
|
5
|
+
. The output of the last print command in a step is not displayed
|
|
6
|
+
. in the behave output (at least with standard pretty formatter),
|
|
7
|
+
. unless the string to print ends with newline ('\n').
|
|
8
|
+
.
|
|
9
|
+
. ANALYSIS: NOT-REPRODUCIBLE
|
|
10
|
+
. Checked print function and stdout without newline.
|
|
11
|
+
. Both show the expected capture stdout output when the step fails.
|
|
12
|
+
|
|
13
|
+
@setup
|
|
14
|
+
Scenario: Feature Setup
|
|
15
|
+
Given a new working directory
|
|
16
|
+
And a file named "features/syndrome1.feature" with:
|
|
17
|
+
"""
|
|
18
|
+
Feature:
|
|
19
|
+
Scenario: Alice
|
|
20
|
+
Given a step passes
|
|
21
|
+
When a step passes
|
|
22
|
+
Then I write "ALICE was HERE" without newline to stdout and fail
|
|
23
|
+
"""
|
|
24
|
+
And a file named "features/syndrome2.feature" with:
|
|
25
|
+
"""
|
|
26
|
+
Feature:
|
|
27
|
+
Scenario: Bob
|
|
28
|
+
Given a step passes
|
|
29
|
+
Then I print "BOB was HERE" without newline and fail
|
|
30
|
+
"""
|
|
31
|
+
And a file named "features/steps/steps.py" with:
|
|
32
|
+
"""
|
|
33
|
+
from __future__ import print_function
|
|
34
|
+
from behave import step
|
|
35
|
+
import sys
|
|
36
|
+
|
|
37
|
+
@step('{word:w} step passes')
|
|
38
|
+
def step_passes(context, word):
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
@step('I write "{message}" without newline to stdout and fail')
|
|
42
|
+
def step_write_without_newline_and_fail(context, message):
|
|
43
|
+
sys.stdout.write(message)
|
|
44
|
+
assert False, "FAIL: "+ message
|
|
45
|
+
|
|
46
|
+
@step('I print "{message}" without newline and fail')
|
|
47
|
+
def step_print_without_newline_and_fail(context, message):
|
|
48
|
+
print(message, end="")
|
|
49
|
+
assert False, "FAIL: "+ message
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
Scenario: Write to stdout without newline
|
|
54
|
+
When I run "behave -f pretty -c -T features/syndrome1.feature"
|
|
55
|
+
Then it should fail with:
|
|
56
|
+
"""
|
|
57
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
58
|
+
2 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
59
|
+
"""
|
|
60
|
+
And the command output should contain:
|
|
61
|
+
"""
|
|
62
|
+
Captured stdout:
|
|
63
|
+
ALICE was HERE
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
Scenario: Use print function without newline
|
|
67
|
+
When I run "behave -f pretty -c -T features/syndrome2.feature"
|
|
68
|
+
Then it should fail with:
|
|
69
|
+
"""
|
|
70
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
71
|
+
1 step passed, 1 failed, 0 skipped, 0 undefined
|
|
72
|
+
"""
|
|
73
|
+
And the command output should contain:
|
|
74
|
+
"""
|
|
75
|
+
Captured stdout:
|
|
76
|
+
BOB was HERE
|
|
77
|
+
"""
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
@feature_request
|
|
3
|
+
Feature: Issue #238 Skip a Scenario in a Scenario Outline
|
|
4
|
+
|
|
5
|
+
Scenario:
|
|
6
|
+
Given a new working directory
|
|
7
|
+
And a file named "features/issue238_1.feature" with:
|
|
8
|
+
"""
|
|
9
|
+
Feature: Testing Scenario skipping
|
|
10
|
+
Scenario Outline:
|
|
11
|
+
Given a set of "<thing>"
|
|
12
|
+
When I ensure that "<thing>" != invalid
|
|
13
|
+
Then it should pass
|
|
14
|
+
|
|
15
|
+
Examples:
|
|
16
|
+
| thing |
|
|
17
|
+
| valid |
|
|
18
|
+
| invalid |
|
|
19
|
+
"""
|
|
20
|
+
And a file named "features/steps/steps.py" with:
|
|
21
|
+
"""
|
|
22
|
+
@given('a set of "{thing}"')
|
|
23
|
+
def step_check_thing_assumption(ctx, thing):
|
|
24
|
+
if thing == "invalid":
|
|
25
|
+
ctx.scenario.skip("ASSUMPTION-MISMATCH: INVALID-THING")
|
|
26
|
+
|
|
27
|
+
@when('I ensure that "{thing}" != invalid')
|
|
28
|
+
def step_ensure_that_thing_is_valid(ctx, thing):
|
|
29
|
+
assert thing != "invalid"
|
|
30
|
+
|
|
31
|
+
@then('it should pass')
|
|
32
|
+
def step_passes(context):
|
|
33
|
+
pass
|
|
34
|
+
"""
|
|
35
|
+
When I run "behave -f plain --show-skipped --no-timings"
|
|
36
|
+
Then it should pass with:
|
|
37
|
+
"""
|
|
38
|
+
1 feature passed, 0 failed, 0 skipped
|
|
39
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
40
|
+
3 steps passed, 0 failed, 3 skipped, 0 undefined
|
|
41
|
+
"""
|
|
42
|
+
And the command output should contain:
|
|
43
|
+
"""
|
|
44
|
+
Scenario Outline: -- @1.1
|
|
45
|
+
Given a set of "valid" ... passed
|
|
46
|
+
When I ensure that "valid" != invalid ... passed
|
|
47
|
+
Then it should pass ... passed
|
|
48
|
+
|
|
49
|
+
Scenario Outline: -- @1.2
|
|
50
|
+
Given a set of "invalid" ... skipped
|
|
51
|
+
"""
|
|
52
|
+
But note that "the step that skipped the scenario is also marked as skipped"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
@unicode
|
|
3
|
+
Feature: UnicodeDecodeError in model.Step (when step fails)
|
|
4
|
+
|
|
5
|
+
. Output of failing step contains non-ASCII characters.
|
|
6
|
+
.
|
|
7
|
+
. RELATED:
|
|
8
|
+
. * features/i18n.unicode_problems.feature
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@reuse.colocated_test
|
|
12
|
+
Scenario:
|
|
13
|
+
Given I use the current directory as working directory
|
|
14
|
+
When I run "behave -f plain --tags=@setup,@problematic.output features/i18n.unicode_problems.feature"
|
|
15
|
+
Then it should pass
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
@issue
|
|
2
|
+
Feature: Issue #280: AmbiguousStep error with similar step definitions and use_step_matcher("re")
|
|
3
|
+
|
|
4
|
+
. While using the RegexMatcher with steps that have the same step prefix
|
|
5
|
+
. an AmbiguousStep exception occurs if the shorter step is registered first.
|
|
6
|
+
.
|
|
7
|
+
. EXAMPLE:
|
|
8
|
+
. Two steps with definitions that have the same step prefix:
|
|
9
|
+
.
|
|
10
|
+
. * I do something
|
|
11
|
+
. * I do something more
|
|
12
|
+
.
|
|
13
|
+
. cause an AmbiguousStep error to be thrown:
|
|
14
|
+
.
|
|
15
|
+
. behave.step_registry.AmbiguousStep: @when('I do something more') has already
|
|
16
|
+
. been defined in existing step @when('I do something') at ...
|
|
17
|
+
.
|
|
18
|
+
. SOLUTION: Add regex begin-/end-markers around the step text( '^'+ step + '$')
|
|
19
|
+
. NOTE: Only RegexMatcher is affected.
|
|
20
|
+
|
|
21
|
+
@setup
|
|
22
|
+
Scenario: Feature Setup
|
|
23
|
+
Given a new working directory
|
|
24
|
+
And a file named "features/steps/calculator_steps1.py" with:
|
|
25
|
+
"""
|
|
26
|
+
from behave import given, then
|
|
27
|
+
from hamcrest import assert_that, equal_to
|
|
28
|
+
|
|
29
|
+
class SimpleCalculator(object):
|
|
30
|
+
def __init__(self):
|
|
31
|
+
self.result = 0
|
|
32
|
+
|
|
33
|
+
def add(self, value):
|
|
34
|
+
self.result += value
|
|
35
|
+
|
|
36
|
+
@given(u'a calculator')
|
|
37
|
+
def step_impl(context):
|
|
38
|
+
context.calculator = SimpleCalculator()
|
|
39
|
+
|
|
40
|
+
@then(u'the calculator result is "{expected_result:d}"')
|
|
41
|
+
def step_impl(context, expected_result):
|
|
42
|
+
assert_that(context.calculator.result, equal_to(expected_result))
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
Scenario: Ensure RegexMatcher is not ordering sensitive
|
|
46
|
+
Given a file named "features/syndrome_280_1.feature" with:
|
|
47
|
+
"""
|
|
48
|
+
Feature:
|
|
49
|
+
Scenario: Use both steps
|
|
50
|
+
Given I do something
|
|
51
|
+
When I do something more
|
|
52
|
+
"""
|
|
53
|
+
And a file named "features/steps/simple_steps.py" with:
|
|
54
|
+
"""
|
|
55
|
+
from behave import step, use_step_matcher
|
|
56
|
+
use_step_matcher("re")
|
|
57
|
+
|
|
58
|
+
# -- ORDERING SENSITIVE PART:
|
|
59
|
+
@step(u'I do something')
|
|
60
|
+
def step_impl(context):
|
|
61
|
+
pass
|
|
62
|
+
|
|
63
|
+
@step(u'I do something more')
|
|
64
|
+
def step_impl(context):
|
|
65
|
+
pass
|
|
66
|
+
"""
|
|
67
|
+
When I run "behave -f plain features/syndrome_280_1.feature"
|
|
68
|
+
Then it should pass with:
|
|
69
|
+
"""
|
|
70
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
71
|
+
"""
|
|
72
|
+
But the command output should not contain "AmbiguousStep:"
|
|
73
|
+
And the command output should not contain:
|
|
74
|
+
"""
|
|
75
|
+
AmbiguousStep: @step('I do something more') has already been defined in
|
|
76
|
+
existing step @step('I do something') at features/steps/simple_steps.py:5'
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
Scenario: Ensure correct step implementation is selected
|
|
80
|
+
Given a file named "features/syndrome_280_2.feature" with:
|
|
81
|
+
"""
|
|
82
|
+
Feature: Steps with same step prefix -- Use correct step implementation
|
|
83
|
+
Scenario: Use shorter step
|
|
84
|
+
Given a calculator
|
|
85
|
+
When I add "2" to it
|
|
86
|
+
And I add "3" to it
|
|
87
|
+
Then the calculator result is "5"
|
|
88
|
+
|
|
89
|
+
Scenario: Use longer step
|
|
90
|
+
Given a calculator
|
|
91
|
+
When I add "2" to it twice
|
|
92
|
+
And I add "3" to it
|
|
93
|
+
Then the calculator result is "7"
|
|
94
|
+
"""
|
|
95
|
+
And a file named "features/steps/calculator_steps2.py" with:
|
|
96
|
+
"""
|
|
97
|
+
from behave import when, use_step_matcher
|
|
98
|
+
use_step_matcher("re")
|
|
99
|
+
|
|
100
|
+
# -- ORDERING SENSITIVE PART:
|
|
101
|
+
@when(u'I add "(?P<value>\d+)" to it')
|
|
102
|
+
def step_impl(context, value):
|
|
103
|
+
number_value = int(value)
|
|
104
|
+
context.calculator.add(number_value)
|
|
105
|
+
|
|
106
|
+
@when(u'I add "(?P<value>\d+)" to it twice')
|
|
107
|
+
def step_impl(context, value):
|
|
108
|
+
number_value = int(value)
|
|
109
|
+
context.calculator.add(number_value)
|
|
110
|
+
context.calculator.add(number_value)
|
|
111
|
+
"""
|
|
112
|
+
When I run "behave -f pretty --no-color features/syndrome_280_2.feature"
|
|
113
|
+
Then it should pass with:
|
|
114
|
+
"""
|
|
115
|
+
When I add "2" to it twice # features/steps/calculator_steps2.py:10
|
|
116
|
+
And I add "3" to it # features/steps/calculator_steps2.py:5
|
|
117
|
+
"""
|
|
118
|
+
But the command output should not contain "AmbiguousStep"
|