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
|
@@ -4,14 +4,12 @@ Feature: Exception in After Block
|
|
|
4
4
|
I want exceptions raised in After blocks to be handled gracefully and reported by the formatters
|
|
5
5
|
|
|
6
6
|
Background:
|
|
7
|
-
Given
|
|
8
|
-
And a file named "features/step_definitions/
|
|
7
|
+
Given the standard step definitions
|
|
8
|
+
And a file named "features/step_definitions/naughty_steps.rb" with:
|
|
9
9
|
"""
|
|
10
10
|
Given /^this step does something naughty$/ do x=1
|
|
11
11
|
@naughty = true
|
|
12
12
|
end
|
|
13
|
-
|
|
14
|
-
Given(/^this step works$/) do; end
|
|
15
13
|
"""
|
|
16
14
|
And a file named "features/support/env.rb" with:
|
|
17
15
|
"""
|
|
@@ -23,6 +21,7 @@ Feature: Exception in After Block
|
|
|
23
21
|
end
|
|
24
22
|
"""
|
|
25
23
|
|
|
24
|
+
@spawn
|
|
26
25
|
Scenario: Handle Exception in standard scenario step and carry on
|
|
27
26
|
Given a file named "features/naughty_step_in_scenario.feature" with:
|
|
28
27
|
"""
|
|
@@ -32,20 +31,20 @@ Feature: Exception in After Block
|
|
|
32
31
|
Given this step does something naughty
|
|
33
32
|
|
|
34
33
|
Scenario: Success
|
|
35
|
-
Given this step
|
|
34
|
+
Given this step passes
|
|
36
35
|
"""
|
|
37
|
-
When I run cucumber features
|
|
38
|
-
Then it should fail with
|
|
36
|
+
When I run `cucumber features`
|
|
37
|
+
Then it should fail with:
|
|
39
38
|
"""
|
|
40
39
|
Feature: Sample
|
|
41
40
|
|
|
42
41
|
Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
|
|
43
|
-
Given this step does something naughty # features/step_definitions/
|
|
42
|
+
Given this step does something naughty # features/step_definitions/naughty_steps.rb:1
|
|
44
43
|
This scenario has been very very naughty (NaughtyScenarioException)
|
|
45
44
|
./features/support/env.rb:4:in `After'
|
|
46
45
|
|
|
47
|
-
Scenario: Success
|
|
48
|
-
Given this step
|
|
46
|
+
Scenario: Success # features/naughty_step_in_scenario.feature:6
|
|
47
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
49
48
|
|
|
50
49
|
Failing Scenarios:
|
|
51
50
|
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
|
|
@@ -55,6 +54,7 @@ Feature: Exception in After Block
|
|
|
55
54
|
|
|
56
55
|
"""
|
|
57
56
|
|
|
57
|
+
@spawn
|
|
58
58
|
Scenario: Handle Exception in scenario outline table row and carry on
|
|
59
59
|
Given a file named "features/naughty_step_in_scenario_outline.feature" with:
|
|
60
60
|
"""
|
|
@@ -65,35 +65,35 @@ Feature: Exception in After Block
|
|
|
65
65
|
|
|
66
66
|
Examples:
|
|
67
67
|
| Might Work |
|
|
68
|
-
|
|
|
68
|
+
| passes |
|
|
69
69
|
| does something naughty |
|
|
70
|
-
|
|
|
70
|
+
| passes |
|
|
71
71
|
|
|
72
72
|
Scenario: Success
|
|
73
|
-
Given this step
|
|
73
|
+
Given this step passes
|
|
74
74
|
|
|
75
75
|
"""
|
|
76
|
-
When I run cucumber features
|
|
77
|
-
Then it should fail with
|
|
76
|
+
When I run `cucumber features -q`
|
|
77
|
+
Then it should fail with:
|
|
78
78
|
"""
|
|
79
79
|
Feature: Sample
|
|
80
80
|
|
|
81
|
-
Scenario Outline: Naughty Step
|
|
82
|
-
Given this step <Might Work>
|
|
81
|
+
Scenario Outline: Naughty Step
|
|
82
|
+
Given this step <Might Work>
|
|
83
83
|
|
|
84
84
|
Examples:
|
|
85
85
|
| Might Work |
|
|
86
|
-
|
|
|
86
|
+
| passes |
|
|
87
87
|
| does something naughty |
|
|
88
88
|
This scenario has been very very naughty (NaughtyScenarioException)
|
|
89
89
|
./features/support/env.rb:4:in `After'
|
|
90
|
-
|
|
|
90
|
+
| passes |
|
|
91
91
|
|
|
92
|
-
Scenario: Success
|
|
93
|
-
Given this step
|
|
92
|
+
Scenario: Success
|
|
93
|
+
Given this step passes
|
|
94
94
|
|
|
95
95
|
Failing Scenarios:
|
|
96
|
-
cucumber features/naughty_step_in_scenario_outline.feature:
|
|
96
|
+
cucumber features/naughty_step_in_scenario_outline.feature:9
|
|
97
97
|
|
|
98
98
|
4 scenarios (1 failed, 3 passed)
|
|
99
99
|
4 steps (4 passed)
|
|
@@ -109,10 +109,10 @@ Feature: Exception in After Block
|
|
|
109
109
|
Given this step does something naughty
|
|
110
110
|
|
|
111
111
|
Scenario: Success
|
|
112
|
-
Given this step
|
|
112
|
+
Given this step passes
|
|
113
113
|
"""
|
|
114
|
-
When I run cucumber features --format progress
|
|
115
|
-
Then it should fail with
|
|
114
|
+
When I run `cucumber features --format progress`
|
|
115
|
+
Then it should fail with:
|
|
116
116
|
"""
|
|
117
117
|
.F.
|
|
118
118
|
|
|
@@ -124,4 +124,3 @@ Feature: Exception in After Block
|
|
|
124
124
|
|
|
125
125
|
"""
|
|
126
126
|
|
|
127
|
-
|
|
@@ -4,14 +4,12 @@ Feature: Exception in AfterStep Block
|
|
|
4
4
|
I want exceptions raised in AfterStep blocks to be handled gracefully and reported by the formatters
|
|
5
5
|
|
|
6
6
|
Background:
|
|
7
|
-
Given
|
|
8
|
-
And a file named "features/step_definitions/
|
|
7
|
+
Given the standard step definitions
|
|
8
|
+
And a file named "features/step_definitions/naughty_steps.rb" with:
|
|
9
9
|
"""
|
|
10
10
|
Given /^this step does something naughty$/ do x=1
|
|
11
11
|
@naughty = true
|
|
12
12
|
end
|
|
13
|
-
|
|
14
|
-
Given(/^this step works$/) do; end
|
|
15
13
|
"""
|
|
16
14
|
And a file named "features/support/env.rb" with:
|
|
17
15
|
"""
|
|
@@ -32,27 +30,27 @@ Feature: Exception in AfterStep Block
|
|
|
32
30
|
Given this step does something naughty
|
|
33
31
|
|
|
34
32
|
Scenario: Success
|
|
35
|
-
Given this step
|
|
33
|
+
Given this step passes
|
|
36
34
|
"""
|
|
37
|
-
When I run cucumber features
|
|
38
|
-
Then it should fail with
|
|
35
|
+
When I run `cucumber features`
|
|
36
|
+
Then it should fail with:
|
|
39
37
|
"""
|
|
40
38
|
Feature: Sample
|
|
41
39
|
|
|
42
40
|
Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
|
|
43
|
-
Given this step does something naughty # features/step_definitions/
|
|
41
|
+
Given this step does something naughty # features/step_definitions/naughty_steps.rb:1
|
|
44
42
|
This step has been very very naughty (NaughtyStepException)
|
|
45
43
|
./features/support/env.rb:4:in `AfterStep'
|
|
46
44
|
features/naughty_step_in_scenario.feature:4:in `Given this step does something naughty'
|
|
47
45
|
|
|
48
|
-
Scenario: Success
|
|
49
|
-
Given this step
|
|
46
|
+
Scenario: Success # features/naughty_step_in_scenario.feature:6
|
|
47
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
50
48
|
|
|
51
49
|
Failing Scenarios:
|
|
52
50
|
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
|
|
53
51
|
|
|
54
52
|
2 scenarios (1 failed, 1 passed)
|
|
55
|
-
2 steps (
|
|
53
|
+
2 steps (2 passed)
|
|
56
54
|
|
|
57
55
|
"""
|
|
58
56
|
|
|
@@ -66,39 +64,39 @@ Feature: Exception in AfterStep Block
|
|
|
66
64
|
|
|
67
65
|
Examples:
|
|
68
66
|
| Might Work |
|
|
69
|
-
|
|
|
67
|
+
| passes |
|
|
70
68
|
| does something naughty |
|
|
71
|
-
|
|
|
69
|
+
| passes |
|
|
72
70
|
|
|
73
71
|
Scenario: Success
|
|
74
|
-
Given this step
|
|
72
|
+
Given this step passes
|
|
75
73
|
|
|
76
74
|
"""
|
|
77
|
-
When I run cucumber features
|
|
78
|
-
Then it should fail with
|
|
75
|
+
When I run `cucumber features`
|
|
76
|
+
Then it should fail with:
|
|
79
77
|
"""
|
|
80
78
|
Feature: Sample
|
|
81
79
|
|
|
82
80
|
Scenario Outline: Naughty Step # features/naughty_step_in_scenario_outline.feature:3
|
|
83
|
-
Given this step <Might Work> # features/
|
|
81
|
+
Given this step <Might Work> # features/naughty_step_in_scenario_outline.feature:4
|
|
84
82
|
|
|
85
83
|
Examples:
|
|
86
84
|
| Might Work |
|
|
87
|
-
|
|
|
85
|
+
| passes |
|
|
88
86
|
| does something naughty |
|
|
89
87
|
This step has been very very naughty (NaughtyStepException)
|
|
90
88
|
./features/support/env.rb:4:in `AfterStep'
|
|
89
|
+
features/naughty_step_in_scenario_outline.feature:9:in `Given this step does something naughty'
|
|
91
90
|
features/naughty_step_in_scenario_outline.feature:4:in `Given this step <Might Work>'
|
|
92
|
-
|
|
|
91
|
+
| passes |
|
|
93
92
|
|
|
94
|
-
Scenario: Success
|
|
95
|
-
Given this step
|
|
93
|
+
Scenario: Success # features/naughty_step_in_scenario_outline.feature:12
|
|
94
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
96
95
|
|
|
97
96
|
Failing Scenarios:
|
|
98
|
-
cucumber features/naughty_step_in_scenario_outline.feature:
|
|
97
|
+
cucumber features/naughty_step_in_scenario_outline.feature:9 # Scenario Outline: Naughty Step, Examples (#2)
|
|
99
98
|
|
|
100
99
|
4 scenarios (1 failed, 3 passed)
|
|
101
|
-
4 steps (
|
|
100
|
+
4 steps (4 passed)
|
|
102
101
|
|
|
103
102
|
"""
|
|
104
|
-
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
Feature: Exceptions in Around Hooks
|
|
2
|
+
|
|
3
|
+
Around hooks are awkward beasts to handle internally.
|
|
4
|
+
|
|
5
|
+
Right now, if there's an error in your Around hook before you call `block.call`,
|
|
6
|
+
we won't even print the steps for the scenario.
|
|
7
|
+
|
|
8
|
+
This is because that `block.call` invokes all the logic that would tell Cucumber's
|
|
9
|
+
UI about the steps in your scenario. If we never reach that code, we'll never be
|
|
10
|
+
told about them.
|
|
11
|
+
|
|
12
|
+
There's another scenario to consider, where the exception occurs after the steps
|
|
13
|
+
have been run. How would we want to report in that case?
|
|
14
|
+
|
|
15
|
+
Scenario: Exception before the test case is run
|
|
16
|
+
Given the standard step definitions
|
|
17
|
+
And a file named "features/support/env.rb" with:
|
|
18
|
+
"""
|
|
19
|
+
Around do |scenario, block|
|
|
20
|
+
fail "this should be reported"
|
|
21
|
+
block.call
|
|
22
|
+
end
|
|
23
|
+
"""
|
|
24
|
+
And a file named "features/test.feature" with:
|
|
25
|
+
"""
|
|
26
|
+
Feature:
|
|
27
|
+
Scenario:
|
|
28
|
+
Given this step passes
|
|
29
|
+
"""
|
|
30
|
+
When I run `cucumber -q`
|
|
31
|
+
Then it should fail with exactly:
|
|
32
|
+
"""
|
|
33
|
+
Feature:
|
|
34
|
+
|
|
35
|
+
Scenario:
|
|
36
|
+
this should be reported (RuntimeError)
|
|
37
|
+
./features/support/env.rb:2:in `Around'
|
|
38
|
+
|
|
39
|
+
Failing Scenarios:
|
|
40
|
+
cucumber features/test.feature:2
|
|
41
|
+
|
|
42
|
+
1 scenario (1 failed)
|
|
43
|
+
0 steps
|
|
44
|
+
0m0.012s
|
|
45
|
+
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
Scenario: Exception after the test case is run
|
|
49
|
+
Given the standard step definitions
|
|
50
|
+
And a file named "features/support/env.rb" with:
|
|
51
|
+
"""
|
|
52
|
+
Around do |scenario, block|
|
|
53
|
+
block.call
|
|
54
|
+
fail "this should be reported"
|
|
55
|
+
end
|
|
56
|
+
"""
|
|
57
|
+
And a file named "features/test.feature" with:
|
|
58
|
+
"""
|
|
59
|
+
Feature:
|
|
60
|
+
Scenario:
|
|
61
|
+
Given this step passes
|
|
62
|
+
"""
|
|
63
|
+
When I run `cucumber -q`
|
|
64
|
+
Then it should fail with exactly:
|
|
65
|
+
"""
|
|
66
|
+
Feature:
|
|
67
|
+
|
|
68
|
+
Scenario:
|
|
69
|
+
Given this step passes
|
|
70
|
+
this should be reported (RuntimeError)
|
|
71
|
+
./features/support/env.rb:3:in `Around'
|
|
72
|
+
|
|
73
|
+
Failing Scenarios:
|
|
74
|
+
cucumber features/test.feature:2
|
|
75
|
+
|
|
76
|
+
1 scenario (1 failed)
|
|
77
|
+
1 step (1 passed)
|
|
78
|
+
0m0.012s
|
|
79
|
+
|
|
80
|
+
"""
|
|
@@ -4,11 +4,7 @@ Feature: Exception in Before Block
|
|
|
4
4
|
I want exceptions raised in Before blocks to be handled gracefully and reported by the formatters
|
|
5
5
|
|
|
6
6
|
Background:
|
|
7
|
-
Given
|
|
8
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
9
|
-
"""
|
|
10
|
-
Given(/^this step works$/) do; end
|
|
11
|
-
"""
|
|
7
|
+
Given the standard step definitions
|
|
12
8
|
And a file named "features/support/env.rb" with:
|
|
13
9
|
"""
|
|
14
10
|
class SomeSetupException < Exception; end
|
|
@@ -18,23 +14,24 @@ Feature: Exception in Before Block
|
|
|
18
14
|
end
|
|
19
15
|
"""
|
|
20
16
|
|
|
17
|
+
@spawn
|
|
21
18
|
Scenario: Handle Exception in standard scenario step and carry on
|
|
22
19
|
Given a file named "features/naughty_step_in_scenario.feature" with:
|
|
23
20
|
"""
|
|
24
21
|
Feature: Sample
|
|
25
22
|
|
|
26
23
|
Scenario: Run a good step
|
|
27
|
-
Given this step
|
|
24
|
+
Given this step passes
|
|
28
25
|
"""
|
|
29
|
-
When I run cucumber features
|
|
30
|
-
Then it should fail with
|
|
26
|
+
When I run `cucumber features`
|
|
27
|
+
Then it should fail with:
|
|
31
28
|
"""
|
|
32
29
|
Feature: Sample
|
|
33
30
|
|
|
34
31
|
Scenario: Run a good step # features/naughty_step_in_scenario.feature:3
|
|
35
32
|
I cannot even start this scenario (SomeSetupException)
|
|
36
33
|
./features/support/env.rb:4:in `Before'
|
|
37
|
-
Given this step
|
|
34
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
38
35
|
|
|
39
36
|
Failing Scenarios:
|
|
40
37
|
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Run a good step
|
|
@@ -50,29 +47,30 @@ Feature: Exception in Before Block
|
|
|
50
47
|
Feature: Sample
|
|
51
48
|
|
|
52
49
|
Background:
|
|
53
|
-
Given this step
|
|
50
|
+
Given this step passes
|
|
54
51
|
|
|
55
52
|
Scenario: Run a good step
|
|
56
|
-
Given this step
|
|
53
|
+
Given this step passes
|
|
57
54
|
"""
|
|
58
|
-
When I run cucumber features
|
|
59
|
-
Then it should fail with
|
|
55
|
+
When I run `cucumber features`
|
|
56
|
+
Then it should fail with exactly:
|
|
60
57
|
"""
|
|
61
58
|
Feature: Sample
|
|
62
59
|
|
|
63
|
-
Background:
|
|
60
|
+
Background: # features/naughty_step_in_before.feature:3
|
|
64
61
|
I cannot even start this scenario (SomeSetupException)
|
|
65
62
|
./features/support/env.rb:4:in `Before'
|
|
66
|
-
Given this step
|
|
63
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
67
64
|
|
|
68
65
|
Scenario: Run a good step # features/naughty_step_in_before.feature:6
|
|
69
|
-
Given this step
|
|
66
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
70
67
|
|
|
71
68
|
Failing Scenarios:
|
|
72
69
|
cucumber features/naughty_step_in_before.feature:6 # Scenario: Run a good step
|
|
73
70
|
|
|
74
71
|
1 scenario (1 failed)
|
|
75
|
-
2 steps (
|
|
72
|
+
2 steps (2 skipped)
|
|
73
|
+
0m0.012s
|
|
76
74
|
|
|
77
75
|
"""
|
|
78
76
|
|
|
@@ -82,10 +80,10 @@ Feature: Exception in Before Block
|
|
|
82
80
|
Feature: Sample
|
|
83
81
|
|
|
84
82
|
Scenario: Run a good step
|
|
85
|
-
Given this step
|
|
83
|
+
Given this step passes
|
|
86
84
|
"""
|
|
87
|
-
When I run cucumber features --format progress
|
|
88
|
-
Then it should fail with
|
|
85
|
+
When I run `cucumber features --format progress`
|
|
86
|
+
Then it should fail with:
|
|
89
87
|
"""
|
|
90
88
|
F-
|
|
91
89
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Feature: Custom filter
|
|
2
|
+
|
|
3
|
+
Scenario: Add a custom filter via AfterConfiguration hook
|
|
4
|
+
Given a file named "features/test.feature" with:
|
|
5
|
+
"""
|
|
6
|
+
Feature:
|
|
7
|
+
Scenario:
|
|
8
|
+
Given my special step
|
|
9
|
+
"""
|
|
10
|
+
And a file named "features/support/my_filter.rb" with:
|
|
11
|
+
"""
|
|
12
|
+
require 'cucumber/core/filter'
|
|
13
|
+
|
|
14
|
+
MakeAnythingPass = Cucumber::Core::Filter.new do
|
|
15
|
+
def test_case(test_case)
|
|
16
|
+
activated_steps = test_case.test_steps.map do |test_step|
|
|
17
|
+
test_step.with_action { }
|
|
18
|
+
end
|
|
19
|
+
test_case.with_steps(activated_steps).describe_to receiver
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
AfterConfiguration do |config|
|
|
24
|
+
config.filters << MakeAnythingPass.new
|
|
25
|
+
end
|
|
26
|
+
"""
|
|
27
|
+
When I run `cucumber --strict`
|
|
28
|
+
Then it should pass
|
|
29
|
+
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
Feature: Custom Formatter
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given a file named "features/f.feature" with:
|
|
5
|
+
"""
|
|
6
|
+
Feature: I'll use my own
|
|
7
|
+
Scenario: Just print me
|
|
8
|
+
Given this step passes
|
|
9
|
+
"""
|
|
10
|
+
And the standard step definitions
|
|
11
|
+
|
|
12
|
+
Scenario: Use the new API
|
|
13
|
+
Given a file named "features/support/custom_formatter.rb" with:
|
|
14
|
+
"""
|
|
15
|
+
module MyCustom
|
|
16
|
+
class Formatter
|
|
17
|
+
def initialize(runtime, io, options)
|
|
18
|
+
@io = io
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def before_test_case(test_case)
|
|
22
|
+
feature = test_case.source.first
|
|
23
|
+
scenario = test_case.source.last
|
|
24
|
+
@io.puts feature.short_name.upcase
|
|
25
|
+
@io.puts " #{scenario.name.upcase}"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
"""
|
|
30
|
+
When I run `cucumber features/f.feature --format MyCustom::Formatter`
|
|
31
|
+
Then it should pass with exactly:
|
|
32
|
+
"""
|
|
33
|
+
I'LL USE MY OWN
|
|
34
|
+
JUST PRINT ME
|
|
35
|
+
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
Scenario: Use the legacy API
|
|
39
|
+
Given a file named "features/support/custom_legacy_formatter.rb" with:
|
|
40
|
+
"""
|
|
41
|
+
module MyCustom
|
|
42
|
+
class LegacyFormatter
|
|
43
|
+
def initialize(runtime, io, options)
|
|
44
|
+
@io = io
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def before_feature(feature)
|
|
48
|
+
@io.puts feature.short_name.upcase
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def scenario_name(keyword, name, file_colon_line, source_indent)
|
|
52
|
+
@io.puts " #{name.upcase}"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
"""
|
|
57
|
+
When I run `cucumber features/f.feature --format MyCustom::LegacyFormatter`
|
|
58
|
+
Then it should pass with exactly:
|
|
59
|
+
"""
|
|
60
|
+
I'LL USE MY OWN
|
|
61
|
+
JUST PRINT ME
|
|
62
|
+
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
Scenario: Use both
|
|
66
|
+
You can use a specific shim to opt-in to both APIs at once.
|
|
67
|
+
|
|
68
|
+
Given a file named "features/support/custom_mixed_formatter.rb" with:
|
|
69
|
+
"""
|
|
70
|
+
module MyCustom
|
|
71
|
+
class MixedFormatter
|
|
72
|
+
|
|
73
|
+
def initialize(runtime, io, options)
|
|
74
|
+
@io = io
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def before_test_case(test_case)
|
|
78
|
+
feature = test_case.source.first
|
|
79
|
+
@io.puts feature.short_name.upcase
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def scenario_name(keyword, name, file_colon_line, source_indent)
|
|
83
|
+
@io.puts " #{name.upcase}"
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
"""
|
|
88
|
+
When I run `cucumber features/f.feature --format MyCustom::MixedFormatter`
|
|
89
|
+
Then it should pass with exactly:
|
|
90
|
+
"""
|
|
91
|
+
I'LL USE MY OWN
|
|
92
|
+
JUST PRINT ME
|
|
93
|
+
|
|
94
|
+
"""
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
Feature: Debug formatter
|
|
2
|
+
|
|
3
|
+
In order to help you easily visualise the listener API, you can use
|
|
4
|
+
the `debug` formatter that prints the calls to the listener as a
|
|
5
|
+
feature is run.
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given the standard step definitions
|
|
9
|
+
|
|
10
|
+
Scenario: title
|
|
11
|
+
Given a file named "features/test.feature" with:
|
|
12
|
+
"""
|
|
13
|
+
Feature:
|
|
14
|
+
Scenario:
|
|
15
|
+
Given this step passes
|
|
16
|
+
"""
|
|
17
|
+
When I run `cucumber -f debug`
|
|
18
|
+
Then the stderr should not contain anything
|
|
19
|
+
Then it should pass with:
|
|
20
|
+
"""
|
|
21
|
+
before_test_case
|
|
22
|
+
before_features
|
|
23
|
+
before_feature
|
|
24
|
+
before_tags
|
|
25
|
+
after_tags
|
|
26
|
+
feature_name
|
|
27
|
+
before_test_step
|
|
28
|
+
after_test_step
|
|
29
|
+
before_test_step
|
|
30
|
+
before_feature_element
|
|
31
|
+
before_tags
|
|
32
|
+
after_tags
|
|
33
|
+
scenario_name
|
|
34
|
+
before_steps
|
|
35
|
+
before_step
|
|
36
|
+
before_step_result
|
|
37
|
+
step_name
|
|
38
|
+
after_step_result
|
|
39
|
+
after_step
|
|
40
|
+
after_test_step
|
|
41
|
+
after_steps
|
|
42
|
+
after_feature_element
|
|
43
|
+
after_test_case
|
|
44
|
+
after_feature
|
|
45
|
+
after_features
|
|
46
|
+
done
|
|
47
|
+
"""
|
|
@@ -13,15 +13,13 @@ Feature: Formatter API: Step file path and line number (Issue #179)
|
|
|
13
13
|
"""
|
|
14
14
|
And a file named "features/step_definitions/steps.rb" with:
|
|
15
15
|
"""
|
|
16
|
-
Given
|
|
17
|
-
end
|
|
16
|
+
Given(/^step at line (.*)$/) {|line| }
|
|
18
17
|
"""
|
|
19
18
|
And a file named "features/support/jb/formatter.rb" with:
|
|
20
19
|
"""
|
|
21
20
|
module Jb
|
|
22
21
|
class Formatter
|
|
23
|
-
def initialize(
|
|
24
|
-
@step_mother = step_mother
|
|
22
|
+
def initialize(runtime, io, options)
|
|
25
23
|
@io = io
|
|
26
24
|
end
|
|
27
25
|
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
Feature: HTML output formatter
|
|
2
2
|
|
|
3
3
|
Background:
|
|
4
|
-
Given
|
|
4
|
+
Given the standard step definitions
|
|
5
|
+
And a file named "features/scenario_outline_with_undefined_steps.feature" with:
|
|
5
6
|
"""
|
|
6
7
|
Feature:
|
|
7
8
|
|
|
8
9
|
Scenario Outline:
|
|
9
|
-
Given
|
|
10
|
-
|
|
10
|
+
Given this step is undefined
|
|
11
|
+
|
|
11
12
|
Examples:
|
|
12
13
|
|foo|
|
|
13
14
|
|bar|
|
|
@@ -17,7 +18,7 @@ Feature: HTML output formatter
|
|
|
17
18
|
Feature: Outline
|
|
18
19
|
|
|
19
20
|
Scenario Outline: Will it blend?
|
|
20
|
-
Given this
|
|
21
|
+
Given this step is pending
|
|
21
22
|
And other step
|
|
22
23
|
When I do something with <example>
|
|
23
24
|
Then I should see something
|
|
@@ -32,21 +33,12 @@ Feature: HTML output formatter
|
|
|
32
33
|
Feature: Feature with failing background step
|
|
33
34
|
|
|
34
35
|
Background:
|
|
35
|
-
Given this fails
|
|
36
|
+
Given this step fails
|
|
36
37
|
|
|
37
38
|
Scenario:
|
|
38
39
|
When I do something
|
|
39
40
|
Then I should see something
|
|
40
41
|
"""
|
|
41
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
42
|
-
"""
|
|
43
|
-
Given /^this fails$/ do
|
|
44
|
-
fail 'This step should fail'
|
|
45
|
-
end
|
|
46
|
-
Given /^this hasn't been implemented yet$/ do
|
|
47
|
-
pending
|
|
48
|
-
end
|
|
49
|
-
"""
|
|
50
42
|
|
|
51
43
|
Scenario: an scenario outline, one undefined step, one random example, expand flag on
|
|
52
44
|
When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format html --expand `
|
|
@@ -63,10 +55,14 @@ Feature: HTML output formatter
|
|
|
63
55
|
"""
|
|
64
56
|
makeRed('scenario_1')
|
|
65
57
|
"""
|
|
58
|
+
|
|
66
59
|
Examples:
|
|
67
60
|
| file | flag |
|
|
68
61
|
| features/scenario_outline_with_pending_step.feature | --expand |
|
|
69
62
|
| features/scenario_outline_with_pending_step.feature | |
|
|
63
|
+
|
|
64
|
+
Examples:
|
|
65
|
+
| file | flag |
|
|
70
66
|
| features/scenario_outline_with_undefined_steps.feature | --expand |
|
|
71
67
|
| features/scenario_outline_with_undefined_steps.feature | |
|
|
72
68
|
|