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,3 +1,4 @@
|
|
|
1
|
+
@spawn
|
|
1
2
|
Feature: Cucumber --work-in-progress switch
|
|
2
3
|
In order to ensure that feature scenarios do not pass until they are expected to
|
|
3
4
|
Developers should be able to run cucumber in a mode that
|
|
@@ -5,124 +6,119 @@ Feature: Cucumber --work-in-progress switch
|
|
|
5
6
|
- will not fail otherwise
|
|
6
7
|
|
|
7
8
|
Background: A passing and a pending feature
|
|
8
|
-
Given
|
|
9
|
-
|
|
9
|
+
Given the standard step definitions
|
|
10
|
+
And a file named "features/wip.feature" with:
|
|
10
11
|
"""
|
|
11
12
|
Feature: WIP
|
|
12
13
|
@failing
|
|
13
14
|
Scenario: Failing
|
|
14
|
-
Given
|
|
15
|
+
Given this step raises an error
|
|
15
16
|
|
|
16
17
|
@undefined
|
|
17
18
|
Scenario: Undefined
|
|
18
|
-
Given
|
|
19
|
+
Given this step is undefined
|
|
19
20
|
|
|
20
21
|
@pending
|
|
21
22
|
Scenario: Pending
|
|
22
|
-
Given
|
|
23
|
+
Given this step is pending
|
|
23
24
|
|
|
24
25
|
@passing
|
|
25
26
|
Scenario: Passing
|
|
26
|
-
Given
|
|
27
|
+
Given this step passes
|
|
27
28
|
"""
|
|
28
29
|
And a file named "features/passing_outline.feature" with:
|
|
29
30
|
"""
|
|
30
31
|
Feature: Not WIP
|
|
31
32
|
Scenario Outline: Passing
|
|
32
|
-
Given
|
|
33
|
-
|
|
34
|
-
Examples:
|
|
35
|
-
| what |
|
|
36
|
-
| passing |
|
|
37
|
-
"""
|
|
38
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
39
|
-
"""
|
|
40
|
-
Given /^a failing step$/ do
|
|
41
|
-
raise "I fail"
|
|
42
|
-
end
|
|
33
|
+
Given this step <what>
|
|
43
34
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
Given /^a pending step$/ do
|
|
48
|
-
pending
|
|
49
|
-
end
|
|
35
|
+
Examples:
|
|
36
|
+
| what |
|
|
37
|
+
| passes |
|
|
50
38
|
"""
|
|
51
39
|
|
|
52
40
|
Scenario: Pass with Failing Scenarios
|
|
53
|
-
When I run cucumber -q -w -t @failing features/wip.feature
|
|
54
|
-
Then
|
|
55
|
-
Then it should pass with
|
|
41
|
+
When I run `cucumber -q -w -t @failing features/wip.feature`
|
|
42
|
+
Then the stderr should not contain anything
|
|
43
|
+
Then it should pass with:
|
|
56
44
|
"""
|
|
57
45
|
Feature: WIP
|
|
58
46
|
|
|
59
47
|
@failing
|
|
60
48
|
Scenario: Failing
|
|
61
|
-
Given
|
|
62
|
-
|
|
63
|
-
./features/step_definitions/steps.rb:2:in `/^
|
|
64
|
-
features/wip.feature:4:in `Given
|
|
65
|
-
|
|
49
|
+
Given this step raises an error
|
|
50
|
+
error (RuntimeError)
|
|
51
|
+
./features/step_definitions/steps.rb:2:in `/^this step raises an error$/'
|
|
52
|
+
features/wip.feature:4:in `Given this step raises an error'
|
|
53
|
+
|
|
66
54
|
Failing Scenarios:
|
|
67
55
|
cucumber features/wip.feature:3
|
|
68
56
|
|
|
69
57
|
1 scenario (1 failed)
|
|
70
58
|
1 step (1 failed)
|
|
71
|
-
|
|
59
|
+
"""
|
|
60
|
+
And the output should contain:
|
|
61
|
+
"""
|
|
72
62
|
The --wip switch was used, so the failures were expected. All is good.
|
|
73
63
|
|
|
74
64
|
"""
|
|
75
65
|
|
|
76
66
|
Scenario: Pass with Undefined Scenarios
|
|
77
|
-
When I run cucumber -q -w -t @undefined features/wip.feature
|
|
78
|
-
Then it should pass with
|
|
67
|
+
When I run `cucumber -q -w -t @undefined features/wip.feature`
|
|
68
|
+
Then it should pass with:
|
|
79
69
|
"""
|
|
80
70
|
Feature: WIP
|
|
81
71
|
|
|
82
72
|
@undefined
|
|
83
73
|
Scenario: Undefined
|
|
84
|
-
Given
|
|
74
|
+
Given this step is undefined
|
|
85
75
|
|
|
86
76
|
1 scenario (1 undefined)
|
|
87
77
|
1 step (1 undefined)
|
|
88
|
-
|
|
78
|
+
"""
|
|
79
|
+
And the output should contain:
|
|
80
|
+
"""
|
|
89
81
|
The --wip switch was used, so the failures were expected. All is good.
|
|
90
82
|
|
|
91
83
|
"""
|
|
92
84
|
|
|
93
85
|
Scenario: Pass with Undefined Scenarios
|
|
94
|
-
When I run cucumber -q -w -t @pending features/wip.feature
|
|
95
|
-
Then it should pass with
|
|
86
|
+
When I run `cucumber -q -w -t @pending features/wip.feature`
|
|
87
|
+
Then it should pass with:
|
|
96
88
|
"""
|
|
97
89
|
Feature: WIP
|
|
98
90
|
|
|
99
91
|
@pending
|
|
100
92
|
Scenario: Pending
|
|
101
|
-
Given
|
|
93
|
+
Given this step is pending
|
|
102
94
|
TODO (Cucumber::Pending)
|
|
103
|
-
./features/step_definitions/steps.rb:
|
|
104
|
-
features/wip.feature:12:in `Given
|
|
95
|
+
./features/step_definitions/steps.rb:3:in `/^this step is pending$/'
|
|
96
|
+
features/wip.feature:12:in `Given this step is pending'
|
|
105
97
|
|
|
106
98
|
1 scenario (1 pending)
|
|
107
99
|
1 step (1 pending)
|
|
108
|
-
|
|
100
|
+
"""
|
|
101
|
+
And the output should contain:
|
|
102
|
+
"""
|
|
109
103
|
The --wip switch was used, so the failures were expected. All is good.
|
|
110
104
|
|
|
111
105
|
"""
|
|
112
106
|
|
|
113
107
|
Scenario: Fail with Passing Scenarios
|
|
114
|
-
When I run cucumber -q -w -t @passing features/wip.feature
|
|
115
|
-
Then it should fail with
|
|
108
|
+
When I run `cucumber -q -w -t @passing features/wip.feature`
|
|
109
|
+
Then it should fail with:
|
|
116
110
|
"""
|
|
117
111
|
Feature: WIP
|
|
118
112
|
|
|
119
113
|
@passing
|
|
120
114
|
Scenario: Passing
|
|
121
|
-
Given
|
|
115
|
+
Given this step passes
|
|
122
116
|
|
|
123
117
|
1 scenario (1 passed)
|
|
124
118
|
1 step (1 passed)
|
|
125
|
-
|
|
119
|
+
"""
|
|
120
|
+
And the output should contain:
|
|
121
|
+
"""
|
|
126
122
|
The --wip switch was used, so I didn't expect anything to pass. These scenarios passed:
|
|
127
123
|
(::) passed scenarios (::)
|
|
128
124
|
|
|
@@ -132,25 +128,27 @@ Feature: Cucumber --work-in-progress switch
|
|
|
132
128
|
"""
|
|
133
129
|
|
|
134
130
|
Scenario: Fail with Passing Scenario Outline
|
|
135
|
-
When I run cucumber -q -w features/passing_outline.feature
|
|
136
|
-
Then it should fail with
|
|
131
|
+
When I run `cucumber -q -w features/passing_outline.feature`
|
|
132
|
+
Then it should fail with:
|
|
137
133
|
"""
|
|
138
134
|
Feature: Not WIP
|
|
139
135
|
|
|
140
136
|
Scenario Outline: Passing
|
|
141
|
-
Given
|
|
142
|
-
|
|
137
|
+
Given this step <what>
|
|
138
|
+
|
|
143
139
|
Examples:
|
|
144
|
-
| what
|
|
145
|
-
|
|
|
140
|
+
| what |
|
|
141
|
+
| passes |
|
|
146
142
|
|
|
147
143
|
1 scenario (1 passed)
|
|
148
144
|
1 step (1 passed)
|
|
149
|
-
|
|
145
|
+
"""
|
|
146
|
+
And the output should contain:
|
|
147
|
+
"""
|
|
150
148
|
The --wip switch was used, so I didn't expect anything to pass. These scenarios passed:
|
|
151
149
|
(::) passed scenarios (::)
|
|
152
150
|
|
|
153
|
-
features/passing_outline.feature:7:in
|
|
151
|
+
features/passing_outline.feature:7:in `Scenario Outline: Passing, Examples (#1)'
|
|
154
152
|
|
|
155
153
|
|
|
156
154
|
"""
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
Feature: After Hooks
|
|
2
|
+
|
|
3
|
+
After hooks can be used to clean up any state you've altered during your
|
|
4
|
+
scenario, or to check the status of the scenario and act accordingly.
|
|
5
|
+
|
|
6
|
+
You can ask a scenario whether it has failed, for example.
|
|
7
|
+
|
|
8
|
+
Mind you, even if it hasn't failed yet, you can still make the scenario
|
|
9
|
+
fail if your After hook throws an error.
|
|
10
|
+
|
|
11
|
+
Background:
|
|
12
|
+
Given the standard step definitions
|
|
13
|
+
|
|
14
|
+
Scenario: Check the failed status of a scenario in a hook
|
|
15
|
+
Given a file named "features/support/debug_hook.rb" with:
|
|
16
|
+
"""
|
|
17
|
+
After do |scenario|
|
|
18
|
+
if scenario.failed?
|
|
19
|
+
puts "eek"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
"""
|
|
23
|
+
And a file named "features/fail.feature" with:
|
|
24
|
+
"""
|
|
25
|
+
Feature:
|
|
26
|
+
Scenario:
|
|
27
|
+
Given this step fails
|
|
28
|
+
"""
|
|
29
|
+
When I run `cucumber -f progress`
|
|
30
|
+
Then the output should contain:
|
|
31
|
+
"""
|
|
32
|
+
eek
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
Scenario: Make a scenario fail from an After hook
|
|
36
|
+
Given a file named "features/support/bad_hook.rb" with:
|
|
37
|
+
"""
|
|
38
|
+
After do
|
|
39
|
+
fail 'yikes'
|
|
40
|
+
end
|
|
41
|
+
"""
|
|
42
|
+
And a file named "features/pass.feature" with:
|
|
43
|
+
"""
|
|
44
|
+
Feature:
|
|
45
|
+
Scenario:
|
|
46
|
+
Given this step passes
|
|
47
|
+
"""
|
|
48
|
+
When I run `cucumber -f pretty`
|
|
49
|
+
Then it should fail with:
|
|
50
|
+
"""
|
|
51
|
+
Scenario: # features/pass.feature:2
|
|
52
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
53
|
+
yikes (RuntimeError)
|
|
54
|
+
./features/support/bad_hook.rb:2:in `After'
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
Scenario: After hooks are executed in reverse order of definition
|
|
58
|
+
Given a file named "features/support/hooks.rb" with:
|
|
59
|
+
"""
|
|
60
|
+
After do
|
|
61
|
+
puts "First"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
After do
|
|
65
|
+
puts "Second"
|
|
66
|
+
end
|
|
67
|
+
"""
|
|
68
|
+
And a file named "features/pass.feature" with:
|
|
69
|
+
"""
|
|
70
|
+
Feature:
|
|
71
|
+
Scenario:
|
|
72
|
+
Given this step passes
|
|
73
|
+
"""
|
|
74
|
+
When I run `cucumber -f progress`
|
|
75
|
+
Then the output should contain:
|
|
76
|
+
"""
|
|
77
|
+
Second
|
|
78
|
+
|
|
79
|
+
First
|
|
80
|
+
"""
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
@spawn
|
|
1
2
|
Feature: Around hooks
|
|
3
|
+
|
|
2
4
|
In order to support transactional scenarios for database libraries
|
|
3
5
|
that provide only a block syntax for transactions, Cucumber should
|
|
4
6
|
permit definition of Around hooks.
|
|
5
7
|
|
|
6
8
|
Scenario: A single Around hook
|
|
7
|
-
Given a
|
|
8
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
9
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
9
10
|
"""
|
|
10
11
|
Then /^the hook is called$/ do
|
|
11
|
-
$hook_called.
|
|
12
|
+
expect($hook_called).to be true
|
|
12
13
|
end
|
|
13
14
|
"""
|
|
14
15
|
And a file named "features/support/hooks.rb" with:
|
|
@@ -24,8 +25,8 @@ Feature: Around hooks
|
|
|
24
25
|
Scenario: using hook
|
|
25
26
|
Then the hook is called
|
|
26
27
|
"""
|
|
27
|
-
When I run cucumber features/f.feature
|
|
28
|
-
Then it should pass with
|
|
28
|
+
When I run `cucumber features/f.feature`
|
|
29
|
+
Then it should pass with:
|
|
29
30
|
"""
|
|
30
31
|
Feature: Around hooks
|
|
31
32
|
|
|
@@ -38,11 +39,10 @@ Feature: Around hooks
|
|
|
38
39
|
"""
|
|
39
40
|
|
|
40
41
|
Scenario: Multiple Around hooks
|
|
41
|
-
Given a
|
|
42
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
42
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
43
43
|
"""
|
|
44
44
|
Then /^the hooks are called in the correct order$/ do
|
|
45
|
-
$hooks_called.
|
|
45
|
+
expect($hooks_called).to eq ['A', 'B', 'C']
|
|
46
46
|
end
|
|
47
47
|
"""
|
|
48
48
|
And a file named "features/support/hooks.rb" with:
|
|
@@ -71,8 +71,8 @@ Feature: Around hooks
|
|
|
71
71
|
Scenario: using multiple hooks
|
|
72
72
|
Then the hooks are called in the correct order
|
|
73
73
|
"""
|
|
74
|
-
When I run cucumber features/f.feature
|
|
75
|
-
Then it should pass with
|
|
74
|
+
When I run `cucumber features/f.feature`
|
|
75
|
+
Then it should pass with:
|
|
76
76
|
"""
|
|
77
77
|
Feature: Around hooks
|
|
78
78
|
|
|
@@ -85,11 +85,10 @@ Feature: Around hooks
|
|
|
85
85
|
"""
|
|
86
86
|
|
|
87
87
|
Scenario: Mixing Around, Before, and After hooks
|
|
88
|
-
Given a
|
|
89
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
88
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
90
89
|
"""
|
|
91
90
|
Then /^the Around hook is called around Before and After hooks$/ do
|
|
92
|
-
$hooks_called.
|
|
91
|
+
expect($hooks_called).to eq ['Around', 'Before']
|
|
93
92
|
end
|
|
94
93
|
"""
|
|
95
94
|
And a file named "features/support/hooks.rb" with:
|
|
@@ -99,7 +98,7 @@ Feature: Around hooks
|
|
|
99
98
|
$hooks_called << 'Around'
|
|
100
99
|
block.call
|
|
101
100
|
$hooks_called << 'Around'
|
|
102
|
-
$hooks_called.should == ['Around', 'Before', 'After', 'Around']
|
|
101
|
+
$hooks_called.should == ['Around', 'Before', 'After', 'Around'] #TODO: Find out why this fails using the new rspec expect syntax.
|
|
103
102
|
end
|
|
104
103
|
|
|
105
104
|
Before do |scenario|
|
|
@@ -110,7 +109,7 @@ Feature: Around hooks
|
|
|
110
109
|
After do |scenario|
|
|
111
110
|
$hooks_called ||= []
|
|
112
111
|
$hooks_called << 'After'
|
|
113
|
-
$hooks_called.
|
|
112
|
+
expect($hooks_called).to eq ['Around', 'Before', 'After']
|
|
114
113
|
end
|
|
115
114
|
"""
|
|
116
115
|
And a file named "features/f.feature" with:
|
|
@@ -119,8 +118,8 @@ Feature: Around hooks
|
|
|
119
118
|
Scenario: Mixing Around, Before, and After hooks
|
|
120
119
|
Then the Around hook is called around Before and After hooks
|
|
121
120
|
"""
|
|
122
|
-
When I run cucumber features/f.feature
|
|
123
|
-
Then it should pass with
|
|
121
|
+
When I run `cucumber features/f.feature`
|
|
122
|
+
Then it should pass with:
|
|
124
123
|
"""
|
|
125
124
|
Feature: Around hooks
|
|
126
125
|
|
|
@@ -133,11 +132,10 @@ Feature: Around hooks
|
|
|
133
132
|
"""
|
|
134
133
|
|
|
135
134
|
Scenario: Around hooks with tags
|
|
136
|
-
Given a
|
|
137
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
135
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
138
136
|
"""
|
|
139
137
|
Then /^the Around hooks with matching tags are called$/ do
|
|
140
|
-
$hooks_called.
|
|
138
|
+
expect($hooks_called).to eq ['one', 'one or two']
|
|
141
139
|
end
|
|
142
140
|
"""
|
|
143
141
|
And a file named "features/support/hooks.rb" with:
|
|
@@ -173,8 +171,8 @@ Feature: Around hooks
|
|
|
173
171
|
Scenario: Around hooks with tags
|
|
174
172
|
Then the Around hooks with matching tags are called
|
|
175
173
|
"""
|
|
176
|
-
When I run cucumber -q -t @one features/f.feature
|
|
177
|
-
Then it should pass with
|
|
174
|
+
When I run `cucumber -q -t @one features/f.feature`
|
|
175
|
+
Then it should pass with:
|
|
178
176
|
"""
|
|
179
177
|
Feature: Around hooks
|
|
180
178
|
|
|
@@ -188,11 +186,10 @@ Feature: Around hooks
|
|
|
188
186
|
"""
|
|
189
187
|
|
|
190
188
|
Scenario: Around hooks with scenario outlines
|
|
191
|
-
Given a
|
|
192
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
189
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
193
190
|
"""
|
|
194
191
|
Then /^the hook is called$/ do
|
|
195
|
-
$hook_called.
|
|
192
|
+
expect($hook_called).to be true
|
|
196
193
|
end
|
|
197
194
|
"""
|
|
198
195
|
And a file named "features/support/hooks.rb" with:
|
|
@@ -213,13 +210,13 @@ Feature: Around hooks
|
|
|
213
210
|
| one |
|
|
214
211
|
| two |
|
|
215
212
|
"""
|
|
216
|
-
When I run cucumber features/f.feature
|
|
217
|
-
Then it should pass with
|
|
213
|
+
When I run `cucumber features/f.feature`
|
|
214
|
+
Then it should pass with:
|
|
218
215
|
"""
|
|
219
216
|
Feature: Around hooks with scenario outlines
|
|
220
217
|
|
|
221
218
|
Scenario Outline: using hook # features/f.feature:2
|
|
222
|
-
Then the hook is called # features/
|
|
219
|
+
Then the hook is called # features/f.feature:3
|
|
223
220
|
|
|
224
221
|
Examples:
|
|
225
222
|
| Number |
|
|
@@ -230,3 +227,34 @@ Feature: Around hooks
|
|
|
230
227
|
2 steps (2 passed)
|
|
231
228
|
|
|
232
229
|
"""
|
|
230
|
+
|
|
231
|
+
Scenario: Around Hooks and the Custom World
|
|
232
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
233
|
+
"""
|
|
234
|
+
Then /^the world should be available in the hook$/ do
|
|
235
|
+
$previous_world = self
|
|
236
|
+
expect($hook_world).to eq(self)
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
Then /^what$/ do
|
|
240
|
+
expect($hook_world).not_to eq($previous_world)
|
|
241
|
+
end
|
|
242
|
+
"""
|
|
243
|
+
And a file named "features/support/hooks.rb" with:
|
|
244
|
+
"""
|
|
245
|
+
Around do |scenario, block|
|
|
246
|
+
$hook_world = self
|
|
247
|
+
block.call
|
|
248
|
+
end
|
|
249
|
+
"""
|
|
250
|
+
And a file named "features/f.feature" with:
|
|
251
|
+
"""
|
|
252
|
+
Feature: Around hooks
|
|
253
|
+
Scenario: using hook
|
|
254
|
+
Then the world should be available in the hook
|
|
255
|
+
|
|
256
|
+
Scenario: using the same hook
|
|
257
|
+
Then what
|
|
258
|
+
"""
|
|
259
|
+
When I run `cucumber features/f.feature`
|
|
260
|
+
Then it should pass
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Feature: Before Hook
|
|
2
|
+
|
|
3
|
+
Scenario: Examine names of scenario and feature
|
|
4
|
+
Given a file named "features/foo.feature" with:
|
|
5
|
+
"""
|
|
6
|
+
Feature: Feature name
|
|
7
|
+
|
|
8
|
+
Scenario: Scenario name
|
|
9
|
+
Given a step
|
|
10
|
+
"""
|
|
11
|
+
And a file named "features/support/hook.rb" with:
|
|
12
|
+
"""
|
|
13
|
+
names = []
|
|
14
|
+
Before do |scenario|
|
|
15
|
+
expect(scenario).to_not respond_to(:scenario_outline)
|
|
16
|
+
names << scenario.feature.name.split("\n").first
|
|
17
|
+
names << scenario.name.split("\n").first
|
|
18
|
+
if(names.size == 2)
|
|
19
|
+
raise "NAMES:\n" + names.join("\n") + "\n"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
"""
|
|
23
|
+
When I run `cucumber`
|
|
24
|
+
Then the output should contain:
|
|
25
|
+
"""
|
|
26
|
+
NAMES:
|
|
27
|
+
Feature name
|
|
28
|
+
Scenario name
|
|
29
|
+
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
Scenario: Examine names of scenario outline and feature
|
|
33
|
+
Given a file named "features/foo.feature" with:
|
|
34
|
+
"""
|
|
35
|
+
Feature: Feature name
|
|
36
|
+
|
|
37
|
+
Scenario Outline: Scenario Outline name
|
|
38
|
+
Given a <placeholder>
|
|
39
|
+
|
|
40
|
+
Examples: Examples Table name
|
|
41
|
+
| <placeholder> |
|
|
42
|
+
| step |
|
|
43
|
+
"""
|
|
44
|
+
And a file named "features/support/hook.rb" with:
|
|
45
|
+
"""
|
|
46
|
+
names = []
|
|
47
|
+
Before do |scenario|
|
|
48
|
+
names << scenario.scenario_outline.feature.name.split("\n").first
|
|
49
|
+
names << scenario.scenario_outline.name.split("\n").first
|
|
50
|
+
names << scenario.name.split("\n").first
|
|
51
|
+
if(names.size == 3)
|
|
52
|
+
raise "NAMES:\n" + names.join("\n") + "\n"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
"""
|
|
56
|
+
When I run `cucumber`
|
|
57
|
+
Then the output should contain:
|
|
58
|
+
"""
|
|
59
|
+
NAMES:
|
|
60
|
+
Feature name
|
|
61
|
+
Scenario Outline name, Examples Table name (#1)
|
|
62
|
+
Scenario Outline name, Examples Table name (#1)
|
|
63
|
+
|
|
64
|
+
"""
|
|
65
|
+
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
@spawn
|
|
2
|
+
Feature: Hooks execute in defined order
|
|
3
|
+
|
|
4
|
+
Background:
|
|
5
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
6
|
+
"""
|
|
7
|
+
Given /^background step$/ do; $EventOrder.push(:background_step) end
|
|
8
|
+
Given /^scenario step$/ do; $EventOrder.push(:scenario_step) end
|
|
9
|
+
"""
|
|
10
|
+
And a file named "features/support/hooks.rb" with:
|
|
11
|
+
"""
|
|
12
|
+
$EventOrder = []
|
|
13
|
+
Around('@around') do |scenario,block|
|
|
14
|
+
$EventOrder.push :around_begin
|
|
15
|
+
block.call
|
|
16
|
+
$EventOrder.push :around_end
|
|
17
|
+
end
|
|
18
|
+
Before('@before') do
|
|
19
|
+
$EventOrder.push :before
|
|
20
|
+
end
|
|
21
|
+
After('@after') do |scenario|
|
|
22
|
+
$EventOrder.push :after
|
|
23
|
+
end
|
|
24
|
+
at_exit {
|
|
25
|
+
puts "Event order: #{$EventOrder.join(' ')}"
|
|
26
|
+
}
|
|
27
|
+
"""
|
|
28
|
+
And a file named "features/around_hook_covers_background.feature" with:
|
|
29
|
+
"""
|
|
30
|
+
@around
|
|
31
|
+
Feature: Around hooks cover background steps
|
|
32
|
+
Background:
|
|
33
|
+
Given background step
|
|
34
|
+
Scenario:
|
|
35
|
+
Given scenario step
|
|
36
|
+
"""
|
|
37
|
+
And a file named "features/all_hook_order.feature" with:
|
|
38
|
+
"""
|
|
39
|
+
@around
|
|
40
|
+
@before
|
|
41
|
+
@after
|
|
42
|
+
Feature: All hooks execute in expected order
|
|
43
|
+
Background:
|
|
44
|
+
Given background step
|
|
45
|
+
Scenario:
|
|
46
|
+
Given scenario step
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
Scenario: Around hooks cover background steps
|
|
50
|
+
When I run `cucumber -o /dev/null features/around_hook_covers_background.feature`
|
|
51
|
+
Then the output should contain:
|
|
52
|
+
"""
|
|
53
|
+
Event order: around_begin background_step scenario_step around_end
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
Scenario: All hooks execute in expected order
|
|
57
|
+
When I run `cucumber -o /dev/null features/all_hook_order.feature`
|
|
58
|
+
Then the output should contain:
|
|
59
|
+
"""
|
|
60
|
+
Event order: around_begin before background_step scenario_step after around_end
|
|
61
|
+
"""
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
Feature: Set up a default load path
|
|
2
2
|
|
|
3
|
+
When you're developing a gem, it's convenient if your project's `lib` directory
|
|
4
|
+
is already in the load path. Cucumber does this for you.
|
|
5
|
+
|
|
3
6
|
Scenario: ./lib is included in the $LOAD_PATH
|
|
4
7
|
Given a file named "features/support/env.rb" with:
|
|
5
8
|
"""
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Feature: State
|
|
2
|
+
|
|
3
|
+
You can pass state between step by setting instance variables,
|
|
4
|
+
but those instance variables will be gone when the next scenario runs.
|
|
5
|
+
|
|
6
|
+
Scenario: Set an ivar in one scenario, use it in the next step
|
|
7
|
+
Given a file named "features/test.feature" with:
|
|
8
|
+
"""
|
|
9
|
+
Feature:
|
|
10
|
+
Scenario:
|
|
11
|
+
Given I have set @flag = true
|
|
12
|
+
Then @flag should be true
|
|
13
|
+
|
|
14
|
+
Scenario:
|
|
15
|
+
Then @flag should be nil
|
|
16
|
+
"""
|
|
17
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
18
|
+
"""
|
|
19
|
+
Given /set @flag/ do
|
|
20
|
+
@flag = true
|
|
21
|
+
end
|
|
22
|
+
Then /flag should be true/ do
|
|
23
|
+
expect(@flag).to be_truthy
|
|
24
|
+
end
|
|
25
|
+
Then /flag should be nil/ do
|
|
26
|
+
expect(@flag).to be_nil
|
|
27
|
+
end
|
|
28
|
+
"""
|
|
29
|
+
When I run `cucumber`
|
|
30
|
+
Then it should pass
|
|
31
|
+
|
|
32
|
+
|