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,445 @@
|
|
|
1
|
+
Feature: Internationalization (i18n) and Problems with Unicode Strings
|
|
2
|
+
|
|
3
|
+
. POTENTIAL PROBLEM AREAS:
|
|
4
|
+
. * Feature, scenario, step names with problematic chars
|
|
5
|
+
. * Tags with problematic chars
|
|
6
|
+
. * step raises exception with problematic text (output capture)
|
|
7
|
+
. * step generates output with problematic and some step fails (stdout capture)
|
|
8
|
+
. * filenames with problematic chars: feature files, steps files
|
|
9
|
+
.
|
|
10
|
+
. CHECKED FORMATTERS and REPORTERS:
|
|
11
|
+
. * plain
|
|
12
|
+
. * pretty
|
|
13
|
+
. * junit (used via "behave.ini" defaults)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@setup
|
|
17
|
+
Scenario: Feature Setup
|
|
18
|
+
Given a new working directory
|
|
19
|
+
And a file named "behave.ini" with:
|
|
20
|
+
"""
|
|
21
|
+
[behave]
|
|
22
|
+
show_timings = false
|
|
23
|
+
show_skipped = false
|
|
24
|
+
show_source = true
|
|
25
|
+
junit = true
|
|
26
|
+
"""
|
|
27
|
+
And a file named "features/steps/passing_steps.py" with:
|
|
28
|
+
"""
|
|
29
|
+
# -*- coding: UTF-8 -*-
|
|
30
|
+
from behave import step
|
|
31
|
+
|
|
32
|
+
@step(u'{word:w} step passes')
|
|
33
|
+
def step_passes(context, word):
|
|
34
|
+
pass
|
|
35
|
+
|
|
36
|
+
@step(u'{word:w} step passes with "{text}"')
|
|
37
|
+
def step_passes_with_text(context, word, text):
|
|
38
|
+
pass
|
|
39
|
+
|
|
40
|
+
@step(u'{word:w} step fails')
|
|
41
|
+
def step_fails(context, word):
|
|
42
|
+
assert False, "XFAIL"
|
|
43
|
+
|
|
44
|
+
@step(u'{word:w} step fails with "{text}"')
|
|
45
|
+
def step_fails_with_text(context, word, text):
|
|
46
|
+
assert False, u"XFAIL: "+ text
|
|
47
|
+
"""
|
|
48
|
+
And a file named "features/steps/step_write_output.py" with:
|
|
49
|
+
"""
|
|
50
|
+
# -*- coding: UTF-8 -*-
|
|
51
|
+
from __future__ import print_function
|
|
52
|
+
from behave import step
|
|
53
|
+
import six
|
|
54
|
+
|
|
55
|
+
@step(u'I write text "{text}" to stdout')
|
|
56
|
+
def step_write_text(context, text):
|
|
57
|
+
if six.PY2 and isinstance(text, six.text_type):
|
|
58
|
+
text = text.encode("utf-8", "replace")
|
|
59
|
+
print(text)
|
|
60
|
+
|
|
61
|
+
@step(u'I write bytes "{data}" to stdout')
|
|
62
|
+
def step_write_bytes(context, data):
|
|
63
|
+
if isinstance(data, six.text_type):
|
|
64
|
+
data = data.encode("unicode-escape", "replace")
|
|
65
|
+
print(data)
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
Scenario Outline: Problematic scenario name: <scenario.name> (case: passed, <format>)
|
|
70
|
+
Given a file named "features/scenario_name_problematic_and_pass.feature" with:
|
|
71
|
+
"""
|
|
72
|
+
Feature:
|
|
73
|
+
Scenario: <scenario.name>
|
|
74
|
+
Given a step passes
|
|
75
|
+
"""
|
|
76
|
+
When I run "behave -f <format> features/scenario_name_problematic_and_pass.feature"
|
|
77
|
+
Then it should pass with:
|
|
78
|
+
"""
|
|
79
|
+
1 feature passed, 0 failed, 0 skipped
|
|
80
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
81
|
+
"""
|
|
82
|
+
And the command output should contain:
|
|
83
|
+
"""
|
|
84
|
+
Scenario: <scenario.name>
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
Examples:
|
|
88
|
+
| format | scenario.name |
|
|
89
|
+
| plain | Café |
|
|
90
|
+
| pretty | Ärgernis ist überall |
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
Scenario Outline: Problematic scenario name: <scenario.name> (case: failed, <format>)
|
|
94
|
+
Given a file named "features/scenario_name_problematic_and_fail.feature" with:
|
|
95
|
+
"""
|
|
96
|
+
Feature:
|
|
97
|
+
Scenario: <scenario.name>
|
|
98
|
+
Given a step fails
|
|
99
|
+
"""
|
|
100
|
+
When I run "behave -f <format> features/scenario_name_problematic_and_fail.feature"
|
|
101
|
+
Then it should fail with:
|
|
102
|
+
"""
|
|
103
|
+
0 features passed, 1 failed, 0 skipped
|
|
104
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
105
|
+
"""
|
|
106
|
+
And the command output should contain:
|
|
107
|
+
"""
|
|
108
|
+
Scenario: <scenario.name>
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
Examples:
|
|
112
|
+
| format | scenario.name |
|
|
113
|
+
| plain | Café |
|
|
114
|
+
| pretty | Ärgernis ist überall |
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
Scenario Outline: Problematic step: <step.text> (case: passed, <format>)
|
|
118
|
+
Given a file named "features/step_problematic_and_pass.feature" with:
|
|
119
|
+
"""
|
|
120
|
+
Feature:
|
|
121
|
+
Scenario:
|
|
122
|
+
Given a step passes with "<step.text>"
|
|
123
|
+
"""
|
|
124
|
+
When I run "behave -f <format> features/step_problematic_and_pass.feature"
|
|
125
|
+
Then it should pass with:
|
|
126
|
+
"""
|
|
127
|
+
1 feature passed, 0 failed, 0 skipped
|
|
128
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
129
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
130
|
+
"""
|
|
131
|
+
|
|
132
|
+
Examples:
|
|
133
|
+
| format | step.text |
|
|
134
|
+
| plain | Café |
|
|
135
|
+
| pretty | Ärgernis ist überall |
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
Scenario Outline: Problematic step: <step.text> (case: fail, <format>)
|
|
139
|
+
Given a file named "features/step_problematic_and_fail.feature" with:
|
|
140
|
+
"""
|
|
141
|
+
Feature:
|
|
142
|
+
Scenario:
|
|
143
|
+
Given a step fails with "<step.text>"
|
|
144
|
+
"""
|
|
145
|
+
When I run "behave -f <format> features/step_problematic_and_fail.feature"
|
|
146
|
+
Then it should fail with:
|
|
147
|
+
"""
|
|
148
|
+
0 features passed, 1 failed, 0 skipped
|
|
149
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
150
|
+
0 steps passed, 1 failed, 0 skipped, 0 undefined
|
|
151
|
+
"""
|
|
152
|
+
|
|
153
|
+
Examples:
|
|
154
|
+
| format | step.text |
|
|
155
|
+
| plain | Café |
|
|
156
|
+
| pretty | Ärgernis ist überall |
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
@problematic.feature_filename
|
|
160
|
+
@not.with_os=win32
|
|
161
|
+
Scenario Outline: Problematic feature filename: <name> (case: pass, <format>)
|
|
162
|
+
Given a file named "features/<name>_and_pass.feature" with:
|
|
163
|
+
"""
|
|
164
|
+
Feature:
|
|
165
|
+
Scenario:
|
|
166
|
+
Given a step passes
|
|
167
|
+
"""
|
|
168
|
+
When I run "behave -f <format> features/<name>_and_pass.feature"
|
|
169
|
+
Then it should pass with:
|
|
170
|
+
"""
|
|
171
|
+
1 feature passed, 0 failed, 0 skipped
|
|
172
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
Examples:
|
|
176
|
+
| format | name |
|
|
177
|
+
| plain | Café |
|
|
178
|
+
| pretty | Ärgernis_ist_überall |
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
@problematic.feature_filename
|
|
182
|
+
@not.with_os=win32
|
|
183
|
+
Scenario Outline: Problematic feature filename: <name> (case: fail, <format>)
|
|
184
|
+
Given a file named "features/<name>_and_fail.feature" with:
|
|
185
|
+
"""
|
|
186
|
+
Feature:
|
|
187
|
+
Scenario:
|
|
188
|
+
Given a step fails
|
|
189
|
+
"""
|
|
190
|
+
When I run "behave -f <format> features/<name>_and_fail.feature"
|
|
191
|
+
Then it should fail with:
|
|
192
|
+
"""
|
|
193
|
+
0 features passed, 1 failed, 0 skipped
|
|
194
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
195
|
+
"""
|
|
196
|
+
|
|
197
|
+
Examples:
|
|
198
|
+
| format | name |
|
|
199
|
+
| plain | Café |
|
|
200
|
+
| pretty | Ärgernis_ist_überall |
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
@problematic.step_filename
|
|
204
|
+
Scenario Outline: Problematic step filename: <name> (case: pass, <format>)
|
|
205
|
+
|
|
206
|
+
TEST-CONSTRAINT: Only one step file is used (= 1 name only).
|
|
207
|
+
Otherwise, duplicated steps occur (without cleanup in step directory).
|
|
208
|
+
|
|
209
|
+
Given a file named "features/problematic_stepfile_and_pass.feature" with:
|
|
210
|
+
"""
|
|
211
|
+
Feature:
|
|
212
|
+
Scenario:
|
|
213
|
+
Given I use a weird step and pass
|
|
214
|
+
"""
|
|
215
|
+
And a file named "features/steps/step_pass_<name>.py" with:
|
|
216
|
+
"""
|
|
217
|
+
from behave import step
|
|
218
|
+
|
|
219
|
+
@step(u'I use a weird step and pass')
|
|
220
|
+
def step_weird_pass(context):
|
|
221
|
+
pass
|
|
222
|
+
"""
|
|
223
|
+
When I run "behave -f <format> features/problematic_stepfile_and_pass.feature"
|
|
224
|
+
Then it should pass with:
|
|
225
|
+
"""
|
|
226
|
+
1 feature passed, 0 failed, 0 skipped
|
|
227
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
228
|
+
"""
|
|
229
|
+
But note that "you should normally use only ASCII/latin-1 python filenames"
|
|
230
|
+
|
|
231
|
+
Examples:
|
|
232
|
+
| format | name |
|
|
233
|
+
| plain | Ärgernis_ist_überall |
|
|
234
|
+
| pretty | Ärgernis_ist_überall |
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
@problematic.step_filename
|
|
238
|
+
Scenario Outline: Problematic step filename: <name> (case: fail, <format>)
|
|
239
|
+
|
|
240
|
+
TEST-CONSTRAINT: Only one step file is used (= 1 name only).
|
|
241
|
+
Otherwise, duplicated steps occur (without cleanup in step directory).
|
|
242
|
+
|
|
243
|
+
Given a file named "features/problematic_stepfile_and_fail.feature" with:
|
|
244
|
+
"""
|
|
245
|
+
Feature:
|
|
246
|
+
Scenario:
|
|
247
|
+
Given I use a weird step and fail
|
|
248
|
+
"""
|
|
249
|
+
And a file named "features/steps/step_fail_<name>.py" with:
|
|
250
|
+
"""
|
|
251
|
+
from behave import step
|
|
252
|
+
|
|
253
|
+
@step(u'I use a weird step and fail')
|
|
254
|
+
def step_weird_fails(context):
|
|
255
|
+
assert False, "XFAIL-WEIRD"
|
|
256
|
+
"""
|
|
257
|
+
When I run "behave -f <format> features/problematic_stepfile_and_fail.feature"
|
|
258
|
+
Then it should fail with:
|
|
259
|
+
"""
|
|
260
|
+
0 features passed, 1 failed, 0 skipped
|
|
261
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
262
|
+
"""
|
|
263
|
+
But note that "you should normally use only ASCII/latin-1 python filenames"
|
|
264
|
+
|
|
265
|
+
Examples:
|
|
266
|
+
| format | name |
|
|
267
|
+
| plain | Ärgernis_ist_überall |
|
|
268
|
+
| pretty | Ärgernis_ist_überall |
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
@problematic.output
|
|
272
|
+
Scenario Outline: Problematic output: <text> (case: pass, <format>)
|
|
273
|
+
Given a file named "features/problematic_output_and_pass.feature" with:
|
|
274
|
+
"""
|
|
275
|
+
Feature:
|
|
276
|
+
Scenario:
|
|
277
|
+
Given I write text "<text>" to stdout
|
|
278
|
+
Then I write bytes "<text>" to stdout
|
|
279
|
+
And a step passes
|
|
280
|
+
"""
|
|
281
|
+
When I run "behave -f <format> --no-capture features/problematic_output_and_pass.feature"
|
|
282
|
+
Then it should pass with:
|
|
283
|
+
"""
|
|
284
|
+
1 feature passed, 0 failed, 0 skipped
|
|
285
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
286
|
+
"""
|
|
287
|
+
|
|
288
|
+
Examples:
|
|
289
|
+
| format | text |
|
|
290
|
+
| plain | Café |
|
|
291
|
+
| pretty | Ärgernis ist überall |
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
@problematic.output
|
|
295
|
+
Scenario Outline: Problematic output: <text> (case: fail, <format>)
|
|
296
|
+
Given a file named "features/problematic_output_and_fail.feature" with:
|
|
297
|
+
"""
|
|
298
|
+
Feature:
|
|
299
|
+
Scenario:
|
|
300
|
+
Given I write text "<text>" to stdout
|
|
301
|
+
Then I write bytes "<text>" to stdout
|
|
302
|
+
And a step fails
|
|
303
|
+
"""
|
|
304
|
+
When I run "behave -f <format> features/problematic_output_and_fail.feature"
|
|
305
|
+
Then it should fail with:
|
|
306
|
+
"""
|
|
307
|
+
0 features passed, 1 failed, 0 skipped
|
|
308
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
309
|
+
"""
|
|
310
|
+
And the command output should contain:
|
|
311
|
+
"""
|
|
312
|
+
<text>
|
|
313
|
+
"""
|
|
314
|
+
|
|
315
|
+
Examples:
|
|
316
|
+
| format | text |
|
|
317
|
+
| plain | Café |
|
|
318
|
+
| pretty | Ärgernis ist überall |
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
@problematic.tags
|
|
322
|
+
Scenario Outline: Problematic tag: <tag> (case: pass, <format>)
|
|
323
|
+
Given a file named "features/problematic_tag_and_pass.feature" with:
|
|
324
|
+
"""
|
|
325
|
+
Feature:
|
|
326
|
+
@<tag>
|
|
327
|
+
Scenario:
|
|
328
|
+
Given a step passes
|
|
329
|
+
"""
|
|
330
|
+
When I run "behave -f <format> features/problematic_tag_and_pass.feature"
|
|
331
|
+
Then it should pass with:
|
|
332
|
+
"""
|
|
333
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
334
|
+
"""
|
|
335
|
+
|
|
336
|
+
Examples:
|
|
337
|
+
| format | tag |
|
|
338
|
+
| plain | tag.Café |
|
|
339
|
+
| pretty | tag.Ärgernis_ist_überall |
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
@problematic.tags
|
|
343
|
+
Scenario Outline: Problematic tag: <tag> (case: fail, <format>)
|
|
344
|
+
Given a file named "features/problematic_tag_and_fail.feature" with:
|
|
345
|
+
"""
|
|
346
|
+
Feature:
|
|
347
|
+
@<tag>
|
|
348
|
+
Scenario:
|
|
349
|
+
Given a step fails
|
|
350
|
+
"""
|
|
351
|
+
When I run "behave -f <format> features/problematic_tag_and_fail.feature"
|
|
352
|
+
Then it should fail with:
|
|
353
|
+
"""
|
|
354
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
355
|
+
"""
|
|
356
|
+
|
|
357
|
+
Examples:
|
|
358
|
+
| format | tag |
|
|
359
|
+
| plain | tag.Café |
|
|
360
|
+
| pretty | tag.Ärgernis_ist_überall |
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
@issue_0230
|
|
364
|
+
Scenario Outline: Step assert fails with problematic chars (case: <format>)
|
|
365
|
+
|
|
366
|
+
NOTE: Python2 fails silently without showing the failed step.
|
|
367
|
+
HINT: Use unicode string when you use, special non-ASCII characters.
|
|
368
|
+
HINT: Use encoding-hint in python file header.
|
|
369
|
+
|
|
370
|
+
Given a file named "features/steps/problematic_steps.py" with:
|
|
371
|
+
"""
|
|
372
|
+
# -*- coding: UTF-8 -*-
|
|
373
|
+
from behave import step
|
|
374
|
+
|
|
375
|
+
@step(u'{word:w} step fails with assert and non-ASCII text')
|
|
376
|
+
def step_fails_with_assert_and_problematic_text(context, word):
|
|
377
|
+
assert False, u"XFAIL:¾;"
|
|
378
|
+
"""
|
|
379
|
+
And a file named "features/assert_with_ptext.feature" with:
|
|
380
|
+
"""
|
|
381
|
+
Feature:
|
|
382
|
+
Scenario:
|
|
383
|
+
Given a step passes
|
|
384
|
+
When a step fails with assert and non-ASCII text
|
|
385
|
+
"""
|
|
386
|
+
When I run "behave -f <format> features/assert_with_ptext.feature"
|
|
387
|
+
Then it should fail with:
|
|
388
|
+
"""
|
|
389
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
390
|
+
1 step passed, 1 failed, 0 skipped, 0 undefined
|
|
391
|
+
"""
|
|
392
|
+
And the command output should contain:
|
|
393
|
+
"""
|
|
394
|
+
Assertion Failed: XFAIL:¾;
|
|
395
|
+
"""
|
|
396
|
+
|
|
397
|
+
Examples:
|
|
398
|
+
| format |
|
|
399
|
+
| plain |
|
|
400
|
+
| pretty |
|
|
401
|
+
|
|
402
|
+
@issue_0226
|
|
403
|
+
Scenario Outline: Step raises exception with problematic chars (case: <format>)
|
|
404
|
+
|
|
405
|
+
In Python2: When an exception is raised with unicode argument,
|
|
406
|
+
(and special non-ASCII chars) the conversion of the exception into
|
|
407
|
+
a unicode string causes implicit conversion into a normal string
|
|
408
|
+
by using the default encoding (normally: ASCII).
|
|
409
|
+
Therefore, the implicit encoding into a normal string often fails.
|
|
410
|
+
|
|
411
|
+
SEE ALSO: http://bugs.python.org/issue2517
|
|
412
|
+
NOTE: Better if encoding hint is provided in python file header.
|
|
413
|
+
|
|
414
|
+
Given a file named "features/steps/problematic_steps.py" with:
|
|
415
|
+
"""
|
|
416
|
+
# -*- coding: UTF-8 -*-
|
|
417
|
+
from behave import step
|
|
418
|
+
|
|
419
|
+
@step(u'{word:w} step fails with exception and non-ASCII text')
|
|
420
|
+
def step_fails_with_exception_and_problematic_text(context, word):
|
|
421
|
+
# -- REQUIRE: UNICODE STRING, when special, non-ASCII chars are used.
|
|
422
|
+
raise RuntimeError(u"FAIL:¾;")
|
|
423
|
+
"""
|
|
424
|
+
And a file named "features/exception_with_ptext.feature" with:
|
|
425
|
+
"""
|
|
426
|
+
Feature:
|
|
427
|
+
Scenario:
|
|
428
|
+
Given a step passes
|
|
429
|
+
When a step fails with exception and non-ASCII text
|
|
430
|
+
"""
|
|
431
|
+
When I run "behave -f <format> features/exception_with_ptext.feature"
|
|
432
|
+
Then it should fail with:
|
|
433
|
+
"""
|
|
434
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
435
|
+
1 step passed, 1 failed, 0 skipped, 0 undefined
|
|
436
|
+
"""
|
|
437
|
+
And the command output should contain:
|
|
438
|
+
"""
|
|
439
|
+
RuntimeError: FAIL:¾;
|
|
440
|
+
"""
|
|
441
|
+
|
|
442
|
+
Examples:
|
|
443
|
+
| format |
|
|
444
|
+
| plain |
|
|
445
|
+
| pretty |
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
@logging
|
|
2
|
+
@capture
|
|
3
|
+
Feature: Use --logging-clear-handlers configuration option
|
|
4
|
+
|
|
5
|
+
PRECONDITION: log_capture mode is enabled (config.log_capture = true).
|
|
6
|
+
|
|
7
|
+
As a tester
|
|
8
|
+
In log-capture mode
|
|
9
|
+
I want sometimes to remove any logging handler before capture starts
|
|
10
|
+
So that I have the log-records output under control.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@setup
|
|
14
|
+
Scenario: Feature Setup
|
|
15
|
+
Given a new working directory
|
|
16
|
+
And a file named "features/steps/use_behave4cmd_steps.py" with:
|
|
17
|
+
"""
|
|
18
|
+
import behave4cmd0.log.steps
|
|
19
|
+
import behave4cmd0.failing_steps
|
|
20
|
+
import behave4cmd0.passing_steps
|
|
21
|
+
"""
|
|
22
|
+
And a file named "features/environment.py" with:
|
|
23
|
+
"""
|
|
24
|
+
def before_all(context):
|
|
25
|
+
# -- SAME-AS: context.config.setup_logging()
|
|
26
|
+
import logging
|
|
27
|
+
logging.basicConfig(level=context.config.logging_level)
|
|
28
|
+
|
|
29
|
+
# -- ADDITIONAL LOG-HANDLER: Which will be cleared.
|
|
30
|
+
format = "LOG-HANDLER2: %(name)s %(levelname)s: %(message)s;"
|
|
31
|
+
handler = logging.StreamHandler()
|
|
32
|
+
handler.setFormatter(logging.Formatter(format))
|
|
33
|
+
root_logger = logging.getLogger()
|
|
34
|
+
root_logger.addHandler(handler)
|
|
35
|
+
"""
|
|
36
|
+
And a file named "features/example.log_with_failure.feature" with:
|
|
37
|
+
"""
|
|
38
|
+
Feature:
|
|
39
|
+
Scenario: Failing
|
|
40
|
+
Given I create log records with:
|
|
41
|
+
| category | level | message |
|
|
42
|
+
| root | ERROR | Hello Alice |
|
|
43
|
+
| root | WARN | Hello Bob |
|
|
44
|
+
When a step fails
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
Scenario: Use logcapture mode without clearing existing log handlers
|
|
49
|
+
Given a file named "behave.ini" with:
|
|
50
|
+
"""
|
|
51
|
+
[behave]
|
|
52
|
+
log_capture = true
|
|
53
|
+
logging_level = WARN
|
|
54
|
+
"""
|
|
55
|
+
When I run "behave -f plain features/example.log_with_failure.feature"
|
|
56
|
+
Then it should fail with:
|
|
57
|
+
"""
|
|
58
|
+
0 scenarios passed, 1 failed, 0 skipped
|
|
59
|
+
1 step passed, 1 failed, 0 skipped, 0 undefined
|
|
60
|
+
"""
|
|
61
|
+
And the command output should contain:
|
|
62
|
+
"""
|
|
63
|
+
Captured logging:
|
|
64
|
+
ERROR:root:Hello Alice
|
|
65
|
+
WARNING:root:Hello Bob
|
|
66
|
+
"""
|
|
67
|
+
And the command output should contain:
|
|
68
|
+
"""
|
|
69
|
+
LOG-HANDLER2: root ERROR: Hello Alice;
|
|
70
|
+
LOG-HANDLER2: root WARNING: Hello Bob;
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
Scenario: Use logcapture mode with clearing additional log handlers (case: command-line)
|
|
75
|
+
Given a file named "behave.ini" with:
|
|
76
|
+
"""
|
|
77
|
+
[behave]
|
|
78
|
+
log_capture = true
|
|
79
|
+
logging_level = WARN
|
|
80
|
+
"""
|
|
81
|
+
When I run "behave -f plain --logging-clear-handlers features/example.log_with_failure.feature"
|
|
82
|
+
Then it should fail with:
|
|
83
|
+
"""
|
|
84
|
+
Captured logging:
|
|
85
|
+
ERROR:root:Hello Alice
|
|
86
|
+
WARNING:root:Hello Bob
|
|
87
|
+
"""
|
|
88
|
+
But the command output should not contain:
|
|
89
|
+
"""
|
|
90
|
+
LOG-HANDLER2: root ERROR: Hello Alice;
|
|
91
|
+
LOG-HANDLER2: root WARNING: Hello Bob;
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
Scenario: Use Logcapture mode with clearing additional log handlers (case: configfile)
|
|
96
|
+
Given a file named "behave.ini" with:
|
|
97
|
+
"""
|
|
98
|
+
[behave]
|
|
99
|
+
log_capture = true
|
|
100
|
+
logging_level = WARN
|
|
101
|
+
logging_clear_handlers = true
|
|
102
|
+
"""
|
|
103
|
+
When I run "behave -f plain features/example.log_with_failure.feature"
|
|
104
|
+
Then it should fail with:
|
|
105
|
+
"""
|
|
106
|
+
Captured logging:
|
|
107
|
+
ERROR:root:Hello Alice
|
|
108
|
+
WARNING:root:Hello Bob
|
|
109
|
+
"""
|
|
110
|
+
But the command output should not contain:
|
|
111
|
+
"""
|
|
112
|
+
LOG-HANDLER2: root ERROR: Hello Alice;
|
|
113
|
+
LOG-HANDLER2: root WARNING: Hello Bob;
|
|
114
|
+
"""
|