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,104 @@
|
|
|
1
|
+
Feature: Default Tags
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want to define a number of default tags in a configuration file
|
|
5
|
+
So that I do not have to specify these tags each time on the command-line.
|
|
6
|
+
|
|
7
|
+
. NOTES:
|
|
8
|
+
. * default tags are normally used to exclude/disable tag(s)
|
|
9
|
+
. * command-line tags override the default tags
|
|
10
|
+
. * default tags can be disabled by using the following expression
|
|
11
|
+
. on the command-line: behave --tags=-xxx ... (where xxx is an unknown tag)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@setup
|
|
15
|
+
Scenario: Test Setup
|
|
16
|
+
Given a new working directory
|
|
17
|
+
And a file named "features/one.feature" with:
|
|
18
|
+
"""
|
|
19
|
+
Feature:
|
|
20
|
+
@not_implemented
|
|
21
|
+
Scenario: Alice
|
|
22
|
+
Given missing step passes
|
|
23
|
+
|
|
24
|
+
@foo
|
|
25
|
+
Scenario: Bob
|
|
26
|
+
Given another step passes
|
|
27
|
+
Then a step passes
|
|
28
|
+
"""
|
|
29
|
+
And a file named "features/steps/passing_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
|
+
|
|
38
|
+
Scenario: Use default tags with one tag
|
|
39
|
+
Given a file named "behave.ini" with:
|
|
40
|
+
"""
|
|
41
|
+
[behave]
|
|
42
|
+
show_skipped = false
|
|
43
|
+
default_tags = -@not_implemented
|
|
44
|
+
"""
|
|
45
|
+
When I run "behave -f plain features"
|
|
46
|
+
Then it should pass with:
|
|
47
|
+
"""
|
|
48
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
49
|
+
2 steps passed, 0 failed, 1 skipped, 0 undefined
|
|
50
|
+
"""
|
|
51
|
+
And the command output should contain "Scenario: Bob"
|
|
52
|
+
But the command output should not contain "Scenario: Alice"
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
Scenario: Override default tag on command-line
|
|
56
|
+
Given a file named "behave.ini" with:
|
|
57
|
+
"""
|
|
58
|
+
[behave]
|
|
59
|
+
show_skipped = false
|
|
60
|
+
default_tags = -@not_implemented
|
|
61
|
+
"""
|
|
62
|
+
When I run "behave -f plain --tags=not_implemented features"
|
|
63
|
+
Then it should pass with:
|
|
64
|
+
"""
|
|
65
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
66
|
+
1 step passed, 0 failed, 2 skipped, 0 undefined
|
|
67
|
+
"""
|
|
68
|
+
And the command output should contain "Scenario: Alice"
|
|
69
|
+
But the command output should not contain "Scenario: Bob"
|
|
70
|
+
|
|
71
|
+
Scenario: Use default tags with two tags
|
|
72
|
+
Given a file named "behave.ini" with:
|
|
73
|
+
"""
|
|
74
|
+
[behave]
|
|
75
|
+
show_skipped = false
|
|
76
|
+
default_tags = -@not_implemented -@xfail
|
|
77
|
+
# tag logic := not @not_implemented and not @xfail
|
|
78
|
+
"""
|
|
79
|
+
When I run "behave -f plain features"
|
|
80
|
+
Then it should pass with:
|
|
81
|
+
"""
|
|
82
|
+
1 scenario passed, 0 failed, 1 skipped
|
|
83
|
+
2 steps passed, 0 failed, 1 skipped, 0 undefined
|
|
84
|
+
"""
|
|
85
|
+
And the command output should contain "Scenario: Bob"
|
|
86
|
+
But the command output should not contain "Scenario: Alice"
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
Scenario: Override default tags on command-line
|
|
90
|
+
Given a file named "behave.ini" with:
|
|
91
|
+
"""
|
|
92
|
+
[behave]
|
|
93
|
+
show_skipped = false
|
|
94
|
+
default_tags = -@not_implemented -@xfail
|
|
95
|
+
# tag logic := not @not_implemented and not @xfail
|
|
96
|
+
"""
|
|
97
|
+
When I run "behave -f plain --tags=not_implemented,foo features"
|
|
98
|
+
Then it should pass with:
|
|
99
|
+
"""
|
|
100
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
101
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
102
|
+
"""
|
|
103
|
+
And the command output should contain "Scenario: Alice"
|
|
104
|
+
But the command output should contain "Scenario: Bob"
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
Feature: Tag Expression
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want to select a subset of all features/scenarios by using tags
|
|
5
|
+
And I want to include and/or exclude some tags
|
|
6
|
+
So that I can focus on the "important" scenarios (and features).
|
|
7
|
+
|
|
8
|
+
. SPECIFICATION:
|
|
9
|
+
. * a tag expression is a boolean expression
|
|
10
|
+
. * a tag expression supports the operators: and, or, not
|
|
11
|
+
. * a tag expression is structured as:
|
|
12
|
+
. (or_expr1) and (or_expr2) and ...
|
|
13
|
+
.
|
|
14
|
+
. EXAMPLES:
|
|
15
|
+
. | Tag logic | Tag expression | Comment |
|
|
16
|
+
. | @foo | @foo | Select elements with @foo tag |
|
|
17
|
+
. | @foo | foo | Same, '@' is optional. |
|
|
18
|
+
. | not @foo | -@foo | Use minus for "not". |
|
|
19
|
+
. | not @foo | ~foo | Same, use tilde instead of minus |
|
|
20
|
+
. | @foo or @bar | @foo,@bar | Use comma for "or". |
|
|
21
|
+
. | @foo and @bar | @foo @bar | Use space separated terms. |
|
|
22
|
+
. | @foo or not @bar | @foo,-@bar | |
|
|
23
|
+
. | @foo and not @bar | @foo -@bar | |
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
Scenario: Select @foo
|
|
27
|
+
Given the tag expression "@foo"
|
|
28
|
+
Then the tag expression selects elements with tags:
|
|
29
|
+
| tags | selected? |
|
|
30
|
+
| | no |
|
|
31
|
+
| @foo | yes |
|
|
32
|
+
| @other | no |
|
|
33
|
+
| @foo @other | yes |
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
Scenario: Tag expression with 0..1 tags
|
|
37
|
+
Given the model elements with name and tags:
|
|
38
|
+
| name | tags | Comment |
|
|
39
|
+
| S0 | | Untagged |
|
|
40
|
+
| S1 | @foo | With 1 tag |
|
|
41
|
+
| S2 | @other | |
|
|
42
|
+
| S3 | @foo @other | With 2 tags |
|
|
43
|
+
And note that "are all combinations of 0..2 tags"
|
|
44
|
+
Then the tag expression selects model elements with:
|
|
45
|
+
| tag expression | selected? | Case comment |
|
|
46
|
+
| | S0, S1, S2, S3 | Select all (empty tag expression) |
|
|
47
|
+
| @foo | S1, S3 | Select @foo |
|
|
48
|
+
| -@foo | S0, S2 | not @foo, selects untagged elements |
|
|
49
|
+
But note that "tag expression variants are also supported"
|
|
50
|
+
And the tag expression selects model elements with:
|
|
51
|
+
| tag expression | selected? | Case comment |
|
|
52
|
+
| foo | S1, S3 | @foo: '@' is optional |
|
|
53
|
+
| -foo | S0, S2 | not @foo: '@' is optional |
|
|
54
|
+
| ~foo | S0, S2 | not @foo: tilde as minus |
|
|
55
|
+
| ~@foo | S0, S2 | not @foo: '~@' is supported |
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
Scenario: Tag expression with two tags (@foo, @bar)
|
|
59
|
+
Given the model elements with name and tags:
|
|
60
|
+
| name | tags | Comment |
|
|
61
|
+
| S0 | | Untagged |
|
|
62
|
+
| S1 | @foo | With 1 tag |
|
|
63
|
+
| S2 | @bar | |
|
|
64
|
+
| S3 | @other | |
|
|
65
|
+
| S4 | @foo @bar | With 2 tags |
|
|
66
|
+
| S5 | @foo @other | |
|
|
67
|
+
| S6 | @bar @other | |
|
|
68
|
+
| S7 | @foo @bar @other | With 3 tags |
|
|
69
|
+
And note that "are all combinations of 0..3 tags"
|
|
70
|
+
Then the tag expression selects model elements with:
|
|
71
|
+
| tag expression | selected? | Case |
|
|
72
|
+
| | S0, S1, S2, S3, S4, S5, S6, S7 | Select all |
|
|
73
|
+
| @foo,@bar | S1, S2, S4, S5, S6, S7 | @foo or @bar |
|
|
74
|
+
| @foo,-@bar | S0, S1, S3, S4, S5, S7 | @foo or not @bar |
|
|
75
|
+
| -@foo,-@bar | S0, S1, S2, S3, S5, S6 | not @foo or @not @bar |
|
|
76
|
+
| @foo @bar | S4, S7 | @foo and @bar |
|
|
77
|
+
| @foo -@bar | S1, S5 | @foo and not @bar |
|
|
78
|
+
| -@foo -@bar | S0, S3 | not @foo and not @bar |
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
Scenario: Tag expression with three tags (@foo, @bar, @zap)
|
|
82
|
+
Given the model elements with name and tags:
|
|
83
|
+
| name | tags | Comment |
|
|
84
|
+
| S0 | | Untagged |
|
|
85
|
+
| S1 | @foo | With 1 tag |
|
|
86
|
+
| S2 | @bar | |
|
|
87
|
+
| S3 | @zap | |
|
|
88
|
+
| S4 | @other | |
|
|
89
|
+
| S5 | @foo @bar | With 2 tags |
|
|
90
|
+
| S6 | @foo @zap | |
|
|
91
|
+
| S7 | @foo @other | |
|
|
92
|
+
| S8 | @bar @zap | |
|
|
93
|
+
| S9 | @bar @other | |
|
|
94
|
+
| S10 | @zap @other | |
|
|
95
|
+
| S11 | @foo @bar @zap | With 3 tags |
|
|
96
|
+
| S12 | @foo @bar @other | |
|
|
97
|
+
| S13 | @foo @zap @other | |
|
|
98
|
+
| S14 | @bar @zap @other | |
|
|
99
|
+
| S15 | @foo @bar @zap @other | With 4 tags |
|
|
100
|
+
And note that "are all combinations of 0..4 tags"
|
|
101
|
+
Then the tag expression selects model elements with:
|
|
102
|
+
| tag expression | selected? | Case |
|
|
103
|
+
| @foo,@bar @zap | S6, S8, S11, S13, S14, S15 | (@foo or @bar) and @zap |
|
|
104
|
+
| @foo,@bar -@zap | S1, S2, S5, S7, S9, S12 | (@foo or @bar) and not @zap |
|
|
105
|
+
| @foo,-@bar @zap | S3, S6, S10, S11, S13, S15 | (@foo or not @bar) and @zap |
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
Feature: User-specific Configuration Data (userdata)
|
|
2
|
+
|
|
3
|
+
As a test writer
|
|
4
|
+
I want to provide my own configuration data
|
|
5
|
+
So that the test suite and/or the environment can be adapted to its needs.
|
|
6
|
+
|
|
7
|
+
. MECHANISM:
|
|
8
|
+
. * Use -D name=value (--define) option to specify user data on command-line.
|
|
9
|
+
. * Specify user data in section "behave.userdata" of "behave.ini"
|
|
10
|
+
. * Load/setup user data in before_all() hook (advanced cases)
|
|
11
|
+
.
|
|
12
|
+
. USING USER DATA:
|
|
13
|
+
. * context.config.userdata (as dict)
|
|
14
|
+
.
|
|
15
|
+
. SUPPORTED DATA TYPES (from "behave.ini" and command-line):
|
|
16
|
+
. * string
|
|
17
|
+
. * bool-like (= "true", if definition has no value)
|
|
18
|
+
|
|
19
|
+
@setup
|
|
20
|
+
Scenario: Feature Setup
|
|
21
|
+
Given a new working directory
|
|
22
|
+
And a file named "features/steps/pass_steps.py" with:
|
|
23
|
+
"""
|
|
24
|
+
from behave import step
|
|
25
|
+
|
|
26
|
+
@step('{word:w} step passes')
|
|
27
|
+
def step_passes(context, word):
|
|
28
|
+
pass
|
|
29
|
+
"""
|
|
30
|
+
And a file named "features/steps/userdata_steps.py" with:
|
|
31
|
+
"""
|
|
32
|
+
from behave import step
|
|
33
|
+
from hamcrest import assert_that, equal_to
|
|
34
|
+
|
|
35
|
+
@step('the following user-data is provided')
|
|
36
|
+
def step_userdata_is_provided_with_table(context):
|
|
37
|
+
assert context.table, "REQUIRE: table"
|
|
38
|
+
context.table.require_columns(["name", "value"])
|
|
39
|
+
userdata = context.config.userdata
|
|
40
|
+
for row in context.table.rows:
|
|
41
|
+
name = row["name"]
|
|
42
|
+
expected_value = row["value"]
|
|
43
|
+
if name in userdata:
|
|
44
|
+
actual_value = userdata[name]
|
|
45
|
+
assert_that(str(actual_value), equal_to(expected_value))
|
|
46
|
+
else:
|
|
47
|
+
assert False, "MISSING: userdata %s" % name
|
|
48
|
+
|
|
49
|
+
@step('I modify the user-data with')
|
|
50
|
+
def step_modify_userdata_with_table(context):
|
|
51
|
+
assert context.table, "REQUIRE: table"
|
|
52
|
+
context.table.require_columns(["name", "value"])
|
|
53
|
+
userdata = context.config.userdata
|
|
54
|
+
for row in context.table.rows:
|
|
55
|
+
name = row["name"]
|
|
56
|
+
value = row["value"]
|
|
57
|
+
userdata[name] = value
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
@userdata.define
|
|
61
|
+
Scenario: Use define command-line option
|
|
62
|
+
Given a file named "features/userdata_ex1.feature" with:
|
|
63
|
+
"""
|
|
64
|
+
Feature:
|
|
65
|
+
Scenario:
|
|
66
|
+
Given the following user-data is provided:
|
|
67
|
+
| name | value |
|
|
68
|
+
| person1 | Alice |
|
|
69
|
+
| person2 | Bob |
|
|
70
|
+
"""
|
|
71
|
+
And an empty file named "behave.ini"
|
|
72
|
+
When I run "behave -D person1=Alice --define person2=Bob features/userdata_ex1.feature"
|
|
73
|
+
Then it should pass with:
|
|
74
|
+
"""
|
|
75
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
76
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
@userdata.define
|
|
80
|
+
Scenario: Duplicated define with other value overrides first value
|
|
81
|
+
Given a file named "features/userdata_ex2.feature" with:
|
|
82
|
+
"""
|
|
83
|
+
Feature:
|
|
84
|
+
Scenario:
|
|
85
|
+
Given the following user-data is provided:
|
|
86
|
+
| name | value |
|
|
87
|
+
| person1 | Bob |
|
|
88
|
+
"""
|
|
89
|
+
And an empty file named "behave.ini"
|
|
90
|
+
When I run "behave -D person1=Alice -D person1=Bob features/userdata_ex2.feature"
|
|
91
|
+
Then it should pass with:
|
|
92
|
+
"""
|
|
93
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
94
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
@userdata.define
|
|
98
|
+
Scenario: Use boolean flag as command-line definition
|
|
99
|
+
|
|
100
|
+
Ensure that command-line define without value part is a boolean flag.
|
|
101
|
+
|
|
102
|
+
Given a file named "features/userdata_ex3.feature" with:
|
|
103
|
+
"""
|
|
104
|
+
Feature:
|
|
105
|
+
Scenario:
|
|
106
|
+
Given the following user-data is provided:
|
|
107
|
+
| name | value |
|
|
108
|
+
| DEBUG | true |
|
|
109
|
+
"""
|
|
110
|
+
And an empty file named "behave.ini"
|
|
111
|
+
When I run "behave -D DEBUG features/userdata_ex3.feature"
|
|
112
|
+
Then it should pass with:
|
|
113
|
+
"""
|
|
114
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
115
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
@userdata.config
|
|
119
|
+
Scenario: Use user-data from behave configuration file
|
|
120
|
+
Given a file named "behave.ini" with:
|
|
121
|
+
"""
|
|
122
|
+
[behave.userdata]
|
|
123
|
+
person1 = Alice
|
|
124
|
+
person2 = Bob
|
|
125
|
+
"""
|
|
126
|
+
When I run "behave features/userdata_ex1.feature"
|
|
127
|
+
Then it should pass with:
|
|
128
|
+
"""
|
|
129
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
130
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
@userdata.config
|
|
134
|
+
Scenario: Override user-data from behave configuration file on command-line
|
|
135
|
+
Given a file named "features/userdata_config2.feature" with:
|
|
136
|
+
"""
|
|
137
|
+
Feature:
|
|
138
|
+
Scenario:
|
|
139
|
+
Given the following user-data is provided:
|
|
140
|
+
| name | value |
|
|
141
|
+
| person1 | Charly |
|
|
142
|
+
| person2 | Bob |
|
|
143
|
+
"""
|
|
144
|
+
And a file named "behave.ini" with:
|
|
145
|
+
"""
|
|
146
|
+
[behave.userdata]
|
|
147
|
+
person1 = Alice
|
|
148
|
+
person2 = Bob
|
|
149
|
+
"""
|
|
150
|
+
When I run "behave -D person1=Charly features/userdata_config2.feature"
|
|
151
|
+
Then it should pass with:
|
|
152
|
+
"""
|
|
153
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
154
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
155
|
+
"""
|
|
156
|
+
|
|
157
|
+
@userdata.config
|
|
158
|
+
Scenario: Extend user-data from behave configuration file on command-line
|
|
159
|
+
Given a file named "features/userdata_config3.feature" with:
|
|
160
|
+
"""
|
|
161
|
+
Feature:
|
|
162
|
+
Scenario:
|
|
163
|
+
Given the following user-data is provided:
|
|
164
|
+
| name | value |
|
|
165
|
+
| person1 | Alice |
|
|
166
|
+
| person2 | Bob |
|
|
167
|
+
| person3 | Charly |
|
|
168
|
+
"""
|
|
169
|
+
And a file named "behave.ini" with:
|
|
170
|
+
"""
|
|
171
|
+
[behave.userdata]
|
|
172
|
+
person1 = Alice
|
|
173
|
+
person2 = Bob
|
|
174
|
+
"""
|
|
175
|
+
When I run "behave -D person3=Charly features/userdata_config3.feature"
|
|
176
|
+
Then it should pass with:
|
|
177
|
+
"""
|
|
178
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
179
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
180
|
+
"""
|
|
181
|
+
|
|
182
|
+
@userdata.load
|
|
183
|
+
Scenario: Load user-data configuration in before_all hook (JSON)
|
|
184
|
+
Given an empty file named "behave.ini"
|
|
185
|
+
And a file named "features/environment.py" with:
|
|
186
|
+
"""
|
|
187
|
+
import json
|
|
188
|
+
import os.path
|
|
189
|
+
|
|
190
|
+
def before_all(context):
|
|
191
|
+
userdata = context.config.userdata
|
|
192
|
+
configfile = userdata.get("configfile", "userconfig.json")
|
|
193
|
+
if os.path.exists(configfile):
|
|
194
|
+
config = json.load(open(configfile))
|
|
195
|
+
userdata.update(config)
|
|
196
|
+
"""
|
|
197
|
+
And a file named "userconfig.json" with:
|
|
198
|
+
"""
|
|
199
|
+
{
|
|
200
|
+
"person1": "Anna",
|
|
201
|
+
"person2": "Beatrix"
|
|
202
|
+
}
|
|
203
|
+
"""
|
|
204
|
+
And a file named "features/userdata_load1.feature" with:
|
|
205
|
+
"""
|
|
206
|
+
Feature:
|
|
207
|
+
Scenario:
|
|
208
|
+
Given the following user-data is provided:
|
|
209
|
+
| name | value |
|
|
210
|
+
| person1 | Anna |
|
|
211
|
+
| person2 | Beatrix |
|
|
212
|
+
"""
|
|
213
|
+
When I run "behave features/userdata_load1.feature"
|
|
214
|
+
Then it should pass with:
|
|
215
|
+
"""
|
|
216
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
217
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
218
|
+
"""
|
|
219
|
+
|
|
220
|
+
@userdata.load
|
|
221
|
+
Scenario: Load user-data configuration in before_all hook (INI)
|
|
222
|
+
Given a file named "behave.ini" with:
|
|
223
|
+
"""
|
|
224
|
+
[behave.userdata]
|
|
225
|
+
configfile = userconfig.ini
|
|
226
|
+
config_section = behave.userdata.more
|
|
227
|
+
"""
|
|
228
|
+
And a file named "userconfig.ini" with:
|
|
229
|
+
"""
|
|
230
|
+
[behave.userdata.more]
|
|
231
|
+
person1 = Anna2
|
|
232
|
+
person2 = Beatrix2
|
|
233
|
+
"""
|
|
234
|
+
And a file named "features/environment.py" with:
|
|
235
|
+
"""
|
|
236
|
+
try:
|
|
237
|
+
import configparser
|
|
238
|
+
except:
|
|
239
|
+
import ConfigParser as configparser # -- PY2
|
|
240
|
+
|
|
241
|
+
def before_all(context):
|
|
242
|
+
userdata = context.config.userdata
|
|
243
|
+
configfile = userdata.get("configfile", "userconfig.ini")
|
|
244
|
+
section = userdata.get("config_section", "behave.userdata")
|
|
245
|
+
parser = configparser.SafeConfigParser()
|
|
246
|
+
parser.read(configfile)
|
|
247
|
+
if parser.has_section(section):
|
|
248
|
+
userdata.update(parser.items(section))
|
|
249
|
+
"""
|
|
250
|
+
And a file named "features/userdata_load2.feature" with:
|
|
251
|
+
"""
|
|
252
|
+
Feature:
|
|
253
|
+
Scenario:
|
|
254
|
+
Given the following user-data is provided:
|
|
255
|
+
| name | value |
|
|
256
|
+
| person1 | Anna2 |
|
|
257
|
+
| person2 | Beatrix2 |
|
|
258
|
+
"""
|
|
259
|
+
When I run "behave features/userdata_load2.feature"
|
|
260
|
+
Then it should pass with:
|
|
261
|
+
"""
|
|
262
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
263
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
264
|
+
"""
|
|
265
|
+
|
|
266
|
+
@bad_practice
|
|
267
|
+
@userdata.modify
|
|
268
|
+
Scenario: Modified user-data is used by the remaining features/scenarios
|
|
269
|
+
|
|
270
|
+
Given a file named "features/userdata_modify1.feature" with:
|
|
271
|
+
"""
|
|
272
|
+
Feature:
|
|
273
|
+
Scenario:
|
|
274
|
+
Given the following user-data is provided:
|
|
275
|
+
| name | value |
|
|
276
|
+
| person1 | Alice |
|
|
277
|
+
| person2 | Bob |
|
|
278
|
+
When I modify the user-data with:
|
|
279
|
+
| name | value |
|
|
280
|
+
| person1 | MODIFIED_VALUE |
|
|
281
|
+
Then the following user-data is provided:
|
|
282
|
+
| name | value |
|
|
283
|
+
| person1 | MODIFIED_VALUE |
|
|
284
|
+
| person2 | Bob |
|
|
285
|
+
|
|
286
|
+
Scenario: Next scenario has modified user-data, too
|
|
287
|
+
Given the following user-data is provided:
|
|
288
|
+
| name | value |
|
|
289
|
+
| person1 | MODIFIED_VALUE |
|
|
290
|
+
| person2 | Bob |
|
|
291
|
+
"""
|
|
292
|
+
And a file named "behave.ini" with:
|
|
293
|
+
"""
|
|
294
|
+
[behave.userdata]
|
|
295
|
+
person1 = Alice
|
|
296
|
+
person2 = Bob
|
|
297
|
+
"""
|
|
298
|
+
When I run "behave features/userdata_modify1.feature"
|
|
299
|
+
Then it should pass with:
|
|
300
|
+
"""
|
|
301
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
302
|
+
4 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
303
|
+
"""
|
|
304
|
+
But note that "modifying userdata is BAD-PRACTICE, except in before_all() hook"
|
|
305
|
+
|
|
306
|
+
@userdata.case_sensitive
|
|
307
|
+
Scenario: Loaded user-data from configuration should have case-sensitive keys
|
|
308
|
+
|
|
309
|
+
Given a file named "features/userdata_case_sensitive.feature" with:
|
|
310
|
+
"""
|
|
311
|
+
Feature:
|
|
312
|
+
Scenario:
|
|
313
|
+
Given the following user-data is provided:
|
|
314
|
+
| name | value |
|
|
315
|
+
| CamelCaseKey | 1 |
|
|
316
|
+
| CAPS_SNAKE_KEY | 2 |
|
|
317
|
+
| lower_snake_key | 3 |
|
|
318
|
+
"""
|
|
319
|
+
And a file named "behave.ini" with:
|
|
320
|
+
"""
|
|
321
|
+
[behave.userdata]
|
|
322
|
+
CamelCaseKey = 1
|
|
323
|
+
CAPS_SNAKE_KEY = 2
|
|
324
|
+
lower_snake_key = 3
|
|
325
|
+
"""
|
|
326
|
+
When I run "behave features/userdata_case_sensitive.feature"
|
|
327
|
+
Then it should pass with:
|
|
328
|
+
"""
|
|
329
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
330
|
+
1 step passed, 0 failed, 0 skipped, 0 undefined
|
|
331
|
+
"""
|