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
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
@spawn
|
|
2
|
+
Feature: JUnit output formatter
|
|
3
|
+
In order for developers to create test reports with ant
|
|
4
|
+
Cucumber should be able to output JUnit xml files
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Given the standard step definitions
|
|
8
|
+
And a file named "features/one_passing_one_failing.feature" with:
|
|
9
|
+
"""
|
|
10
|
+
Feature: One passing scenario, one failing scenario
|
|
11
|
+
|
|
12
|
+
Scenario: Passing
|
|
13
|
+
Given this step passes
|
|
14
|
+
|
|
15
|
+
Scenario: Failing
|
|
16
|
+
Given this step fails
|
|
17
|
+
"""
|
|
18
|
+
And a file named "features/some_subdirectory/one_passing_one_failing.feature" with:
|
|
19
|
+
"""
|
|
20
|
+
Feature: Subdirectory - One passing scenario, one failing scenario
|
|
21
|
+
|
|
22
|
+
Scenario: Passing
|
|
23
|
+
Given this step passes
|
|
24
|
+
|
|
25
|
+
Scenario: Failing
|
|
26
|
+
Given this step fails
|
|
27
|
+
"""
|
|
28
|
+
And a file named "features/pending.feature" with:
|
|
29
|
+
"""
|
|
30
|
+
Feature: Pending step
|
|
31
|
+
|
|
32
|
+
Scenario: Pending
|
|
33
|
+
Given this step is pending
|
|
34
|
+
|
|
35
|
+
Scenario: Undefined
|
|
36
|
+
Given this step is undefined
|
|
37
|
+
"""
|
|
38
|
+
And a file named "features/pending.feature" with:
|
|
39
|
+
"""
|
|
40
|
+
Feature: Pending step
|
|
41
|
+
|
|
42
|
+
Scenario: Pending
|
|
43
|
+
Given this step is pending
|
|
44
|
+
|
|
45
|
+
Scenario: Undefined
|
|
46
|
+
Given this step is undefined
|
|
47
|
+
"""
|
|
48
|
+
And a file named "features/scenario_outline.feature" with:
|
|
49
|
+
"""
|
|
50
|
+
Feature: Scenario outlines
|
|
51
|
+
|
|
52
|
+
Scenario Outline: Using scenario outlines
|
|
53
|
+
Given this step <type>
|
|
54
|
+
|
|
55
|
+
Examples:
|
|
56
|
+
| type |
|
|
57
|
+
| passes |
|
|
58
|
+
| fails |
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
Scenario: one feature, one passing scenario, one failing scenario
|
|
62
|
+
When I run `cucumber --format junit --out tmp/ features/one_passing_one_failing.feature`
|
|
63
|
+
Then it should fail with:
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
"""
|
|
67
|
+
And the junit output file "tmp/TEST-features-one_passing_one_failing.xml" should contain:
|
|
68
|
+
"""
|
|
69
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
70
|
+
<testsuite failures="1" errors="0" skipped="0" tests="2" time="0.05" name="One passing scenario, one failing scenario">
|
|
71
|
+
<testcase classname="One passing scenario, one failing scenario" name="Passing" time="0.05">
|
|
72
|
+
<system-out/>
|
|
73
|
+
<system-err/>
|
|
74
|
+
</testcase>
|
|
75
|
+
<testcase classname="One passing scenario, one failing scenario" name="Failing" time="0.05">
|
|
76
|
+
<failure message="failed Failing" type="failed">
|
|
77
|
+
<![CDATA[Scenario: Failing
|
|
78
|
+
|
|
79
|
+
Given this step fails
|
|
80
|
+
|
|
81
|
+
Message:
|
|
82
|
+
]]>
|
|
83
|
+
<![CDATA[ (RuntimeError)
|
|
84
|
+
./features/step_definitions/steps.rb:4:in `/^this step fails$/'
|
|
85
|
+
features/one_passing_one_failing.feature:7:in `Given this step fails']]>
|
|
86
|
+
</failure>
|
|
87
|
+
<system-out/>
|
|
88
|
+
<system-err/>
|
|
89
|
+
</testcase>
|
|
90
|
+
<system-out>
|
|
91
|
+
<![CDATA[]]>
|
|
92
|
+
</system-out>
|
|
93
|
+
<system-err>
|
|
94
|
+
<![CDATA[]]>
|
|
95
|
+
</system-err>
|
|
96
|
+
</testsuite>
|
|
97
|
+
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
Scenario: one feature in a subdirectory, one passing scenario, one failing scenario
|
|
101
|
+
When I run `cucumber --format junit --out tmp/ features/some_subdirectory/one_passing_one_failing.feature --require features`
|
|
102
|
+
Then it should fail with:
|
|
103
|
+
"""
|
|
104
|
+
|
|
105
|
+
"""
|
|
106
|
+
And the junit output file "tmp/TEST-features-some_subdirectory-one_passing_one_failing.xml" should contain:
|
|
107
|
+
"""
|
|
108
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
109
|
+
<testsuite failures="1" errors="0" skipped="0" tests="2" time="0.05" name="Subdirectory - One passing scenario, one failing scenario">
|
|
110
|
+
<testcase classname="Subdirectory - One passing scenario, one failing scenario" name="Passing" time="0.05">
|
|
111
|
+
<system-out/>
|
|
112
|
+
<system-err/>
|
|
113
|
+
</testcase>
|
|
114
|
+
<testcase classname="Subdirectory - One passing scenario, one failing scenario" name="Failing" time="0.05">
|
|
115
|
+
<failure message="failed Failing" type="failed">
|
|
116
|
+
<![CDATA[Scenario: Failing
|
|
117
|
+
|
|
118
|
+
Given this step fails
|
|
119
|
+
|
|
120
|
+
Message:
|
|
121
|
+
]]>
|
|
122
|
+
<![CDATA[ (RuntimeError)
|
|
123
|
+
./features/step_definitions/steps.rb:4:in `/^this step fails$/'
|
|
124
|
+
features/some_subdirectory/one_passing_one_failing.feature:7:in `Given this step fails']]>
|
|
125
|
+
</failure>
|
|
126
|
+
<system-out/>
|
|
127
|
+
<system-err/>
|
|
128
|
+
</testcase>
|
|
129
|
+
<system-out>
|
|
130
|
+
<![CDATA[]]>
|
|
131
|
+
</system-out>
|
|
132
|
+
<system-err>
|
|
133
|
+
<![CDATA[]]>
|
|
134
|
+
</system-err>
|
|
135
|
+
</testsuite>
|
|
136
|
+
|
|
137
|
+
"""
|
|
138
|
+
|
|
139
|
+
Scenario: pending and undefined steps are reported as skipped
|
|
140
|
+
When I run `cucumber --format junit --out tmp/ features/pending.feature`
|
|
141
|
+
Then it should pass with:
|
|
142
|
+
"""
|
|
143
|
+
|
|
144
|
+
"""
|
|
145
|
+
And the junit output file "tmp/TEST-features-pending.xml" should contain:
|
|
146
|
+
"""
|
|
147
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
148
|
+
<testsuite failures="0" errors="0" skipped="2" tests="2" time="0.05" name="Pending step">
|
|
149
|
+
<testcase classname="Pending step" name="Pending" time="0.05">
|
|
150
|
+
<skipped/>
|
|
151
|
+
<system-out/>
|
|
152
|
+
<system-err/>
|
|
153
|
+
</testcase>
|
|
154
|
+
<testcase classname="Pending step" name="Undefined" time="0.05">
|
|
155
|
+
<skipped/>
|
|
156
|
+
<system-out/>
|
|
157
|
+
<system-err/>
|
|
158
|
+
</testcase>
|
|
159
|
+
<system-out>
|
|
160
|
+
<![CDATA[]]>
|
|
161
|
+
</system-out>
|
|
162
|
+
<system-err>
|
|
163
|
+
<![CDATA[]]>
|
|
164
|
+
</system-err>
|
|
165
|
+
</testsuite>
|
|
166
|
+
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
Scenario: pending and undefined steps with strict option should fail
|
|
170
|
+
When I run `cucumber --format junit --out tmp/ features/pending.feature --strict`
|
|
171
|
+
Then it should fail with:
|
|
172
|
+
"""
|
|
173
|
+
|
|
174
|
+
"""
|
|
175
|
+
And the junit output file "tmp/TEST-features-pending.xml" should contain:
|
|
176
|
+
"""
|
|
177
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
178
|
+
<testsuite failures="2" errors="0" skipped="0" tests="2" time="0.05" name="Pending step">
|
|
179
|
+
<testcase classname="Pending step" name="Pending" time="0.05">
|
|
180
|
+
<failure message="pending Pending" type="pending">
|
|
181
|
+
<![CDATA[Scenario: Pending
|
|
182
|
+
|
|
183
|
+
Given this step is pending
|
|
184
|
+
|
|
185
|
+
Message:
|
|
186
|
+
]]>
|
|
187
|
+
<![CDATA[TODO (Cucumber::Pending)
|
|
188
|
+
./features/step_definitions/steps.rb:3:in `/^this step is pending$/'
|
|
189
|
+
features/pending.feature:4:in `Given this step is pending']]>
|
|
190
|
+
</failure>
|
|
191
|
+
<system-out/>
|
|
192
|
+
<system-err/>
|
|
193
|
+
</testcase>
|
|
194
|
+
<testcase classname="Pending step" name="Undefined" time="0.05">
|
|
195
|
+
<failure message="undefined Undefined" type="undefined">
|
|
196
|
+
<![CDATA[Scenario: Undefined
|
|
197
|
+
|
|
198
|
+
Given this step is undefined
|
|
199
|
+
|
|
200
|
+
Message:
|
|
201
|
+
]]>
|
|
202
|
+
<![CDATA[Undefined step: "this step is undefined" (Cucumber::Undefined)
|
|
203
|
+
features/pending.feature:7:in `Given this step is undefined']]>
|
|
204
|
+
</failure>
|
|
205
|
+
<system-out/>
|
|
206
|
+
<system-err/>
|
|
207
|
+
</testcase>
|
|
208
|
+
<system-out>
|
|
209
|
+
<![CDATA[]]>
|
|
210
|
+
</system-out>
|
|
211
|
+
<system-err>
|
|
212
|
+
<![CDATA[]]>
|
|
213
|
+
</system-err>
|
|
214
|
+
</testsuite>
|
|
215
|
+
|
|
216
|
+
"""
|
|
217
|
+
|
|
218
|
+
Scenario: run all features
|
|
219
|
+
When I run `cucumber --format junit --out tmp/ features`
|
|
220
|
+
Then it should fail with:
|
|
221
|
+
"""
|
|
222
|
+
|
|
223
|
+
"""
|
|
224
|
+
And a file named "tmp/TEST-features-one_passing_one_failing.xml" should exist
|
|
225
|
+
And a file named "tmp/TEST-features-pending.xml" should exist
|
|
226
|
+
|
|
227
|
+
Scenario: show correct error message if no --out is passed
|
|
228
|
+
When I run `cucumber --format junit features`
|
|
229
|
+
Then the stderr should not contain:
|
|
230
|
+
"""
|
|
231
|
+
can't convert .* into String \(TypeError\)
|
|
232
|
+
"""
|
|
233
|
+
And the stderr should contain:
|
|
234
|
+
"""
|
|
235
|
+
You *must* specify --out DIR for the junit formatter
|
|
236
|
+
"""
|
|
237
|
+
|
|
238
|
+
Scenario: one feature, one scenario outline, two examples: one passing, one failing
|
|
239
|
+
When I run `cucumber --format junit --out tmp/ features/scenario_outline.feature`
|
|
240
|
+
Then it should fail with:
|
|
241
|
+
"""
|
|
242
|
+
|
|
243
|
+
"""
|
|
244
|
+
And the junit output file "tmp/TEST-features-scenario_outline.xml" should contain:
|
|
245
|
+
"""
|
|
246
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
247
|
+
<testsuite failures="1" errors="0" skipped="0" tests="2" time="0.05" name="Scenario outlines">
|
|
248
|
+
<testcase classname="Scenario outlines" name="Using scenario outlines (outline example : | passes |)" time="0.05">
|
|
249
|
+
<system-out/>
|
|
250
|
+
<system-err/>
|
|
251
|
+
</testcase>
|
|
252
|
+
<testcase classname="Scenario outlines" name="Using scenario outlines (outline example : | fails |)" time="0.05">
|
|
253
|
+
<failure message="failed Using scenario outlines (outline example : | fails |)" type="failed">
|
|
254
|
+
<![CDATA[Scenario Outline: Using scenario outlines
|
|
255
|
+
|
|
256
|
+
Example row: | fails |
|
|
257
|
+
|
|
258
|
+
Message:
|
|
259
|
+
]]>
|
|
260
|
+
<![CDATA[ (RuntimeError)
|
|
261
|
+
./features/step_definitions/steps.rb:4:in `/^this step fails$/'
|
|
262
|
+
features/scenario_outline.feature:9:in `Given this step fails'
|
|
263
|
+
features/scenario_outline.feature:4:in `Given this step <type>']]>
|
|
264
|
+
</failure>
|
|
265
|
+
<system-out/>
|
|
266
|
+
<system-err/>
|
|
267
|
+
</testcase>
|
|
268
|
+
<system-out>
|
|
269
|
+
<![CDATA[]]>
|
|
270
|
+
</system-out>
|
|
271
|
+
<system-err>
|
|
272
|
+
<![CDATA[]]>
|
|
273
|
+
</system-err>
|
|
274
|
+
</testsuite>
|
|
275
|
+
|
|
276
|
+
"""
|
|
277
|
+
|
|
278
|
+
Scenario: one feature, one scenario outline, two examples: one passing, one failing with --expand option
|
|
279
|
+
When I run `cucumber --expand --format junit --out tmp/ features/scenario_outline.feature`
|
|
280
|
+
Then it should fail with exactly:
|
|
281
|
+
"""
|
|
282
|
+
|
|
283
|
+
"""
|
|
284
|
+
And the junit output file "tmp/TEST-features-scenario_outline.xml" should contain:
|
|
285
|
+
"""
|
|
286
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
287
|
+
<testsuite failures="1" errors="0" skipped="0" tests="2" time="0.05" name="Scenario outlines">
|
|
288
|
+
<testcase classname="Scenario outlines" name="Using scenario outlines (outline example : | passes |)" time="0.05">
|
|
289
|
+
<system-out/>
|
|
290
|
+
<system-err/>
|
|
291
|
+
</testcase>
|
|
292
|
+
<testcase classname="Scenario outlines" name="Using scenario outlines (outline example : | fails |)" time="0.05">
|
|
293
|
+
<failure message="failed Using scenario outlines (outline example : | fails |)" type="failed">
|
|
294
|
+
<![CDATA[Scenario Outline: Using scenario outlines
|
|
295
|
+
|
|
296
|
+
Example row: | fails |
|
|
297
|
+
|
|
298
|
+
Message:
|
|
299
|
+
]]>
|
|
300
|
+
<![CDATA[ (RuntimeError)
|
|
301
|
+
./features/step_definitions/steps.rb:4:in `/^this step fails$/'
|
|
302
|
+
features/scenario_outline.feature:9:in `Given this step fails'
|
|
303
|
+
features/scenario_outline.feature:4:in `Given this step <type>']]>
|
|
304
|
+
</failure>
|
|
305
|
+
<system-out/>
|
|
306
|
+
<system-err/>
|
|
307
|
+
</testcase>
|
|
308
|
+
<system-out>
|
|
309
|
+
<![CDATA[]]>
|
|
310
|
+
</system-out>
|
|
311
|
+
<system-err>
|
|
312
|
+
<![CDATA[]]>
|
|
313
|
+
</system-err>
|
|
314
|
+
</testsuite>
|
|
315
|
+
|
|
316
|
+
"""
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Feature: Pretty output formatter
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given a file named "features/scenario_outline_with_undefined_steps.feature" with:
|
|
5
|
+
"""
|
|
6
|
+
Feature:
|
|
7
|
+
|
|
8
|
+
Scenario Outline:
|
|
9
|
+
Given this step is undefined
|
|
10
|
+
|
|
11
|
+
Examples:
|
|
12
|
+
|foo|
|
|
13
|
+
|bar|
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
Scenario: an scenario outline, one undefined step, one random example, expand flag on
|
|
17
|
+
When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format pretty --expand `
|
|
18
|
+
Then it should pass
|
|
19
|
+
|
|
20
|
+
Scenario: when using a profile the output should include 'Using the default profile...'
|
|
21
|
+
And a file named "cucumber.yml" with:
|
|
22
|
+
"""
|
|
23
|
+
default: -r features
|
|
24
|
+
"""
|
|
25
|
+
When I run `cucumber --profile default --format pretty`
|
|
26
|
+
Then it should pass
|
|
27
|
+
And the output should contain:
|
|
28
|
+
"""
|
|
29
|
+
Using the default profile...
|
|
30
|
+
"""
|
|
31
|
+
Scenario: Hook output should be printed before hook exception
|
|
32
|
+
Given the standard step definitions
|
|
33
|
+
And a file named "features/test.feature" with:
|
|
34
|
+
"""
|
|
35
|
+
Feature:
|
|
36
|
+
Scenario:
|
|
37
|
+
Given this step passes
|
|
38
|
+
"""
|
|
39
|
+
And a file named "features/step_definitions/output_steps.rb" with:
|
|
40
|
+
"""
|
|
41
|
+
Before do
|
|
42
|
+
puts "Before hook"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
AfterStep do
|
|
46
|
+
puts "AfterStep hook"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
After do
|
|
50
|
+
puts "After hook"
|
|
51
|
+
raise "error"
|
|
52
|
+
end
|
|
53
|
+
"""
|
|
54
|
+
When I run `cucumber -q -f pretty features/test.feature`
|
|
55
|
+
Then the stderr should not contain anything
|
|
56
|
+
Then it should fail with:
|
|
57
|
+
"""
|
|
58
|
+
Feature:
|
|
59
|
+
|
|
60
|
+
Scenario:
|
|
61
|
+
Before hook
|
|
62
|
+
Given this step passes
|
|
63
|
+
AfterStep hook
|
|
64
|
+
After hook
|
|
65
|
+
error (RuntimeError)
|
|
66
|
+
./features/step_definitions/output_steps.rb:11:in `After'
|
|
67
|
+
|
|
68
|
+
Failing Scenarios:
|
|
69
|
+
cucumber features/test.feature:2
|
|
70
|
+
|
|
71
|
+
1 scenario (1 failed)
|
|
72
|
+
1 step (1 passed)
|
|
73
|
+
"""
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
Feature: Rerun formatter
|
|
2
|
+
|
|
3
|
+
The rerun formatter writes an output that's perfect for
|
|
4
|
+
passing to Cucumber when you want to rerun only the
|
|
5
|
+
scenarios that have failed.
|
|
6
|
+
|
|
7
|
+
You can save off the rerun output to a file by using it like this:
|
|
8
|
+
|
|
9
|
+
`cucumber -f rerun --out .cucumber.rerun`
|
|
10
|
+
|
|
11
|
+
Now you can pass that file's content to Cucumber to tell it
|
|
12
|
+
which scenarios to run:
|
|
13
|
+
|
|
14
|
+
`cucumber \`cat .cucumber.rerun\``
|
|
15
|
+
|
|
16
|
+
This is useful when debugging in a large suite of features.
|
|
17
|
+
|
|
18
|
+
Background:
|
|
19
|
+
Given the standard step definitions
|
|
20
|
+
|
|
21
|
+
Scenario: Regular scenarios
|
|
22
|
+
Given a file named "features/mixed.feature" with:
|
|
23
|
+
"""
|
|
24
|
+
Feature: Mixed
|
|
25
|
+
|
|
26
|
+
Scenario:
|
|
27
|
+
Given this step fails
|
|
28
|
+
|
|
29
|
+
Scenario:
|
|
30
|
+
Given this step is undefined
|
|
31
|
+
|
|
32
|
+
Scenario:
|
|
33
|
+
Given this step is pending
|
|
34
|
+
|
|
35
|
+
Scenario:
|
|
36
|
+
Given this step passes
|
|
37
|
+
|
|
38
|
+
"""
|
|
39
|
+
And a file named "features/all_good.feature" with:
|
|
40
|
+
"""
|
|
41
|
+
Feature: All good
|
|
42
|
+
|
|
43
|
+
Scenario:
|
|
44
|
+
Given this step passes
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
When I run `cucumber -f rerun`
|
|
48
|
+
Then it should fail with:
|
|
49
|
+
"""
|
|
50
|
+
features/mixed.feature:3:6:9
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
Scenario: Scenario outlines
|
|
54
|
+
For details see https://github.com/cucumber/cucumber/issues/57
|
|
55
|
+
Given a file named "features/one_passing_one_failing.feature" with:
|
|
56
|
+
"""
|
|
57
|
+
Feature: One passing example, one failing example
|
|
58
|
+
|
|
59
|
+
Scenario Outline:
|
|
60
|
+
Given this step <status>
|
|
61
|
+
|
|
62
|
+
Examples:
|
|
63
|
+
| status |
|
|
64
|
+
| passes |
|
|
65
|
+
| fails |
|
|
66
|
+
|
|
67
|
+
"""
|
|
68
|
+
When I run `cucumber -f rerun`
|
|
69
|
+
Then it should fail with:
|
|
70
|
+
"""
|
|
71
|
+
features/one_passing_one_failing.feature:9
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
Scenario: Failing background
|
|
75
|
+
Given a file named "features/failing_background.feature" with:
|
|
76
|
+
"""
|
|
77
|
+
Feature: Failing background sample
|
|
78
|
+
|
|
79
|
+
Background:
|
|
80
|
+
Given this step fails
|
|
81
|
+
|
|
82
|
+
Scenario: failing background
|
|
83
|
+
Then this step passes
|
|
84
|
+
|
|
85
|
+
Scenario: another failing background
|
|
86
|
+
Then this step passes
|
|
87
|
+
"""
|
|
88
|
+
When I run `cucumber -f rerun`
|
|
89
|
+
Then it should fail with:
|
|
90
|
+
"""
|
|
91
|
+
features/failing_background.feature:6:9
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
Scenario: Failing background with scenario outline
|
|
95
|
+
Given a file named "features/failing_background_outline.feature" with:
|
|
96
|
+
"""
|
|
97
|
+
Feature: Failing background sample with scenario outline
|
|
98
|
+
|
|
99
|
+
Background:
|
|
100
|
+
Given this step fails
|
|
101
|
+
|
|
102
|
+
Scenario Outline:
|
|
103
|
+
Then this step <status>
|
|
104
|
+
|
|
105
|
+
Examples:
|
|
106
|
+
| status |
|
|
107
|
+
| passes |
|
|
108
|
+
| passes |
|
|
109
|
+
"""
|
|
110
|
+
When I run `cucumber features/failing_background_outline.feature -r features -f rerun`
|
|
111
|
+
Then it should fail with:
|
|
112
|
+
"""
|
|
113
|
+
features/failing_background_outline.feature:11:12
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
Scenario: Scenario outlines with expand
|
|
117
|
+
For details see https://github.com/cucumber/cucumber/issues/503
|
|
118
|
+
|
|
119
|
+
Given a file named "features/one_passing_one_failing.feature" with:
|
|
120
|
+
"""
|
|
121
|
+
Feature: One passing example, one failing example
|
|
122
|
+
|
|
123
|
+
Scenario Outline:
|
|
124
|
+
Given this step <status>
|
|
125
|
+
|
|
126
|
+
Examples:
|
|
127
|
+
| status |
|
|
128
|
+
| passes |
|
|
129
|
+
| fails |
|
|
130
|
+
|
|
131
|
+
"""
|
|
132
|
+
When I run `cucumber --expand -f rerun`
|
|
133
|
+
Then it should fail with:
|
|
134
|
+
"""
|
|
135
|
+
features/one_passing_one_failing.feature:9
|
|
136
|
+
"""
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
Feature: Usage formatter
|
|
2
|
+
|
|
3
|
+
In order to see where step definitions are used
|
|
4
|
+
Developers should be able to see a list of step definitions and their use
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Given a file named "features/f.feature" with:
|
|
8
|
+
"""
|
|
9
|
+
Feature: F
|
|
10
|
+
Background: A
|
|
11
|
+
Given A
|
|
12
|
+
Scenario: B
|
|
13
|
+
Given B
|
|
14
|
+
Scenario Outline: CA
|
|
15
|
+
Given <x>
|
|
16
|
+
And B
|
|
17
|
+
Examples:
|
|
18
|
+
|x|
|
|
19
|
+
|C|
|
|
20
|
+
|A|
|
|
21
|
+
Scenario: AC
|
|
22
|
+
Given A
|
|
23
|
+
Given C
|
|
24
|
+
"""
|
|
25
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
26
|
+
"""
|
|
27
|
+
Given(/A/) { }
|
|
28
|
+
Given(/B/) { }
|
|
29
|
+
Given(/C/) { }
|
|
30
|
+
Given(/D/) { }
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
@wip-new-core
|
|
34
|
+
Scenario: Run with --format usage
|
|
35
|
+
When I run `cucumber -f usage --dry-run`
|
|
36
|
+
Then it should pass with exactly:
|
|
37
|
+
"""
|
|
38
|
+
--------
|
|
39
|
+
|
|
40
|
+
/A/ # features/step_definitions/steps.rb:1
|
|
41
|
+
Given A # features/f.feature:3
|
|
42
|
+
Given A # features/f.feature:12
|
|
43
|
+
Given A # features/f.feature:14
|
|
44
|
+
/B/ # features/step_definitions/steps.rb:2
|
|
45
|
+
Given B # features/f.feature:5
|
|
46
|
+
And B # features/f.feature:11
|
|
47
|
+
And B # features/f.feature:12
|
|
48
|
+
/C/ # features/step_definitions/steps.rb:3
|
|
49
|
+
Given C # features/f.feature:11
|
|
50
|
+
Given C # features/f.feature:15
|
|
51
|
+
/D/ # features/step_definitions/steps.rb:4
|
|
52
|
+
NOT MATCHED BY ANY STEPS
|
|
53
|
+
|
|
54
|
+
4 scenarios (4 skipped)
|
|
55
|
+
11 steps (11 skipped)
|
|
56
|
+
0m0.012s
|
|
57
|
+
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
Scenario: Run with --expand --format usage
|
|
61
|
+
When I run `cucumber -x -f usage --dry-run`
|
|
62
|
+
Then it should pass with exactly:
|
|
63
|
+
"""
|
|
64
|
+
----------
|
|
65
|
+
|
|
66
|
+
/A/ # features/step_definitions/steps.rb:1
|
|
67
|
+
Given A # features/f.feature:3
|
|
68
|
+
Given A # features/f.feature:12
|
|
69
|
+
Given A # features/f.feature:14
|
|
70
|
+
/B/ # features/step_definitions/steps.rb:2
|
|
71
|
+
Given B # features/f.feature:5
|
|
72
|
+
And B # features/f.feature:11
|
|
73
|
+
And B # features/f.feature:12
|
|
74
|
+
/C/ # features/step_definitions/steps.rb:3
|
|
75
|
+
Given C # features/f.feature:11
|
|
76
|
+
Given C # features/f.feature:15
|
|
77
|
+
/D/ # features/step_definitions/steps.rb:4
|
|
78
|
+
NOT MATCHED BY ANY STEPS
|
|
79
|
+
|
|
80
|
+
4 scenarios (4 skipped)
|
|
81
|
+
11 steps (11 skipped)
|
|
82
|
+
0m0.012s
|
|
83
|
+
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
Scenario: Run with --format stepdefs
|
|
87
|
+
When I run `cucumber -f stepdefs --dry-run`
|
|
88
|
+
Then it should pass with exactly:
|
|
89
|
+
"""
|
|
90
|
+
--------
|
|
91
|
+
|
|
92
|
+
/A/ # features/step_definitions/steps.rb:1
|
|
93
|
+
/B/ # features/step_definitions/steps.rb:2
|
|
94
|
+
/C/ # features/step_definitions/steps.rb:3
|
|
95
|
+
/D/ # features/step_definitions/steps.rb:4
|
|
96
|
+
NOT MATCHED BY ANY STEPS
|
|
97
|
+
|
|
98
|
+
4 scenarios (4 skipped)
|
|
99
|
+
11 steps (11 skipped)
|
|
100
|
+
0m0.012s
|
|
101
|
+
|
|
102
|
+
"""
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Feature: Getting started
|
|
2
|
+
|
|
3
|
+
To get started, just open a command prompt in an empty directory and run
|
|
4
|
+
`cucumber`. You'll be prompted for what to do next.
|
|
5
|
+
|
|
6
|
+
@spawn
|
|
7
|
+
Scenario: Run Cucumber in an empty directory
|
|
8
|
+
Given a directory without standard Cucumber project directory structure
|
|
9
|
+
When I run `cucumber`
|
|
10
|
+
Then it should fail with:
|
|
11
|
+
"""
|
|
12
|
+
No such file or directory - features. You can use `cucumber --init` to get started.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
Scenario: Accidentally run Cucumber in a folder with Ruby files in it.
|
|
16
|
+
Given a directory without standard Cucumber project directory structure
|
|
17
|
+
And a file named "should_not_load.rb" with:
|
|
18
|
+
"""
|
|
19
|
+
puts 'this will not be shown'
|
|
20
|
+
"""
|
|
21
|
+
When I run `cucumber`
|
|
22
|
+
Then the exit status should be 1
|
|
23
|
+
And the output should not contain:
|
|
24
|
+
"""
|
|
25
|
+
this will not be shown
|
|
26
|
+
|
|
27
|
+
"""
|