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,17 @@
|
|
|
1
|
+
Feature: Local Context Parameters defined in Scenarios (Steps)
|
|
2
|
+
|
|
3
|
+
. SPECIFICATION:
|
|
4
|
+
. * When a step adds/modifies an attribute in the Context object,
|
|
5
|
+
. then its value is only available to other steps in this scenario.
|
|
6
|
+
. * After a scenario is executed all Context object changes are undone.
|
|
7
|
+
|
|
8
|
+
Scenario: Add Local Context parameter in Scenario/Step
|
|
9
|
+
Given the behave context does not have a parameter "local_name"
|
|
10
|
+
When I set the context parameter "local_name" to "Alice"
|
|
11
|
+
Then the behave context should have a parameter "local_name"
|
|
12
|
+
And the behave context should contain:
|
|
13
|
+
| Parameter | Value |
|
|
14
|
+
| local_name | "Alice" |
|
|
15
|
+
|
|
16
|
+
Scenario: Ensure that Local Context parameter is not available to next Scenario
|
|
17
|
+
Then the behave context should not have a parameter "local_name"
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
Feature: Advanced, more complex directory layout (Variant 2)
|
|
2
|
+
|
|
3
|
+
As a story/test writer
|
|
4
|
+
I want a deeper, more structured directory structure when many feature files exist
|
|
5
|
+
So that I have the parts better under control (more managable)
|
|
6
|
+
|
|
7
|
+
. ADVANCED, MORE COMPLEX DIRECTORY LAYOUT STRUCTURE:
|
|
8
|
+
. features/
|
|
9
|
+
. +-- group1.features/
|
|
10
|
+
. | +-- *.feature
|
|
11
|
+
. +-- group2.features/
|
|
12
|
+
. | +-- *.feature
|
|
13
|
+
. +-- steps/*.py # Step definitions or step-library imports.
|
|
14
|
+
. +-- environment.py # OPTIONAL: environment setup/hooks.
|
|
15
|
+
.
|
|
16
|
+
. SEE ALSO:
|
|
17
|
+
. * http://pythonhosted.org/behave/gherkin.html#layout-variations
|
|
18
|
+
.
|
|
19
|
+
. RELATED:
|
|
20
|
+
. * issue #99: Layout variation "a directory containing your feature files" ...
|
|
21
|
+
|
|
22
|
+
@setup
|
|
23
|
+
Scenario: Setup directory structure
|
|
24
|
+
Given a new working directory
|
|
25
|
+
And a file named "features/steps/steps.py" with:
|
|
26
|
+
"""
|
|
27
|
+
from behave import step
|
|
28
|
+
|
|
29
|
+
@step('{word:w} step passes')
|
|
30
|
+
def step_passes(context, word):
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
@step('{word:w} step fails')
|
|
34
|
+
def step_fails(context, word):
|
|
35
|
+
assert False, "XFAIL-STEP"
|
|
36
|
+
"""
|
|
37
|
+
And a file named "features/steps/environment_steps.py" with:
|
|
38
|
+
"""
|
|
39
|
+
from behave import step
|
|
40
|
+
|
|
41
|
+
@step('environment setup was done')
|
|
42
|
+
def step_ensure_environment_setup(context):
|
|
43
|
+
assert context.setup_magic == 42
|
|
44
|
+
"""
|
|
45
|
+
And a file named "features/environment.py" with:
|
|
46
|
+
"""
|
|
47
|
+
def before_all(context):
|
|
48
|
+
context.setup_magic = 42
|
|
49
|
+
"""
|
|
50
|
+
And a file named "features/group1/alice.feature" with:
|
|
51
|
+
"""
|
|
52
|
+
Feature: Alice
|
|
53
|
+
Scenario: A1
|
|
54
|
+
Given a step passes
|
|
55
|
+
When another step passes
|
|
56
|
+
Then a step passes
|
|
57
|
+
|
|
58
|
+
Scenario: A2
|
|
59
|
+
Then environment setup was done
|
|
60
|
+
"""
|
|
61
|
+
And a file named "features/group1/bob.feature" with:
|
|
62
|
+
"""
|
|
63
|
+
Feature: Bob
|
|
64
|
+
Scenario: B1
|
|
65
|
+
When a step passes
|
|
66
|
+
Then another step passes
|
|
67
|
+
"""
|
|
68
|
+
And a file named "features/group2/charly.feature" with:
|
|
69
|
+
"""
|
|
70
|
+
Feature: Charly
|
|
71
|
+
Scenario: C1
|
|
72
|
+
Given another step passes
|
|
73
|
+
Then a step passes
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
Scenario: Run behave with feature directory
|
|
78
|
+
When I run "behave -f progress features/"
|
|
79
|
+
Then it should pass with:
|
|
80
|
+
"""
|
|
81
|
+
3 features passed, 0 failed, 0 skipped
|
|
82
|
+
4 scenarios passed, 0 failed, 0 skipped
|
|
83
|
+
8 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
Scenario: Run behave with feature subdirectory (CASE 1)
|
|
87
|
+
When I run "behave -f progress features/group1/"
|
|
88
|
+
Then it should pass with:
|
|
89
|
+
"""
|
|
90
|
+
2 features passed, 0 failed, 0 skipped
|
|
91
|
+
3 scenarios passed, 0 failed, 0 skipped
|
|
92
|
+
6 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
Scenario: Run behave with feature subdirectory (CASE 2)
|
|
96
|
+
When I run "behave -f progress features/group2/"
|
|
97
|
+
Then it should pass with:
|
|
98
|
+
"""
|
|
99
|
+
1 feature passed, 0 failed, 0 skipped
|
|
100
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
101
|
+
2 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
Scenario: Run behave with one feature file
|
|
105
|
+
When I run "behave -f progress features/group1/alice.feature"
|
|
106
|
+
Then it should pass with:
|
|
107
|
+
"""
|
|
108
|
+
1 feature passed, 0 failed, 0 skipped
|
|
109
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
110
|
+
4 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
111
|
+
"""
|
|
112
|
+
When I run "behave -f progress features/group2/charly.feature"
|
|
113
|
+
Then it should pass with:
|
|
114
|
+
"""
|
|
115
|
+
1 feature passed, 0 failed, 0 skipped
|
|
116
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
117
|
+
2 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
118
|
+
"""
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
Scenario: Run behave with two feature files (CASE 1)
|
|
122
|
+
Given a file named "one.featureset" with:
|
|
123
|
+
"""
|
|
124
|
+
features/group1/alice.feature
|
|
125
|
+
features/group2/charly.feature
|
|
126
|
+
"""
|
|
127
|
+
When I run "behave -f progress @one.featureset"
|
|
128
|
+
Then it should pass with:
|
|
129
|
+
"""
|
|
130
|
+
2 features passed, 0 failed, 0 skipped
|
|
131
|
+
3 scenarios passed, 0 failed, 0 skipped
|
|
132
|
+
6 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
133
|
+
"""
|
|
134
|
+
|
|
135
|
+
Scenario: Run behave with two feature files (CASE 2: different ordering)
|
|
136
|
+
Given a file named "two.featureset" with:
|
|
137
|
+
"""
|
|
138
|
+
features/group2/charly.feature
|
|
139
|
+
features/group1/alice.feature
|
|
140
|
+
"""
|
|
141
|
+
When I run "behave -f progress @two.featureset"
|
|
142
|
+
Then it should pass with:
|
|
143
|
+
"""
|
|
144
|
+
2 features passed, 0 failed, 0 skipped
|
|
145
|
+
3 scenarios passed, 0 failed, 0 skipped
|
|
146
|
+
6 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
147
|
+
"""
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Feature: Basic directory layout (Variant 1)
|
|
2
|
+
|
|
3
|
+
As a story/test writer
|
|
4
|
+
I want a simple, non-deep directory structure
|
|
5
|
+
So that I can easily get an overview which stories/tests exist
|
|
6
|
+
|
|
7
|
+
. BASIC DIRECTORY LAYOUT STRUCTURE:
|
|
8
|
+
. features/
|
|
9
|
+
. +-- steps/*.py # Step definitions or step-library imports.
|
|
10
|
+
. +-- *.feature # Feature files.
|
|
11
|
+
. +-- environment.py # OPTIONAL: environment setup/hooks.
|
|
12
|
+
.
|
|
13
|
+
. SEE ALSO:
|
|
14
|
+
. * http://pythonhosted.org/behave/gherkin.html#layout-variations
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@setup
|
|
18
|
+
Scenario: Setup directory structure
|
|
19
|
+
Given a new working directory
|
|
20
|
+
And a file named "features/steps/steps.py" with:
|
|
21
|
+
"""
|
|
22
|
+
from behave import step
|
|
23
|
+
|
|
24
|
+
@step('{word:w} step passes')
|
|
25
|
+
def step_passes(context, word):
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
@step('{word:w} step fails')
|
|
29
|
+
def step_fails(context, word):
|
|
30
|
+
assert False, "XFAIL-STEP"
|
|
31
|
+
"""
|
|
32
|
+
And a file named "features/alice.feature" with:
|
|
33
|
+
"""
|
|
34
|
+
Feature: Alice
|
|
35
|
+
Scenario: A1
|
|
36
|
+
Given a step passes
|
|
37
|
+
When another step passes
|
|
38
|
+
Then a step passes
|
|
39
|
+
"""
|
|
40
|
+
And a file named "features/bob.feature" with:
|
|
41
|
+
"""
|
|
42
|
+
Feature: Bob
|
|
43
|
+
Scenario: B1
|
|
44
|
+
When a step passes
|
|
45
|
+
Then another step passes
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
Scenario: Run behave with feature directory
|
|
50
|
+
When I run "behave -f progress features/"
|
|
51
|
+
Then it should pass with:
|
|
52
|
+
"""
|
|
53
|
+
2 features passed, 0 failed, 0 skipped
|
|
54
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
55
|
+
5 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
Scenario: Run behave with one feature file
|
|
59
|
+
When I run "behave -f progress features/alice.feature"
|
|
60
|
+
Then it should pass with:
|
|
61
|
+
"""
|
|
62
|
+
1 feature passed, 0 failed, 0 skipped
|
|
63
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
64
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
Scenario: Run behave with two feature files
|
|
69
|
+
When I run "behave -f progress features/alice.feature features/bob.feature"
|
|
70
|
+
Then it should pass with:
|
|
71
|
+
"""
|
|
72
|
+
2 features passed, 0 failed, 0 skipped
|
|
73
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
74
|
+
5 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
75
|
+
"""
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
Feature: Basic directory layout (Variant 1B)
|
|
2
|
+
|
|
3
|
+
As a story/test writer
|
|
4
|
+
I want a simple, non-deep directory structure
|
|
5
|
+
So that I can easily get an overview which stories/tests exist
|
|
6
|
+
|
|
7
|
+
. BASIC DIRECTORY LAYOUT STRUCTURE:
|
|
8
|
+
. testing/features/
|
|
9
|
+
. +-- steps/*.py # Step definitions or step-library imports.
|
|
10
|
+
. +-- *.feature # Feature files.
|
|
11
|
+
. +-- environment.py # OPTIONAL: environment setup/hooks.
|
|
12
|
+
.
|
|
13
|
+
. SEE ALSO:
|
|
14
|
+
. * http://pythonhosted.org/behave/gherkin.html#layout-variations
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@setup
|
|
18
|
+
Scenario: Setup directory structure
|
|
19
|
+
Given a new working directory
|
|
20
|
+
And a file named "testing/features/steps/steps.py" with:
|
|
21
|
+
"""
|
|
22
|
+
from behave import step
|
|
23
|
+
|
|
24
|
+
@step('{word:w} step passes')
|
|
25
|
+
def step_passes(context, word):
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
@step('{word:w} step fails')
|
|
29
|
+
def step_fails(context, word):
|
|
30
|
+
assert False, "XFAIL-STEP"
|
|
31
|
+
"""
|
|
32
|
+
And a file named "testing/features/alice.feature" with:
|
|
33
|
+
"""
|
|
34
|
+
Feature: Alice
|
|
35
|
+
Scenario: A1
|
|
36
|
+
Given a step passes
|
|
37
|
+
When another step passes
|
|
38
|
+
Then a step passes
|
|
39
|
+
"""
|
|
40
|
+
And a file named "testing/features/bob.feature" with:
|
|
41
|
+
"""
|
|
42
|
+
Feature: Bob
|
|
43
|
+
Scenario: B1
|
|
44
|
+
When a step passes
|
|
45
|
+
Then another step passes
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
Scenario: Run behave with testing directory
|
|
50
|
+
When I run "behave -f progress testing/"
|
|
51
|
+
Then it should fail with:
|
|
52
|
+
"""
|
|
53
|
+
ConfigError: No steps directory in '{__WORKDIR__}/testing'
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
Scenario: Run behave with feature subdirectory
|
|
57
|
+
When I run "behave -f progress testing/features/"
|
|
58
|
+
Then it should pass with:
|
|
59
|
+
"""
|
|
60
|
+
2 features passed, 0 failed, 0 skipped
|
|
61
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
62
|
+
5 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
Scenario: Run behave with one feature file
|
|
66
|
+
When I run "behave -f progress testing/features/alice.feature"
|
|
67
|
+
Then it should pass with:
|
|
68
|
+
"""
|
|
69
|
+
1 feature passed, 0 failed, 0 skipped
|
|
70
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
71
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
Scenario: Run behave with two feature files
|
|
76
|
+
Given a file named "one.featureset" with:
|
|
77
|
+
"""
|
|
78
|
+
testing/features/alice.feature
|
|
79
|
+
testing/features/bob.feature
|
|
80
|
+
"""
|
|
81
|
+
When I run "behave -f progress @one.featureset"
|
|
82
|
+
Then it should pass with:
|
|
83
|
+
"""
|
|
84
|
+
2 features passed, 0 failed, 0 skipped
|
|
85
|
+
2 scenarios passed, 0 failed, 0 skipped
|
|
86
|
+
5 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
87
|
+
"""
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
|
2
|
+
|
|
3
|
+
from behave.tag_matcher import ActiveTagMatcher, setup_active_tag_values
|
|
4
|
+
from behave4cmd0.setup_command_shell import setup_command_shell_processors4behave
|
|
5
|
+
import platform
|
|
6
|
+
import sys
|
|
7
|
+
import six
|
|
8
|
+
|
|
9
|
+
# -- MATCHES ANY TAGS: @use.with_{category}={value}
|
|
10
|
+
# NOTE: active_tag_value_provider provides category values for active tags.
|
|
11
|
+
python_version = "%s.%s" % sys.version_info[:2]
|
|
12
|
+
active_tag_value_provider = {
|
|
13
|
+
"python2": str(six.PY2).lower(),
|
|
14
|
+
"python3": str(six.PY3).lower(),
|
|
15
|
+
"python.version": python_version,
|
|
16
|
+
# -- python.implementation: cpython, pypy, jython, ironpython
|
|
17
|
+
"python.implementation": platform.python_implementation().lower(),
|
|
18
|
+
"pypy": str("__pypy__" in sys.modules).lower(),
|
|
19
|
+
"os": sys.platform,
|
|
20
|
+
}
|
|
21
|
+
active_tag_matcher = ActiveTagMatcher(active_tag_value_provider)
|
|
22
|
+
|
|
23
|
+
# -----------------------------------------------------------------------------
|
|
24
|
+
# HOOKS:
|
|
25
|
+
# -----------------------------------------------------------------------------
|
|
26
|
+
def before_all(context):
|
|
27
|
+
# -- SETUP ACTIVE-TAG MATCHER (with userdata):
|
|
28
|
+
# USE: behave -D browser=safari ...
|
|
29
|
+
setup_active_tag_values(active_tag_value_provider, context.config.userdata)
|
|
30
|
+
setup_python_path()
|
|
31
|
+
setup_context_with_global_params_test(context)
|
|
32
|
+
setup_command_shell_processors4behave()
|
|
33
|
+
|
|
34
|
+
def before_feature(context, feature):
|
|
35
|
+
if active_tag_matcher.should_exclude_with(feature.tags):
|
|
36
|
+
feature.skip(reason=active_tag_matcher.exclude_reason)
|
|
37
|
+
|
|
38
|
+
def before_scenario(context, scenario):
|
|
39
|
+
if active_tag_matcher.should_exclude_with(scenario.effective_tags):
|
|
40
|
+
scenario.skip(reason=active_tag_matcher.exclude_reason)
|
|
41
|
+
|
|
42
|
+
# -----------------------------------------------------------------------------
|
|
43
|
+
# SPECIFIC FUNCTIONALITY:
|
|
44
|
+
# -----------------------------------------------------------------------------
|
|
45
|
+
def setup_context_with_global_params_test(context):
|
|
46
|
+
context.global_name = "env:Alice"
|
|
47
|
+
context.global_age = 12
|
|
48
|
+
|
|
49
|
+
def setup_python_path():
|
|
50
|
+
# -- NEEDED-FOR: formatter.user_defined.feature
|
|
51
|
+
import os
|
|
52
|
+
PYTHONPATH = os.environ.get("PYTHONPATH", "")
|
|
53
|
+
os.environ["PYTHONPATH"] = "."+ os.pathsep + PYTHONPATH
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
Feature: Exploratory Testing with Tables and Table Annotations
|
|
2
|
+
|
|
3
|
+
As a tester
|
|
4
|
+
I want sometimes to explore a problem domain
|
|
5
|
+
And see not only the expected results
|
|
6
|
+
But also the actual results in a table.
|
|
7
|
+
|
|
8
|
+
. HINT: Does not work with monochrome format in pretty formatter:
|
|
9
|
+
. behave -f pretty --no-color ...
|
|
10
|
+
. behave -c ...
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@setup
|
|
14
|
+
Scenario: Feature Setup
|
|
15
|
+
Given a new working directory
|
|
16
|
+
And a file named "features/steps/explore_with_table_steps.py" with:
|
|
17
|
+
"""
|
|
18
|
+
from behave import given, when, then, step
|
|
19
|
+
|
|
20
|
+
database = {
|
|
21
|
+
"Alice": { "age": 10 },
|
|
22
|
+
"Bob": { "age": 11 },
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@when('I query the database with')
|
|
26
|
+
def step_query_database_and_update_table(context):
|
|
27
|
+
assert context.table, "REQUIRE: table"
|
|
28
|
+
context.table.require_column("Name")
|
|
29
|
+
age_index = context.table.ensure_column_exists("Age")
|
|
30
|
+
for index, row in enumerate(context.table.rows):
|
|
31
|
+
name = row["Name"]
|
|
32
|
+
person = database.get(name, None)
|
|
33
|
+
if person:
|
|
34
|
+
row.cells[age_index] = str(person["age"])
|
|
35
|
+
context.current_table = context.table
|
|
36
|
+
|
|
37
|
+
@when('I add {number:n} to column "{column}"')
|
|
38
|
+
def step_query_and_annotate_database(context, number, column):
|
|
39
|
+
assert context.current_table, "REQUIRE: current_table"
|
|
40
|
+
age_index = context.current_table.ensure_column_exists("Age")
|
|
41
|
+
for row in context.current_table.rows:
|
|
42
|
+
value = int(row.cells[age_index]) or 0
|
|
43
|
+
row.cells[age_index] = str(value + number)
|
|
44
|
+
|
|
45
|
+
@step('note that the "{name}" column was added to the table')
|
|
46
|
+
def step_note_that_column_was_added(context, name):
|
|
47
|
+
assert context.current_table.has_column(name)
|
|
48
|
+
|
|
49
|
+
@then('note that the "{name}" column was modified in the table')
|
|
50
|
+
def step_note_that_column_was_modified(context, name):
|
|
51
|
+
pass
|
|
52
|
+
|
|
53
|
+
@then('I inspect the table')
|
|
54
|
+
def step_inspect_table(context):
|
|
55
|
+
assert context.current_table
|
|
56
|
+
context.table = context.current_table
|
|
57
|
+
|
|
58
|
+
@then('the table contains')
|
|
59
|
+
def step_inspect_table(context):
|
|
60
|
+
assert context.table, "REQUIRE: table"
|
|
61
|
+
assert context.current_table, "REQUIRE: current_table"
|
|
62
|
+
assert context.table == context.current_table
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
Scenario: Add table column with new data in a step and ensure changes are shown
|
|
67
|
+
Given a file named "features/table.set_column_data.feature" with:
|
|
68
|
+
"""
|
|
69
|
+
Feature:
|
|
70
|
+
Scenario:
|
|
71
|
+
When I query the database with:
|
|
72
|
+
| Name |
|
|
73
|
+
| Alice |
|
|
74
|
+
| Bob |
|
|
75
|
+
Then note that the "Age" column was added to the table
|
|
76
|
+
"""
|
|
77
|
+
When I run "behave -f plain features/table.set_column_data.feature"
|
|
78
|
+
Then it should pass with:
|
|
79
|
+
"""
|
|
80
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
81
|
+
2 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
82
|
+
"""
|
|
83
|
+
And the command output should contain:
|
|
84
|
+
"""
|
|
85
|
+
| Name | Age |
|
|
86
|
+
| Alice | 10 |
|
|
87
|
+
| Bob | 11 |
|
|
88
|
+
"""
|
|
89
|
+
But note that "the Age table column was added by the step"
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
Scenario: Modify table cells in a column and ensure changes are shown
|
|
93
|
+
Given a file named "features/table.modify_column.feature" with:
|
|
94
|
+
"""
|
|
95
|
+
Feature:
|
|
96
|
+
Scenario:
|
|
97
|
+
When I query the database with:
|
|
98
|
+
| Name | Age |
|
|
99
|
+
| Alice | 222 |
|
|
100
|
+
| Bob | 333 |
|
|
101
|
+
Then note that the "Age" column was modified in the table
|
|
102
|
+
Then the table contains:
|
|
103
|
+
| Name | Age |
|
|
104
|
+
| Alice | 10 |
|
|
105
|
+
| Bob | 11 |
|
|
106
|
+
"""
|
|
107
|
+
When I run "behave -f plain features/table.modify_column.feature"
|
|
108
|
+
Then it should pass with:
|
|
109
|
+
"""
|
|
110
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
111
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
112
|
+
"""
|
|
113
|
+
And the command output should contain:
|
|
114
|
+
"""
|
|
115
|
+
| Name | Age |
|
|
116
|
+
| Alice | 10 |
|
|
117
|
+
| Bob | 11 |
|
|
118
|
+
"""
|
|
119
|
+
But note that "the Age column was modified in the table"
|
|
120
|
+
And the command output should not contain:
|
|
121
|
+
"""
|
|
122
|
+
| Name | Age |
|
|
123
|
+
| Alice | 222 |
|
|
124
|
+
| Bob | 333 |
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
Scenario: Modify table cells in a column (formatter=pretty with colors)
|
|
129
|
+
When I run "behave -f pretty features/table.modify_column.feature"
|
|
130
|
+
Then it should pass with:
|
|
131
|
+
"""
|
|
132
|
+
1 scenario passed, 0 failed, 0 skipped
|
|
133
|
+
3 steps passed, 0 failed, 0 skipped, 0 undefined
|
|
134
|
+
"""
|
|
135
|
+
And the command output should contain:
|
|
136
|
+
"""
|
|
137
|
+
| Name | Age |
|
|
138
|
+
| Alice | 10 |
|
|
139
|
+
| Bob | 11 |
|
|
140
|
+
"""
|
|
141
|
+
But note that "the Age column was modified in the table"
|