cucumber 1.3.10 → 2.0.0
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 +4 -4
- data/.coveralls.yml +1 -0
- data/.rspec +1 -1
- data/.travis.yml +4 -3
- data/CONTRIBUTING.md +9 -0
- data/Gemfile +9 -2
- data/History.md +212 -22
- data/LICENSE +2 -2
- data/README.md +4 -4
- data/Rakefile +10 -1
- data/bin/cucumber +1 -5
- data/cucumber.gemspec +10 -13
- data/cucumber.yml +14 -24
- data/examples/{ramaze → i18n/el}/Rakefile +1 -1
- data/examples/i18n/el/features/addition.feature +17 -0
- data/examples/i18n/el/features/division.feature +10 -0
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/el/lib/calculator.rb +14 -0
- data/examples/i18n/fr/Rakefile +3 -1
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +2 -2
- data/examples/i18n/ht/Rakefile +6 -0
- data/examples/i18n/ht/features/adisyon.feature +17 -0
- data/examples/i18n/ht/features/divizyon.feature +10 -0
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +25 -0
- data/examples/i18n/ht/lib/kalkilatris.rb +14 -0
- data/examples/i18n/zh-CN/features/{step_definitons → step_definitions}/calculator_steps.rb +4 -4
- data/examples/tcl/features/step_definitions/fib_steps.rb +1 -1
- data/{legacy_features → features/docs}/api/list_step_defs_as_json.feature +14 -14
- data/{legacy_features → features/docs}/api/run_cli_main_with_existing_runtime.feature +5 -10
- data/features/{backtraces.feature → docs/cli/backtraces.feature} +2 -2
- data/features/docs/cli/dry_run.feature +73 -0
- data/features/docs/cli/exclude_files.feature +18 -0
- data/features/docs/cli/execute_with_tag_filter.feature +117 -0
- data/features/docs/cli/randomize.feature +46 -0
- data/features/docs/cli/require.feature +27 -0
- data/features/docs/cli/run_scenarios_matching_name.feature +104 -0
- data/features/docs/cli/run_specific_scenarios.feature +75 -0
- data/features/docs/cli/showing_differences.feature +43 -0
- data/features/docs/cli/specifying_multiple_formatters.feature +44 -0
- data/features/docs/cli/strict_mode.feature +64 -0
- data/features/{nested_steps.feature → docs/defining_steps/nested_steps.feature} +52 -6
- data/features/{nested_steps_i18n.feature → docs/defining_steps/nested_steps_i18n.feature} +0 -2
- data/features/{step_definitions.feature → docs/defining_steps/one_line_step_definitions.feature} +3 -3
- data/features/docs/defining_steps/printing_messages.feature +148 -0
- data/features/docs/defining_steps/skip_scenario.feature +62 -0
- data/features/docs/defining_steps/snippets.feature +56 -0
- data/{legacy_features → features/docs/defining_steps}/table_diffing.feature +21 -16
- data/features/{transforms.feature → docs/defining_steps/transforms.feature} +2 -2
- data/{legacy_features/exception_in_after_block.feature → features/docs/exception_in_after_hook.feature} +25 -26
- data/{legacy_features/exception_in_after_step_block.feature → features/docs/exception_in_after_step_hook.feature} +22 -24
- data/features/docs/exception_in_around_hook.feature +80 -0
- data/{legacy_features/exception_in_before_block.feature → features/docs/exception_in_before_hook.feature} +18 -20
- data/features/docs/extending_cucumber/custom_filter.feature +29 -0
- data/features/docs/extending_cucumber/custom_formatter.feature +94 -0
- data/features/docs/formatters/debug_formatter.feature +47 -0
- data/features/{formatter_step_file_colon_line.feature → docs/formatters/formatter_step_file_colon_line.feature} +2 -4
- data/features/{html_formatter.feature → docs/formatters/html_formatter.feature} +10 -14
- data/features/docs/formatters/json_formatter.feature +760 -0
- data/features/docs/formatters/junit_formatter.feature +316 -0
- data/features/docs/formatters/pretty_formatter.feature +73 -0
- data/features/{progress_formatter.feature → docs/formatters/progress_formatter.feature} +1 -1
- data/features/docs/formatters/rerun_formatter.feature +136 -0
- data/features/docs/formatters/usage_formatter.feature +102 -0
- data/features/docs/getting_started.feature +27 -0
- data/features/{background.feature → docs/gherkin/background.feature} +149 -91
- data/features/{doc_strings.feature → docs/gherkin/doc_strings.feature} +1 -0
- data/features/docs/gherkin/expand_option_for_outlines.feature +46 -0
- data/features/docs/gherkin/language_from_header.feature +32 -0
- data/features/docs/gherkin/outlines.feature +158 -0
- data/features/docs/gherkin/unicode_table.feature +32 -0
- data/features/docs/gherkin/using_descriptions.feature +88 -0
- data/features/docs/gherkin/using_star_notation.feature +37 -0
- data/{legacy_features → features/docs}/post_configuration_hook.feature +17 -18
- data/{legacy_features → features/docs}/profiles.feature +30 -36
- data/{legacy_features → features/docs}/rake_task.feature +30 -41
- data/features/{raketask.feature → docs/raketask.feature} +6 -13
- data/{legacy_features/wire_protocol_erb.feature → features/docs/wire_protocol/erb_configuration.feature} +7 -8
- data/features/docs/wire_protocol/handle_unexpected_response.feature +30 -0
- data/features/docs/wire_protocol/invoke_message.feature +216 -0
- data/features/docs/wire_protocol/readme.md +26 -0
- data/features/docs/wire_protocol/snippets_message.feature +51 -0
- data/features/docs/wire_protocol/step_matches_message.feature +81 -0
- data/{legacy_features/wire_protocol_table_diffing.feature → features/docs/wire_protocol/table_diffing.feature} +19 -12
- data/{legacy_features/wire_protocol_tags.feature → features/docs/wire_protocol/tags.feature} +7 -7
- data/{legacy_features/wire_protocol_timeouts.feature → features/docs/wire_protocol/timeouts.feature} +7 -6
- data/{legacy_features → features/docs}/work_in_progress.feature +52 -54
- data/features/docs/writing_support_code/after_hooks.feature +80 -0
- data/{legacy_features → features/docs/writing_support_code}/around_hooks.feature +56 -28
- data/features/docs/writing_support_code/before_hook.feature +65 -0
- data/features/docs/writing_support_code/hook_order.feature +61 -0
- data/features/{load_path.feature → docs/writing_support_code/load_path.feature} +3 -0
- data/features/docs/writing_support_code/state.feature +32 -0
- data/features/docs/writing_support_code/tagged_hooks.feature +95 -0
- data/features/lib/step_definitions/aruba_steps.rb +22 -0
- data/features/lib/step_definitions/cucumber_steps.rb +50 -0
- data/features/{step_definitions → lib/step_definitions}/iso-8859-1_steps.rb +3 -15
- data/features/lib/step_definitions/json_steps.rb +7 -0
- data/features/lib/step_definitions/junit_steps.rb +13 -0
- data/features/lib/step_definitions/language_steps.rb +4 -5
- data/features/lib/step_definitions/profile_steps.rb +15 -0
- data/features/lib/step_definitions/ruby_steps.rb +3 -0
- data/features/lib/step_definitions/wire_steps.rb +58 -0
- data/features/lib/support/env.rb +21 -0
- data/{legacy_features → features/lib}/support/fake_wire_server.rb +10 -7
- data/features/{support → lib/support}/feature_factory.rb +1 -1
- data/features/lib/support/normalise_output.rb +33 -0
- data/gem_tasks/cov.rake +5 -0
- data/gem_tasks/cucumber.rake +3 -8
- data/gem_tasks/rspec.rake +0 -2
- data/lib/cucumber/ast.rb +8 -25
- data/lib/cucumber/cli/configuration.rb +33 -37
- data/lib/cucumber/cli/main.rb +14 -27
- data/lib/cucumber/cli/options.rb +22 -60
- data/lib/cucumber/cli/profile_loader.rb +1 -1
- data/lib/cucumber/configuration.rb +4 -0
- data/lib/cucumber/constantize.rb +7 -6
- data/lib/cucumber/core_ext/instance_exec.rb +7 -38
- data/lib/cucumber/core_ext/proc.rb +1 -1
- data/lib/cucumber/encoding.rb +5 -0
- data/lib/cucumber/errors.rb +21 -10
- data/lib/cucumber/file_specs.rb +37 -0
- data/lib/cucumber/filters/activate_steps.rb +33 -0
- data/lib/cucumber/filters/apply_after_hooks.rb +9 -0
- data/lib/cucumber/filters/apply_after_step_hooks.rb +12 -0
- data/lib/cucumber/filters/apply_around_hooks.rb +12 -0
- data/lib/cucumber/filters/apply_before_hooks.rb +9 -0
- data/lib/cucumber/filters/gated_receiver.rb +25 -0
- data/lib/cucumber/filters/prepare_world.rb +45 -0
- data/lib/cucumber/filters/quit.rb +28 -0
- data/lib/cucumber/filters/randomizer.rb +40 -0
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +31 -0
- data/lib/cucumber/filters/tag_limits/verifier.rb +59 -0
- data/lib/cucumber/filters/tag_limits.rb +45 -0
- data/lib/cucumber/filters.rb +9 -0
- data/lib/cucumber/formatter/ansicolor.rb +0 -8
- data/lib/cucumber/formatter/console.rb +66 -36
- data/lib/cucumber/formatter/debug.rb +10 -8
- data/lib/cucumber/formatter/fanout.rb +27 -0
- data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +122 -12
- data/lib/cucumber/formatter/html.rb +67 -18
- data/lib/cucumber/formatter/ignore_missing_messages.rb +20 -0
- data/lib/cucumber/formatter/interceptor.rb +17 -3
- data/lib/cucumber/formatter/json.rb +1 -1
- data/lib/cucumber/formatter/junit.rb +105 -5
- data/lib/cucumber/formatter/legacy_api/adapter.rb +1060 -0
- data/lib/cucumber/formatter/legacy_api/ast.rb +376 -0
- data/lib/cucumber/formatter/legacy_api/results.rb +51 -0
- data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +30 -0
- data/lib/cucumber/formatter/pretty.rb +16 -8
- data/lib/cucumber/formatter/progress.rb +10 -0
- data/lib/cucumber/formatter/rerun.rb +14 -71
- data/lib/cucumber/formatter/unicode.rb +8 -21
- data/lib/cucumber/formatter/usage.rb +7 -1
- data/lib/cucumber/hooks.rb +97 -0
- data/lib/cucumber/language_support/language_methods.rb +0 -54
- data/lib/cucumber/{ast/table.rb → multiline_argument/data_table.rb} +77 -84
- data/lib/cucumber/multiline_argument/doc_string.rb +10 -0
- data/lib/cucumber/multiline_argument.rb +74 -0
- data/lib/cucumber/platform.rb +21 -20
- data/lib/cucumber/project_initializer.rb +43 -0
- data/lib/cucumber/rake/task.rb +3 -54
- data/lib/cucumber/rb_support/rb_hook.rb +2 -2
- data/lib/cucumber/rb_support/rb_language.rb +4 -34
- data/lib/cucumber/rb_support/rb_step_definition.rb +11 -2
- data/lib/cucumber/rb_support/rb_transform.rb +3 -1
- data/lib/cucumber/rb_support/rb_world.rb +13 -20
- data/lib/cucumber/rb_support/snippet.rb +61 -20
- data/lib/cucumber/rspec/doubles.rb +9 -6
- data/lib/cucumber/running_test_case.rb +115 -0
- data/lib/cucumber/runtime/after_hooks.rb +24 -0
- data/lib/cucumber/runtime/before_hooks.rb +23 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +14 -10
- data/lib/cucumber/runtime/step_hooks.rb +22 -0
- data/lib/cucumber/runtime/support_code.rb +78 -21
- data/lib/cucumber/runtime/user_interface.rb +4 -0
- data/lib/cucumber/runtime.rb +153 -98
- data/lib/cucumber/step_match.rb +27 -3
- data/lib/cucumber/term/ansicolor.rb +1 -9
- data/lib/cucumber/wire_support/wire_language.rb +23 -9
- data/lib/cucumber/wire_support/wire_packet.rb +1 -1
- data/lib/cucumber/wire_support/wire_protocol/requests.rb +13 -5
- data/lib/cucumber/wire_support/wire_step_definition.rb +1 -8
- data/lib/cucumber.rb +8 -6
- data/spec/cucumber/cli/configuration_spec.rb +165 -134
- data/spec/cucumber/cli/main_spec.rb +36 -99
- data/spec/cucumber/cli/options_spec.rb +238 -272
- data/spec/cucumber/cli/profile_loader_spec.rb +18 -7
- data/spec/cucumber/configuration_spec.rb +3 -3
- data/spec/cucumber/constantize_spec.rb +2 -1
- data/spec/cucumber/core_ext/instance_exec_spec.rb +4 -0
- data/spec/cucumber/core_ext/proc_spec.rb +32 -43
- data/spec/cucumber/file_specs_spec.rb +60 -0
- data/spec/cucumber/filters/activate_steps_spec.rb +57 -0
- data/spec/cucumber/filters/gated_receiver_spec.rb +47 -0
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +38 -0
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +57 -0
- data/spec/cucumber/filters/tag_limits_spec.rb +59 -0
- data/spec/cucumber/formatter/ansicolor_spec.rb +11 -10
- data/spec/cucumber/formatter/debug_spec.rb +64 -0
- data/spec/cucumber/formatter/duration_spec.rb +6 -6
- data/spec/cucumber/formatter/html_spec.rb +233 -39
- data/spec/cucumber/formatter/interceptor_spec.rb +38 -31
- data/spec/cucumber/formatter/junit_spec.rb +213 -151
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +2090 -0
- data/spec/cucumber/formatter/pretty_spec.rb +481 -49
- data/spec/cucumber/formatter/progress_spec.rb +63 -16
- data/spec/cucumber/formatter/rerun_spec.rb +107 -0
- data/spec/cucumber/formatter/spec_helper.rb +32 -17
- data/spec/cucumber/hooks_spec.rb +30 -0
- data/spec/cucumber/{ast/table_spec.rb → multiline_argument/data_table_spec.rb} +128 -208
- data/spec/cucumber/project_initializer_spec.rb +87 -0
- data/spec/cucumber/rake/forked_spec.rb +13 -22
- data/spec/cucumber/rb_support/rb_language_spec.rb +78 -69
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +90 -44
- data/spec/cucumber/rb_support/rb_transform_spec.rb +24 -3
- data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +6 -4
- data/spec/cucumber/rb_support/snippet_spec.rb +47 -38
- data/spec/cucumber/running_test_case_spec.rb +83 -0
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +18 -13
- data/spec/cucumber/runtime/support_code_spec.rb +29 -29
- data/spec/cucumber/runtime_spec.rb +35 -34
- data/spec/cucumber/step_match_spec.rb +30 -20
- data/spec/cucumber/wire_support/configuration_spec.rb +8 -5
- data/spec/cucumber/wire_support/connection_spec.rb +12 -8
- data/spec/cucumber/wire_support/wire_exception_spec.rb +14 -8
- data/spec/cucumber/wire_support/wire_language_spec.rb +8 -9
- data/spec/cucumber/wire_support/wire_packet_spec.rb +17 -13
- data/spec/cucumber/world/pending_spec.rb +36 -36
- data/spec/simplecov_setup.rb +18 -0
- data/spec/spec_helper.rb +6 -13
- metadata +348 -350
- data/.gitattributes +0 -1
- data/.ruby-version +0 -1
- data/examples/python/README.textile +0 -8
- data/examples/python/Rakefile +0 -4
- data/examples/python/features/fibonacci.feature +0 -19
- data/examples/python/features/step_definitions/fib_steps.py +0 -11
- data/examples/python/lib/fib.py +0 -7
- data/examples/ramaze/README.textile +0 -7
- data/examples/ramaze/app.rb +0 -21
- data/examples/ramaze/features/add.feature +0 -11
- data/examples/ramaze/features/step_definitions/add_steps.rb +0 -15
- data/examples/ramaze/features/support/env.rb +0 -32
- data/examples/ramaze/layout/default.html.erb +0 -8
- data/examples/ramaze/view/index.html.erb +0 -5
- data/examples/ruby2python/README.textile +0 -8
- data/examples/ruby2python/Rakefile +0 -4
- data/examples/ruby2python/features/fibonacci.feature +0 -19
- data/examples/ruby2python/features/step_definitions/fib_steps.rb +0 -7
- data/examples/ruby2python/features/support/env.rb +0 -21
- data/examples/ruby2python/lib/fib.py +0 -7
- data/examples/v8/Rakefile +0 -6
- data/examples/v8/features/fibonacci.feature +0 -43
- data/examples/v8/features/step_definitions/fib_steps.js +0 -49
- data/examples/v8/features/support/env.js +0 -14
- data/examples/v8/lib/fibonacci.js +0 -19
- data/features/.cucumber/stepdefs.json +0 -627
- data/features/assertions.feature +0 -73
- data/features/autoformat_profile_output.feature +0 -23
- data/features/before_hook.feature +0 -43
- data/features/bootstrap.feature +0 -27
- data/features/custom_formatter.feature +0 -41
- data/features/drb_server_integration.feature +0 -63
- data/features/execute_with_tag_filter.feature +0 -63
- data/features/formatter_callbacks.feature +0 -189
- data/features/json_formatter.feature +0 -338
- data/features/parsing.feature +0 -18
- data/features/pretty_formatter.feature +0 -31
- data/features/rerun_formatter.feature +0 -35
- data/features/run_specific_scenarios.feature +0 -47
- data/features/stats_formatters.feature +0 -73
- data/features/step_definitions/cucumber-features/cucumber_ruby_mappings.rb +0 -197
- data/features/step_definitions/cucumber_steps.rb +0 -55
- data/features/step_definitions/drb_steps.rb +0 -3
- data/features/support/env.rb +0 -57
- data/features/tagged_hooks.feature +0 -59
- data/fixtures/json/features/background.feature +0 -7
- data/fixtures/json/features/embed.feature +0 -4
- data/fixtures/json/features/one_passing_one_failing.feature +0 -11
- data/fixtures/json/features/step_definitions/steps.rb +0 -32
- data/fixtures/json/features/tables.feature +0 -13
- data/fixtures/junit/features/one_passing_one_failing.feature +0 -8
- data/fixtures/junit/features/pending.feature +0 -7
- data/fixtures/junit/features/scenario_outline.feature +0 -9
- data/fixtures/junit/features/some_subdirectory/one_passing_one_failing.feature +0 -8
- data/fixtures/junit/features/step_definitions/steps.rb +0 -11
- data/fixtures/self_test/README.textile +0 -6
- data/fixtures/self_test/Rakefile +0 -6
- data/fixtures/self_test/features/call_undefined_step_from_step_def.feature +0 -7
- data/fixtures/self_test/features/failing_expectation.feature +0 -4
- data/fixtures/self_test/features/lots_of_undefined.feature +0 -8
- data/fixtures/self_test/features/multiline_name.feature +0 -27
- data/fixtures/self_test/features/outline_sample.feature +0 -15
- data/fixtures/self_test/features/sample.feature +0 -21
- data/fixtures/self_test/features/search_sample.feature +0 -32
- data/fixtures/self_test/features/step_definitions/sample_steps.rb +0 -84
- data/fixtures/self_test/features/support/bubble_256x256.png +0 -0
- data/fixtures/self_test/features/support/env.rb +0 -26
- data/fixtures/self_test/features/tags_sample.feature +0 -17
- data/fixtures/self_test/features/tons_of_cukes.feature +0 -52
- data/fixtures/self_test/features/undefined_multiline_args.feature +0 -12
- data/fixtures/self_test/list-of-features.txt +0 -1
- data/fixtures/steps_library/features/step_definitions/steps_lib1.rb +0 -8
- data/fixtures/steps_library/features/step_definitions/steps_lib2.rb +0 -8
- data/fixtures/tickets/Rakefile +0 -20
- data/fixtures/tickets/features/172.feature +0 -28
- data/fixtures/tickets/features/177/1.feature +0 -28
- data/fixtures/tickets/features/177/2.feature +0 -20
- data/fixtures/tickets/features/177/3.feature +0 -18
- data/fixtures/tickets/features/180.feature +0 -7
- data/fixtures/tickets/features/229/tagged_hooks.feature +0 -8
- data/fixtures/tickets/features/229/tagged_hooks.rb +0 -14
- data/fixtures/tickets/features/236.feature +0 -13
- data/fixtures/tickets/features/241.feature +0 -12
- data/fixtures/tickets/features/246.feature +0 -4
- data/fixtures/tickets/features/248.feature +0 -11
- data/fixtures/tickets/features/270/back.feature +0 -14
- data/fixtures/tickets/features/270/back.steps.rb +0 -14
- data/fixtures/tickets/features/272/hooks.feature +0 -26
- data/fixtures/tickets/features/272/hooks_steps.rb +0 -53
- data/fixtures/tickets/features/279/py_string_indent.feature +0 -25
- data/fixtures/tickets/features/279/py_string_indent.steps.rb +0 -12
- data/fixtures/tickets/features/279/wrong.feature_ +0 -11
- data/fixtures/tickets/features/301/filter_background_tagged_hooks.feature +0 -6
- data/fixtures/tickets/features/301/filter_background_tagged_hooks_steps.rb +0 -12
- data/fixtures/tickets/features/306/only_background.feature +0 -4
- data/fixtures/tickets/features/around_timeout.feature +0 -6
- data/fixtures/tickets/features/gherkin_67.feature +0 -12
- data/fixtures/tickets/features/gherkin_68.feature +0 -4
- data/fixtures/tickets/features/half_manual.feature +0 -11
- data/fixtures/tickets/features/lib/eatting_machine.rb +0 -18
- data/fixtures/tickets/features/lib/pantry.rb +0 -20
- data/fixtures/tickets/features/scenario_outline.feature +0 -95
- data/fixtures/tickets/features/step_definitons/246_steps.rb +0 -3
- data/fixtures/tickets/features/step_definitons/248_steps.rb +0 -15
- data/fixtures/tickets/features/step_definitons/around_timeout_steps.rb +0 -9
- data/fixtures/tickets/features/step_definitons/half_manual_steps.rb +0 -11
- data/fixtures/tickets/features/step_definitons/scenario_outline_steps.rb +0 -42
- data/fixtures/tickets/features/step_definitons/tickets_steps.rb +0 -88
- data/fixtures/tickets/features/table_diffing.feature +0 -13
- data/fixtures/tickets/features/tickets.feature +0 -28
- data/fixtures/tickets/features.html +0 -138
- data/gem_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
- data/gem_tasks/yard/default/layout/html/footer.erb +0 -5
- data/gem_tasks/yard/default/layout/html/index.erb +0 -1
- data/gem_tasks/yard/default/layout/html/layout.erb +0 -25
- data/gem_tasks/yard/default/layout/html/logo.erb +0 -1
- data/gem_tasks/yard/default/layout/html/setup.rb +0 -4
- data/gem_tasks/yard.rake +0 -40
- data/legacy_features/README.md +0 -14
- data/legacy_features/announce.feature +0 -152
- data/legacy_features/bug_371.feature +0 -32
- data/legacy_features/bug_464.feature +0 -16
- data/legacy_features/bug_475.feature +0 -42
- data/legacy_features/bug_585_tab_indentation.feature +0 -22
- data/legacy_features/bug_600.feature +0 -73
- data/legacy_features/cucumber_cli.feature +0 -584
- data/legacy_features/cucumber_cli_outlines.feature +0 -117
- data/legacy_features/default_snippets.feature +0 -43
- data/legacy_features/diffing.feature +0 -25
- data/legacy_features/drb_server_integration.feature +0 -174
- data/legacy_features/exclude_files.feature +0 -20
- data/legacy_features/expand.feature +0 -60
- data/legacy_features/junit_formatter.feature +0 -214
- data/legacy_features/language_from_header.feature +0 -30
- data/legacy_features/listener_debugger_formatter.feature +0 -42
- data/legacy_features/multiline_names.feature +0 -44
- data/legacy_features/report_called_undefined_steps.feature +0 -35
- data/legacy_features/rerun_formatter.feature +0 -52
- data/legacy_features/simplest.feature +0 -11
- data/legacy_features/snippet.feature +0 -23
- data/legacy_features/snippets_when_using_star_keyword.feature +0 -38
- data/legacy_features/step_definitions/cucumber_steps.rb +0 -179
- data/legacy_features/step_definitions/extra_steps.rb +0 -2
- data/legacy_features/step_definitions/simplest_steps.rb +0 -3
- data/legacy_features/step_definitions/wire_steps.rb +0 -34
- data/legacy_features/support/env.rb +0 -161
- data/legacy_features/support/env.rb.simplest +0 -7
- data/legacy_features/table_mapping.feature +0 -34
- data/legacy_features/transform.feature +0 -245
- data/legacy_features/unicode_table.feature +0 -35
- data/legacy_features/wire_protocol.feature +0 -332
- data/lib/README.rdoc +0 -12
- data/lib/cucumber/ast/background.rb +0 -116
- data/lib/cucumber/ast/comment.rb +0 -31
- data/lib/cucumber/ast/doc_string.rb +0 -61
- data/lib/cucumber/ast/empty_background.rb +0 -33
- data/lib/cucumber/ast/examples.rb +0 -49
- data/lib/cucumber/ast/feature.rb +0 -99
- data/lib/cucumber/ast/features.rb +0 -38
- data/lib/cucumber/ast/has_steps.rb +0 -74
- data/lib/cucumber/ast/location.rb +0 -41
- data/lib/cucumber/ast/multiline_argument.rb +0 -30
- data/lib/cucumber/ast/names.rb +0 -13
- data/lib/cucumber/ast/outline_table.rb +0 -194
- data/lib/cucumber/ast/scenario.rb +0 -103
- data/lib/cucumber/ast/scenario_outline.rb +0 -146
- data/lib/cucumber/ast/step.rb +0 -122
- data/lib/cucumber/ast/step_collection.rb +0 -92
- data/lib/cucumber/ast/step_invocation.rb +0 -196
- data/lib/cucumber/ast/tags.rb +0 -28
- data/lib/cucumber/ast/tree_walker.rb +0 -191
- data/lib/cucumber/ast/visitor.rb +0 -11
- data/lib/cucumber/broadcaster.rb +0 -13
- data/lib/cucumber/cli/drb_client.rb +0 -43
- data/lib/cucumber/feature_file.rb +0 -94
- data/lib/cucumber/formatter/ordered_xml_markup.rb +0 -24
- data/lib/cucumber/js_support/js_dsl.js +0 -57
- data/lib/cucumber/js_support/js_language.rb +0 -185
- data/lib/cucumber/js_support/js_snippets.rb +0 -27
- data/lib/cucumber/parser/gherkin_builder.rb +0 -284
- data/lib/cucumber/parser.rb +0 -2
- data/lib/cucumber/py_support/py_dsl.py +0 -10
- data/lib/cucumber/py_support/py_language.py +0 -10
- data/lib/cucumber/py_support/py_language.rb +0 -80
- data/lib/cucumber/runtime/features_loader.rb +0 -62
- data/lib/cucumber/runtime/results.rb +0 -64
- data/lib/cucumber/step_mother.rb +0 -10
- data/spec/cucumber/ast/background_spec.rb +0 -122
- data/spec/cucumber/ast/doc_string_spec.rb +0 -40
- data/spec/cucumber/ast/feature_factory.rb +0 -72
- data/spec/cucumber/ast/feature_spec.rb +0 -63
- data/spec/cucumber/ast/features_spec.rb +0 -51
- data/spec/cucumber/ast/outline_table_spec.rb +0 -21
- data/spec/cucumber/ast/scenario_outline_spec.rb +0 -74
- data/spec/cucumber/ast/step_spec.rb +0 -68
- data/spec/cucumber/ast/tree_walker_spec.rb +0 -19
- data/spec/cucumber/broadcaster_spec.rb +0 -15
- data/spec/cucumber/cli/drb_client_spec.rb +0 -76
- data/spec/cucumber/rake/rcov_spec.rb +0 -71
- data/spec/cucumber/runtime/results_spec.rb +0 -81
- data/spec/cucumber/wire_support/wire_step_definition_spec.rb +0 -20
- /data/examples/i18n/ar/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/bg/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/ca/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/cs/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/da/features/{step_definitons → step_definitions}/lommeregner_steps.rb +0 -0
- /data/examples/i18n/de/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/en/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/eo/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/es/features/{step_definitons → step_definitions}/calculador_steps.rb +0 -0
- /data/examples/i18n/fi/features/{step_definitons → step_definitions}/laskin_steps.rb +0 -0
- /data/examples/i18n/he/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/hi/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/hu/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/id/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/it/features/{step_definitons → step_definitions}/calcolatrice_steps.rb +0 -0
- /data/examples/i18n/ja/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/ko/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/lt/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/lv/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/no/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
- /data/examples/i18n/pl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/ro/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/ru/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/sk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/sr-Cyrl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/sr-Latn/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/sv/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
- /data/examples/i18n/tr/features/{step_definitons → step_definitions}/hesap_makinesi_adimlari.rb +0 -0
- /data/examples/i18n/uk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/uz/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/zh-TW/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/features/{nested_steps_with_second_arg.feature → docs/defining_steps/nested_steps_with_second_arg.feature} +0 -0
- /data/features/{iso-8859-1.feature → docs/iso-8859-1.feature} +0 -0
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
Feature: Background
|
|
2
|
-
In order to provide a context to my scenarios within a feature
|
|
3
|
-
As a feature editor
|
|
4
|
-
I want to write a background section in my features.
|
|
5
2
|
|
|
3
|
+
Often you find that several scenarios in the same feature start with
|
|
4
|
+
a common context.
|
|
5
|
+
|
|
6
|
+
Cucumber provides a mechanism for this, by providing a `Background` keyword
|
|
7
|
+
where you can specify steps that should be run before each scenario in the
|
|
8
|
+
feature. Typically these will be `Given` steps, but you can use any steps
|
|
9
|
+
that you need to.
|
|
10
|
+
|
|
11
|
+
**Hint:** if you find that some of the scenarios don't fit the background,
|
|
12
|
+
consider splitting them into a separate feature.
|
|
13
|
+
|
|
6
14
|
Background:
|
|
7
15
|
Given a file named "features/passing_background.feature" with:
|
|
8
16
|
"""
|
|
@@ -42,7 +50,7 @@ Feature: Background
|
|
|
42
50
|
Feature: Background tagged Before on Outline
|
|
43
51
|
|
|
44
52
|
Background:
|
|
45
|
-
Given
|
|
53
|
+
Given this step passes
|
|
46
54
|
|
|
47
55
|
Scenario Outline: passing background
|
|
48
56
|
Then I should have '<count>' cukes
|
|
@@ -56,7 +64,7 @@ Feature: Background
|
|
|
56
64
|
Feature: Failing background sample
|
|
57
65
|
|
|
58
66
|
Background:
|
|
59
|
-
Given
|
|
67
|
+
Given this step raises an error
|
|
60
68
|
And '10' cukes
|
|
61
69
|
|
|
62
70
|
Scenario: failing background
|
|
@@ -70,7 +78,7 @@ Feature: Background
|
|
|
70
78
|
Feature: Failing background with scenario outlines sample
|
|
71
79
|
|
|
72
80
|
Background:
|
|
73
|
-
Given
|
|
81
|
+
Given this step raises an error
|
|
74
82
|
|
|
75
83
|
Scenario Outline: failing background
|
|
76
84
|
Then I should have '<count>' cukes
|
|
@@ -89,7 +97,7 @@ Feature: Background
|
|
|
89
97
|
Feature: Pending background sample
|
|
90
98
|
|
|
91
99
|
Background:
|
|
92
|
-
Given pending
|
|
100
|
+
Given this step is pending
|
|
93
101
|
|
|
94
102
|
Scenario: pending background
|
|
95
103
|
Then I should have '10' cukes
|
|
@@ -102,7 +110,7 @@ Feature: Background
|
|
|
102
110
|
Feature: Failing background after previously successful background sample
|
|
103
111
|
|
|
104
112
|
Background:
|
|
105
|
-
Given
|
|
113
|
+
Given this step passes
|
|
106
114
|
And '10' global cukes
|
|
107
115
|
|
|
108
116
|
Scenario: passing background
|
|
@@ -111,6 +119,29 @@ Feature: Background
|
|
|
111
119
|
Scenario: failing background
|
|
112
120
|
Then I should have '10' global cukes
|
|
113
121
|
"""
|
|
122
|
+
And a file named "features/failing_background_after_success_outline.feature" with:
|
|
123
|
+
"""
|
|
124
|
+
Feature: Failing background after previously successful background sample
|
|
125
|
+
|
|
126
|
+
Background:
|
|
127
|
+
Given this step passes
|
|
128
|
+
And '10' global cukes
|
|
129
|
+
|
|
130
|
+
Scenario Outline: passing background
|
|
131
|
+
Then I should have '<count>' global cukes
|
|
132
|
+
|
|
133
|
+
Examples:
|
|
134
|
+
| count |
|
|
135
|
+
| 10 |
|
|
136
|
+
|
|
137
|
+
Scenario Outline: failing background
|
|
138
|
+
Then I should have '<count>' global cukes
|
|
139
|
+
|
|
140
|
+
Examples:
|
|
141
|
+
| count |
|
|
142
|
+
| 10 |
|
|
143
|
+
|
|
144
|
+
"""
|
|
114
145
|
And a file named "features/multiline_args_background.feature" with:
|
|
115
146
|
"""
|
|
116
147
|
Feature: Passing background with multiline args
|
|
@@ -145,37 +176,27 @@ Feature: Background
|
|
|
145
176
|
I sleep all night and I test all day
|
|
146
177
|
\"\"\"
|
|
147
178
|
"""
|
|
148
|
-
And
|
|
179
|
+
And the standard step definitions
|
|
180
|
+
And a file named "features/step_definitions/cuke_steps.rb" with:
|
|
149
181
|
"""
|
|
150
|
-
def flunker
|
|
151
|
-
raise "FAIL"
|
|
152
|
-
end
|
|
153
|
-
|
|
154
182
|
Given /^'(.+)' cukes$/ do |cukes| x=1
|
|
155
183
|
raise "We already have #{@cukes} cukes!" if @cukes
|
|
156
184
|
@cukes = cukes
|
|
157
185
|
end
|
|
158
186
|
|
|
159
|
-
Given(/^passing without a table$/) do
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
Given /^failing without a table$/ do x=1
|
|
163
|
-
flunker
|
|
164
|
-
end
|
|
165
|
-
|
|
166
187
|
Given /^'(.+)' global cukes$/ do |cukes| x=1
|
|
167
188
|
$scenario_runs ||= 0
|
|
168
|
-
|
|
189
|
+
raise 'FAIL' if $scenario_runs >= 1
|
|
169
190
|
$cukes = cukes
|
|
170
191
|
$scenario_runs += 1
|
|
171
192
|
end
|
|
172
193
|
|
|
173
194
|
Then /^I should have '(.+)' global cukes$/ do |cukes| x=1
|
|
174
|
-
$cukes.
|
|
195
|
+
expect($cukes).to eq cukes
|
|
175
196
|
end
|
|
176
197
|
|
|
177
198
|
Then /^I should have '(.+)' cukes$/ do |cukes| x=1
|
|
178
|
-
@cukes.
|
|
199
|
+
expect(@cukes).to eq cukes
|
|
179
200
|
end
|
|
180
201
|
|
|
181
202
|
Before('@background_tagged_before_on_outline') do
|
|
@@ -183,7 +204,7 @@ Feature: Background
|
|
|
183
204
|
end
|
|
184
205
|
|
|
185
206
|
After('@background_tagged_before_on_outline') do
|
|
186
|
-
@cukes.
|
|
207
|
+
expect(@cukes).to eq '888'
|
|
187
208
|
end
|
|
188
209
|
"""
|
|
189
210
|
|
|
@@ -263,7 +284,7 @@ Feature: Background
|
|
|
263
284
|
Feature: Background tagged Before on Outline
|
|
264
285
|
|
|
265
286
|
Background:
|
|
266
|
-
Given
|
|
287
|
+
Given this step passes
|
|
267
288
|
|
|
268
289
|
Scenario Outline: passing background
|
|
269
290
|
Then I should have '<count>' cukes
|
|
@@ -286,11 +307,10 @@ Feature: Background
|
|
|
286
307
|
Feature: Failing background sample
|
|
287
308
|
|
|
288
309
|
Background:
|
|
289
|
-
Given
|
|
290
|
-
|
|
291
|
-
./features/step_definitions/steps.rb:2:in
|
|
292
|
-
|
|
293
|
-
features/failing_background.feature:4:in `Given failing without a table'
|
|
310
|
+
Given this step raises an error
|
|
311
|
+
error (RuntimeError)
|
|
312
|
+
./features/step_definitions/steps.rb:2:in `/^this step raises an error$/'
|
|
313
|
+
features/failing_background.feature:4:in `Given this step raises an error'
|
|
294
314
|
And '10' cukes
|
|
295
315
|
|
|
296
316
|
Scenario: failing background
|
|
@@ -301,9 +321,10 @@ Feature: Background
|
|
|
301
321
|
|
|
302
322
|
Failing Scenarios:
|
|
303
323
|
cucumber features/failing_background.feature:7
|
|
324
|
+
cucumber features/failing_background.feature:10
|
|
304
325
|
|
|
305
|
-
2 scenarios (
|
|
306
|
-
6 steps (
|
|
326
|
+
2 scenarios (2 failed)
|
|
327
|
+
6 steps (2 failed, 4 skipped)
|
|
307
328
|
0m0.012s
|
|
308
329
|
|
|
309
330
|
"""
|
|
@@ -316,11 +337,10 @@ Feature: Background
|
|
|
316
337
|
Feature: Failing background with scenario outlines sample
|
|
317
338
|
|
|
318
339
|
Background:
|
|
319
|
-
Given
|
|
320
|
-
|
|
321
|
-
./features/step_definitions/steps.rb:2:in
|
|
322
|
-
|
|
323
|
-
features/scenario_outline_failing_background.feature:4:in `Given failing without a table'
|
|
340
|
+
Given this step raises an error
|
|
341
|
+
error (RuntimeError)
|
|
342
|
+
./features/step_definitions/steps.rb:2:in `/^this step raises an error$/'
|
|
343
|
+
features/scenario_outline_failing_background.feature:4:in `Given this step raises an error'
|
|
324
344
|
|
|
325
345
|
Scenario Outline: failing background
|
|
326
346
|
Then I should have '<count>' cukes
|
|
@@ -337,10 +357,11 @@ Feature: Background
|
|
|
337
357
|
| 10 |
|
|
338
358
|
|
|
339
359
|
Failing Scenarios:
|
|
340
|
-
cucumber features/scenario_outline_failing_background.feature:
|
|
360
|
+
cucumber features/scenario_outline_failing_background.feature:10
|
|
361
|
+
cucumber features/scenario_outline_failing_background.feature:16
|
|
341
362
|
|
|
342
|
-
2 scenarios (
|
|
343
|
-
4 steps (
|
|
363
|
+
2 scenarios (2 failed)
|
|
364
|
+
4 steps (2 failed, 2 skipped)
|
|
344
365
|
0m0.012s
|
|
345
366
|
|
|
346
367
|
"""
|
|
@@ -352,7 +373,10 @@ Feature: Background
|
|
|
352
373
|
Feature: Pending background sample
|
|
353
374
|
|
|
354
375
|
Background:
|
|
355
|
-
Given pending
|
|
376
|
+
Given this step is pending
|
|
377
|
+
TODO (Cucumber::Pending)
|
|
378
|
+
./features/step_definitions/steps.rb:3:in `/^this step is pending$/'
|
|
379
|
+
features/pending_background.feature:4:in `Given this step is pending'
|
|
356
380
|
|
|
357
381
|
Scenario: pending background
|
|
358
382
|
Then I should have '10' cukes
|
|
@@ -360,8 +384,8 @@ Feature: Background
|
|
|
360
384
|
Scenario: another pending background
|
|
361
385
|
Then I should have '10' cukes
|
|
362
386
|
|
|
363
|
-
2 scenarios (2
|
|
364
|
-
4 steps (2 skipped, 2
|
|
387
|
+
2 scenarios (2 pending)
|
|
388
|
+
4 steps (2 skipped, 2 pending)
|
|
365
389
|
0m0.012s
|
|
366
390
|
|
|
367
391
|
"""
|
|
@@ -374,7 +398,7 @@ Feature: Background
|
|
|
374
398
|
Feature: Failing background after previously successful background sample
|
|
375
399
|
|
|
376
400
|
Background:
|
|
377
|
-
Given
|
|
401
|
+
Given this step passes
|
|
378
402
|
And '10' global cukes
|
|
379
403
|
|
|
380
404
|
Scenario: passing background
|
|
@@ -383,8 +407,7 @@ Feature: Background
|
|
|
383
407
|
Scenario: failing background
|
|
384
408
|
And '10' global cukes
|
|
385
409
|
FAIL (RuntimeError)
|
|
386
|
-
./features/step_definitions/
|
|
387
|
-
./features/step_definitions/steps.rb:19:in `/^'(.+)' global cukes$/'
|
|
410
|
+
./features/step_definitions/cuke_steps.rb:8:in `/^'(.+)' global cukes$/'
|
|
388
411
|
features/failing_background_after_success.feature:5:in `And '10' global cukes'
|
|
389
412
|
Then I should have '10' global cukes
|
|
390
413
|
|
|
@@ -397,8 +420,85 @@ Feature: Background
|
|
|
397
420
|
|
|
398
421
|
"""
|
|
399
422
|
|
|
423
|
+
@spawn
|
|
424
|
+
Scenario: background passes with first outline scenario but fails with second
|
|
425
|
+
When I run `cucumber -q features/failing_background_after_success_outline.feature`
|
|
426
|
+
Then it should fail with exactly:
|
|
427
|
+
"""
|
|
428
|
+
Feature: Failing background after previously successful background sample
|
|
429
|
+
|
|
430
|
+
Background:
|
|
431
|
+
Given this step passes
|
|
432
|
+
And '10' global cukes
|
|
433
|
+
|
|
434
|
+
Scenario Outline: passing background
|
|
435
|
+
Then I should have '<count>' global cukes
|
|
436
|
+
|
|
437
|
+
Examples:
|
|
438
|
+
| count |
|
|
439
|
+
| 10 |
|
|
440
|
+
|
|
441
|
+
Scenario Outline: failing background
|
|
442
|
+
Then I should have '<count>' global cukes
|
|
443
|
+
|
|
444
|
+
Examples:
|
|
445
|
+
| count |
|
|
446
|
+
| 10 |
|
|
447
|
+
FAIL (RuntimeError)
|
|
448
|
+
./features/step_definitions/cuke_steps.rb:8:in `/^'(.+)' global cukes$/'
|
|
449
|
+
features/failing_background_after_success_outline.feature:5:in `And '10' global cukes'
|
|
450
|
+
|
|
451
|
+
Failing Scenarios:
|
|
452
|
+
cucumber features/failing_background_after_success_outline.feature:19
|
|
453
|
+
|
|
454
|
+
2 scenarios (1 failed, 1 passed)
|
|
455
|
+
6 steps (1 failed, 1 skipped, 4 passed)
|
|
456
|
+
0m0.012s
|
|
457
|
+
|
|
458
|
+
"""
|
|
459
|
+
|
|
460
|
+
@spawn
|
|
461
|
+
Scenario: background passes with first outline scenario but fails with second (--expand)
|
|
462
|
+
When I run `cucumber -x -q features/failing_background_after_success_outline.feature`
|
|
463
|
+
Then it should fail with exactly:
|
|
464
|
+
"""
|
|
465
|
+
Feature: Failing background after previously successful background sample
|
|
466
|
+
|
|
467
|
+
Background:
|
|
468
|
+
Given this step passes
|
|
469
|
+
And '10' global cukes
|
|
470
|
+
|
|
471
|
+
Scenario Outline: passing background
|
|
472
|
+
Then I should have '<count>' global cukes
|
|
473
|
+
|
|
474
|
+
Examples:
|
|
475
|
+
|
|
476
|
+
Scenario: | 10 |
|
|
477
|
+
Then I should have '10' global cukes
|
|
478
|
+
|
|
479
|
+
Scenario Outline: failing background
|
|
480
|
+
Then I should have '<count>' global cukes
|
|
481
|
+
|
|
482
|
+
Examples:
|
|
483
|
+
|
|
484
|
+
Scenario: | 10 |
|
|
485
|
+
And '10' global cukes
|
|
486
|
+
FAIL (RuntimeError)
|
|
487
|
+
./features/step_definitions/cuke_steps.rb:8:in `/^'(.+)' global cukes$/'
|
|
488
|
+
features/failing_background_after_success_outline.feature:5:in `And '10' global cukes'
|
|
489
|
+
Then I should have '10' global cukes
|
|
490
|
+
|
|
491
|
+
Failing Scenarios:
|
|
492
|
+
cucumber features/failing_background_after_success_outline.feature:19
|
|
493
|
+
|
|
494
|
+
2 scenarios (1 failed, 1 passed)
|
|
495
|
+
6 steps (1 failed, 1 skipped, 4 passed)
|
|
496
|
+
0m0.012s
|
|
497
|
+
|
|
498
|
+
"""
|
|
499
|
+
|
|
400
500
|
Scenario: background with multline args
|
|
401
|
-
Given a file named "features/step_definitions/
|
|
501
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
402
502
|
"""
|
|
403
503
|
Given /^table$/ do |table| x=1
|
|
404
504
|
@table = table
|
|
@@ -409,11 +509,11 @@ Feature: Background
|
|
|
409
509
|
end
|
|
410
510
|
|
|
411
511
|
Then /^the table should be$/ do |table| x=1
|
|
412
|
-
@table.raw.
|
|
512
|
+
expect(@table.raw).to eq table.raw
|
|
413
513
|
end
|
|
414
514
|
|
|
415
515
|
Then /^the multiline string should be$/ do |string| x=1
|
|
416
|
-
@multiline.
|
|
516
|
+
expect(@multiline).to eq string
|
|
417
517
|
end
|
|
418
518
|
"""
|
|
419
519
|
When I run `cucumber -q features/multiline_args_background.feature`
|
|
@@ -457,45 +557,3 @@ Feature: Background
|
|
|
457
557
|
|
|
458
558
|
"""
|
|
459
559
|
|
|
460
|
-
Scenario: https://rspec.lighthouseapp.com/projects/16211/tickets/329
|
|
461
|
-
Given a file named "features/only_background_and_hooks.feature" with:
|
|
462
|
-
"""
|
|
463
|
-
Feature: woo yeah
|
|
464
|
-
|
|
465
|
-
Background: Whatever
|
|
466
|
-
Given whatever
|
|
467
|
-
|
|
468
|
-
"""
|
|
469
|
-
And a file named "features/only_background_and_hooks_steps.rb" with:
|
|
470
|
-
"""
|
|
471
|
-
begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
|
|
472
|
-
|
|
473
|
-
Before do
|
|
474
|
-
$before = true
|
|
475
|
-
end
|
|
476
|
-
|
|
477
|
-
After do
|
|
478
|
-
$after = true
|
|
479
|
-
end
|
|
480
|
-
|
|
481
|
-
Given(/^whatever$/) { $before.should == true; $step = true }
|
|
482
|
-
|
|
483
|
-
at_exit do
|
|
484
|
-
$before.should == true
|
|
485
|
-
$step.should == true
|
|
486
|
-
$after.should == true
|
|
487
|
-
end
|
|
488
|
-
"""
|
|
489
|
-
When I run `cucumber features/only_background_and_hooks.feature`
|
|
490
|
-
Then it should pass with exactly:
|
|
491
|
-
"""
|
|
492
|
-
Feature: woo yeah
|
|
493
|
-
|
|
494
|
-
Background: Whatever # features/only_background_and_hooks.feature:3
|
|
495
|
-
Given whatever # features/only_background_and_hooks_steps.rb:11
|
|
496
|
-
|
|
497
|
-
0 scenarios
|
|
498
|
-
1 step (1 passed)
|
|
499
|
-
0m0.012s
|
|
500
|
-
|
|
501
|
-
"""
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Feature: Scenario outlines --expand option
|
|
2
|
+
|
|
3
|
+
In order to make it easier to write certain editor plugins and also
|
|
4
|
+
for some people to understand scenarios, Cucumber will expand examples
|
|
5
|
+
in outlines if you add the `--expand` option when running them.
|
|
6
|
+
|
|
7
|
+
Scenario:
|
|
8
|
+
Given a file named "features/test.feature" with:
|
|
9
|
+
"""
|
|
10
|
+
Feature:
|
|
11
|
+
Scenario Outline:
|
|
12
|
+
Given the secret code is <code>
|
|
13
|
+
When I guess <guess>
|
|
14
|
+
Then I am <verdict>
|
|
15
|
+
|
|
16
|
+
Examples:
|
|
17
|
+
| code | guess | verdict |
|
|
18
|
+
| blue | blue | right |
|
|
19
|
+
| red | blue | wrong |
|
|
20
|
+
"""
|
|
21
|
+
When I run `cucumber -i -q --expand`
|
|
22
|
+
Then the stderr should not contain anything
|
|
23
|
+
And it should pass with:
|
|
24
|
+
"""
|
|
25
|
+
Feature:
|
|
26
|
+
|
|
27
|
+
Scenario Outline:
|
|
28
|
+
Given the secret code is <code>
|
|
29
|
+
When I guess <guess>
|
|
30
|
+
Then I am <verdict>
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
|
|
34
|
+
Scenario: | blue | blue | right |
|
|
35
|
+
Given the secret code is blue
|
|
36
|
+
When I guess blue
|
|
37
|
+
Then I am right
|
|
38
|
+
|
|
39
|
+
Scenario: | red | blue | wrong |
|
|
40
|
+
Given the secret code is red
|
|
41
|
+
When I guess blue
|
|
42
|
+
Then I am wrong
|
|
43
|
+
|
|
44
|
+
2 scenarios (2 undefined)
|
|
45
|
+
6 steps (6 undefined)
|
|
46
|
+
"""
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Feature: Choosing the language from the feature file header
|
|
2
|
+
|
|
3
|
+
In order to simplify command line and settings in IDEs, Cucumber picks
|
|
4
|
+
up the parser language from a `# language` comment at the beginning of
|
|
5
|
+
any feature file. See the examples below for the exact syntax.
|
|
6
|
+
|
|
7
|
+
Scenario: LOLCAT
|
|
8
|
+
Given a file named "features/lolcat.feature" with:
|
|
9
|
+
"""
|
|
10
|
+
# language: en-lol
|
|
11
|
+
OH HAI: STUFFING
|
|
12
|
+
B4: HUNGRY
|
|
13
|
+
I CAN HAZ EMPTY BELLY
|
|
14
|
+
MISHUN: CUKES
|
|
15
|
+
DEN KTHXBAI
|
|
16
|
+
"""
|
|
17
|
+
When I run `cucumber -i features/lolcat.feature -q`
|
|
18
|
+
Then it should pass with:
|
|
19
|
+
"""
|
|
20
|
+
# language: en-lol
|
|
21
|
+
OH HAI: STUFFING
|
|
22
|
+
|
|
23
|
+
B4: HUNGRY
|
|
24
|
+
I CAN HAZ EMPTY BELLY
|
|
25
|
+
|
|
26
|
+
MISHUN: CUKES
|
|
27
|
+
DEN KTHXBAI
|
|
28
|
+
|
|
29
|
+
1 scenario (1 undefined)
|
|
30
|
+
2 steps (2 undefined)
|
|
31
|
+
|
|
32
|
+
"""
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
@spawn
|
|
2
|
+
Feature: Scenario outlines
|
|
3
|
+
|
|
4
|
+
Copying and pasting scenarios to use different values quickly
|
|
5
|
+
becomes tedious and repetitive. Scenario outlines allow us to more
|
|
6
|
+
concisely express these examples through the use of a template with
|
|
7
|
+
placeholders, using Scenario Outline, Examples with tables and < >
|
|
8
|
+
delimited parameters.
|
|
9
|
+
|
|
10
|
+
The Scenario Outline steps provide a template which is never directly
|
|
11
|
+
run. A Scenario Outline is run once for each row in the Examples section
|
|
12
|
+
beneath it (not counting the first row).
|
|
13
|
+
|
|
14
|
+
The way this works is via placeholders. Placeholders must be contained
|
|
15
|
+
within < > in the Scenario Outline's steps - see the examples below.
|
|
16
|
+
|
|
17
|
+
**IMPORTANT:** Your step definitions will never have to match a
|
|
18
|
+
placeholder. They will need to match the values that will replace the
|
|
19
|
+
placeholder.
|
|
20
|
+
|
|
21
|
+
Background:
|
|
22
|
+
Given a file named "features/outline_sample.feature" with:
|
|
23
|
+
"""
|
|
24
|
+
Feature: Outline Sample
|
|
25
|
+
|
|
26
|
+
Scenario: I have no steps
|
|
27
|
+
|
|
28
|
+
Scenario Outline: Test state
|
|
29
|
+
Given <state> without a table
|
|
30
|
+
Given <other_state> without a table
|
|
31
|
+
Examples: Rainbow colours
|
|
32
|
+
| state | other_state |
|
|
33
|
+
| missing | passing |
|
|
34
|
+
| passing | passing |
|
|
35
|
+
| failing | passing |
|
|
36
|
+
Examples:Only passing
|
|
37
|
+
| state | other_state |
|
|
38
|
+
| passing | passing |
|
|
39
|
+
"""
|
|
40
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
41
|
+
"""
|
|
42
|
+
Given(/^passing without a table$/) { }
|
|
43
|
+
Given(/^failing without a table$/) { raise RuntimeError }
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
Scenario: Run scenario outline with filtering on outline name
|
|
47
|
+
When I run `cucumber -q features/outline_sample.feature`
|
|
48
|
+
Then it should fail with:
|
|
49
|
+
"""
|
|
50
|
+
Feature: Outline Sample
|
|
51
|
+
|
|
52
|
+
Scenario: I have no steps
|
|
53
|
+
|
|
54
|
+
Scenario Outline: Test state
|
|
55
|
+
Given <state> without a table
|
|
56
|
+
Given <other_state> without a table
|
|
57
|
+
|
|
58
|
+
Examples: Rainbow colours
|
|
59
|
+
| state | other_state |
|
|
60
|
+
| missing | passing |
|
|
61
|
+
| passing | passing |
|
|
62
|
+
| failing | passing |
|
|
63
|
+
RuntimeError (RuntimeError)
|
|
64
|
+
./features/step_definitions/steps.rb:2:in `/^failing without a table$/'
|
|
65
|
+
features/outline_sample.feature:12:in `Given failing without a table'
|
|
66
|
+
features/outline_sample.feature:6:in `Given <state> without a table'
|
|
67
|
+
|
|
68
|
+
Examples: Only passing
|
|
69
|
+
| state | other_state |
|
|
70
|
+
| passing | passing |
|
|
71
|
+
|
|
72
|
+
Failing Scenarios:
|
|
73
|
+
cucumber features/outline_sample.feature:12
|
|
74
|
+
|
|
75
|
+
5 scenarios (1 failed, 1 undefined, 3 passed)
|
|
76
|
+
8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
Scenario: Run scenario outline steps only
|
|
80
|
+
When I run `cucumber -q features/outline_sample.feature:7`
|
|
81
|
+
Then it should fail with:
|
|
82
|
+
"""
|
|
83
|
+
Feature: Outline Sample
|
|
84
|
+
|
|
85
|
+
Scenario Outline: Test state
|
|
86
|
+
Given <state> without a table
|
|
87
|
+
Given <other_state> without a table
|
|
88
|
+
|
|
89
|
+
Examples: Rainbow colours
|
|
90
|
+
| state | other_state |
|
|
91
|
+
| missing | passing |
|
|
92
|
+
| passing | passing |
|
|
93
|
+
| failing | passing |
|
|
94
|
+
RuntimeError (RuntimeError)
|
|
95
|
+
./features/step_definitions/steps.rb:2:in `/^failing without a table$/'
|
|
96
|
+
features/outline_sample.feature:12:in `Given failing without a table'
|
|
97
|
+
features/outline_sample.feature:6:in `Given <state> without a table'
|
|
98
|
+
|
|
99
|
+
Examples: Only passing
|
|
100
|
+
| state | other_state |
|
|
101
|
+
| passing | passing |
|
|
102
|
+
|
|
103
|
+
Failing Scenarios:
|
|
104
|
+
cucumber features/outline_sample.feature:12
|
|
105
|
+
|
|
106
|
+
4 scenarios (1 failed, 1 undefined, 2 passed)
|
|
107
|
+
8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
|
|
108
|
+
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
Scenario: Run single failing scenario outline table row
|
|
112
|
+
When I run `cucumber -q features/outline_sample.feature:12`
|
|
113
|
+
Then it should fail with:
|
|
114
|
+
"""
|
|
115
|
+
Feature: Outline Sample
|
|
116
|
+
|
|
117
|
+
Scenario Outline: Test state
|
|
118
|
+
Given <state> without a table
|
|
119
|
+
Given <other_state> without a table
|
|
120
|
+
|
|
121
|
+
Examples: Rainbow colours
|
|
122
|
+
| state | other_state |
|
|
123
|
+
| failing | passing |
|
|
124
|
+
RuntimeError (RuntimeError)
|
|
125
|
+
./features/step_definitions/steps.rb:2:in `/^failing without a table$/'
|
|
126
|
+
features/outline_sample.feature:12:in `Given failing without a table'
|
|
127
|
+
features/outline_sample.feature:6:in `Given <state> without a table'
|
|
128
|
+
|
|
129
|
+
Failing Scenarios:
|
|
130
|
+
cucumber features/outline_sample.feature:12
|
|
131
|
+
|
|
132
|
+
1 scenario (1 failed)
|
|
133
|
+
2 steps (1 failed, 1 skipped)
|
|
134
|
+
|
|
135
|
+
"""
|
|
136
|
+
|
|
137
|
+
Scenario: Run all with progress formatter
|
|
138
|
+
When I run `cucumber -q --format progress features/outline_sample.feature`
|
|
139
|
+
Then it should fail with exactly:
|
|
140
|
+
"""
|
|
141
|
+
--UU..FF..
|
|
142
|
+
|
|
143
|
+
(::) failed steps (::)
|
|
144
|
+
|
|
145
|
+
RuntimeError (RuntimeError)
|
|
146
|
+
./features/step_definitions/steps.rb:2:in `/^failing without a table$/'
|
|
147
|
+
features/outline_sample.feature:12:in `Given failing without a table'
|
|
148
|
+
features/outline_sample.feature:6:in `Given <state> without a table'
|
|
149
|
+
|
|
150
|
+
Failing Scenarios:
|
|
151
|
+
cucumber features/outline_sample.feature:12
|
|
152
|
+
|
|
153
|
+
5 scenarios (1 failed, 1 undefined, 3 passed)
|
|
154
|
+
8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
|
|
155
|
+
0m0.012s
|
|
156
|
+
|
|
157
|
+
"""
|
|
158
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
@spawn
|
|
2
|
+
Feature: Unicode in tables
|
|
3
|
+
|
|
4
|
+
You are free to use unicode in your tables: we've taken care to
|
|
5
|
+
ensure that the tables are properly aligned so that your output is as
|
|
6
|
+
readable as possible.
|
|
7
|
+
|
|
8
|
+
Scenario:
|
|
9
|
+
Given a file named "features/unicode.feature" with:
|
|
10
|
+
"""
|
|
11
|
+
Feature: Featuring unicode
|
|
12
|
+
|
|
13
|
+
Scenario: table with unicode
|
|
14
|
+
Given passing
|
|
15
|
+
| Brüno | abc |
|
|
16
|
+
| Bruno | æøå |
|
|
17
|
+
"""
|
|
18
|
+
When I run `cucumber -q --dry-run features/unicode.feature`
|
|
19
|
+
Then it should pass with:
|
|
20
|
+
"""
|
|
21
|
+
Feature: Featuring unicode
|
|
22
|
+
|
|
23
|
+
Scenario: table with unicode
|
|
24
|
+
Given passing
|
|
25
|
+
| Brüno | abc |
|
|
26
|
+
| Bruno | æøå |
|
|
27
|
+
|
|
28
|
+
1 scenario (1 undefined)
|
|
29
|
+
1 step (1 undefined)
|
|
30
|
+
|
|
31
|
+
"""
|
|
32
|
+
|