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,24 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
|
|
3
|
+
require 'cucumber/formatter/unicode'
|
|
4
|
+
$:.unshift(File.dirname(__FILE__) + '/../../lib')
|
|
5
|
+
require 'calculator'
|
|
6
|
+
|
|
7
|
+
Before do
|
|
8
|
+
@calc = Calculator.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
After do
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
Δεδομένου ότι /έχω εισάγει (\d+) στην αριθμομηχανή/ do |n|
|
|
15
|
+
@calc.push n.to_i
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Όταν /πατάω (\w+)/ do |op|
|
|
19
|
+
@result = @calc.send op
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Τότε /το αποτέλεσμα στην οθόνη πρέπει να είναι (.*)/ do |result|
|
|
23
|
+
@result.should == result.to_f
|
|
24
|
+
end
|
data/examples/i18n/fr/Rakefile
CHANGED
|
@@ -20,11 +20,11 @@ Lorsqu /on tape additionner/ do
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
Alors /le résultat affiché doit être (\d*)/ do |result|
|
|
23
|
-
result.to_i
|
|
23
|
+
expect result.to_i == @expected_result
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
Alors /le résultat doit être (\d*)/ do |result|
|
|
27
|
-
result.to_i
|
|
27
|
+
expect result.to_i == @expected_result
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
Soit /^que je tape sur la touche "\+"$/ do
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# language: ht
|
|
2
|
+
Karakteristik: Adisyon
|
|
3
|
+
Nan lòd pou fè pou evite erè komik
|
|
4
|
+
Kòm yon moun sòt nan matematik
|
|
5
|
+
Mwen ta vle yo dim sòm total nan antre de nimero
|
|
6
|
+
|
|
7
|
+
Plan Senaryo: ajoute de nimero
|
|
8
|
+
Sipoze mwen te antre <input_1> nan kalkilatris la
|
|
9
|
+
Epi mwen te antre <input_2> nan kalkilatris la
|
|
10
|
+
Lè Mwen peze <button>
|
|
11
|
+
Rezilta a ta dwe <output> sou ekran an
|
|
12
|
+
|
|
13
|
+
Egzanp:
|
|
14
|
+
| input_1 | input_2 | button | output |
|
|
15
|
+
| 20 | 30 | ajoute | 50 |
|
|
16
|
+
| 2 | 5 | ajoute | 7 |
|
|
17
|
+
| 0 | 40 | ajoute | 40 |
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# language: ht
|
|
2
|
+
Karakteristik: Divizyon
|
|
3
|
+
Nan lòd pou fè pou evite erè komik
|
|
4
|
+
Kesye-a dwe kapab kalkile yon fraksyon
|
|
5
|
+
|
|
6
|
+
Senaryo: nimewo regilye
|
|
7
|
+
* Mwen te antre 3 nan kalkilatris la
|
|
8
|
+
* Mwen te antre 2 nan kalkilatris la
|
|
9
|
+
* Mwen peze divize
|
|
10
|
+
* Rezilta a ta dwe 1.5 sou ekran an
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
|
|
4
|
+
require 'cucumber/formatter/unicode'
|
|
5
|
+
$:.unshift(File.dirname(__FILE__) + '/../../lib')
|
|
6
|
+
require 'kalkilatris'
|
|
7
|
+
|
|
8
|
+
Before do
|
|
9
|
+
@kalk = Kalkilatris.new
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
After do
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Sipoze /Mwen te antre nan (\d+) nan kalkilatris la/ do |n|
|
|
16
|
+
@kalk.push n.to_i
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
Lè /Mwen peze (\w+)/ do |op|
|
|
20
|
+
@result = @kalk.send op
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
Lè sa a /Rezilta a ta dwe (.*) sou ekran an/ do |result|
|
|
24
|
+
@result.should == result.to_f
|
|
25
|
+
end
|
|
@@ -11,16 +11,16 @@ end
|
|
|
11
11
|
After do
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
Given
|
|
14
|
+
Given /在计算器上输入(\d+)/ do |n|
|
|
15
15
|
@calc.push n.to_i
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
When
|
|
19
|
-
if op == '
|
|
18
|
+
When /按(.*)键/ do |op|
|
|
19
|
+
if op == '加号'
|
|
20
20
|
@result = @calc.send "add"
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
Then
|
|
24
|
+
Then /屏幕上显示的结果应该是是(.*)/ do |result|
|
|
25
25
|
@result.should == result.to_f
|
|
26
26
|
end
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
+
@spawn
|
|
1
2
|
Feature: List step defs as json
|
|
3
|
+
|
|
2
4
|
In order to build tools on top of Cucumber
|
|
3
5
|
As a tool developer
|
|
4
6
|
I want to be able to query a features directory for all the step definitions it contains
|
|
5
|
-
|
|
6
|
-
Background:
|
|
7
|
-
Given a
|
|
8
|
-
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given a directory named "features"
|
|
10
|
+
|
|
9
11
|
Scenario: Two Ruby step definitions, in the same file
|
|
10
|
-
Given a file named "features/step_definitions/
|
|
12
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
11
13
|
"""
|
|
12
|
-
Given(/foo/i)
|
|
13
|
-
Given(/b.r/xm) {}
|
|
14
|
+
Given(/foo/i) { }
|
|
15
|
+
Given(/b.r/xm) { }
|
|
14
16
|
"""
|
|
15
17
|
When I run the following Ruby code:
|
|
16
18
|
"""
|
|
@@ -18,8 +20,7 @@ Feature: List step defs as json
|
|
|
18
20
|
puts Cucumber::StepDefinitions.new.to_json
|
|
19
21
|
|
|
20
22
|
"""
|
|
21
|
-
Then it should pass
|
|
22
|
-
And the output should contain the following JSON:
|
|
23
|
+
Then it should pass with JSON:
|
|
23
24
|
"""
|
|
24
25
|
[
|
|
25
26
|
{"source": "foo", "flags": "i"},
|
|
@@ -28,10 +29,10 @@ Feature: List step defs as json
|
|
|
28
29
|
"""
|
|
29
30
|
|
|
30
31
|
Scenario: Non-default directory structure
|
|
31
|
-
Given a file named "my_weird/place/
|
|
32
|
+
Given a file named "my_weird/place/steps.rb" with:
|
|
32
33
|
"""
|
|
33
|
-
Given(/foo/)
|
|
34
|
-
Given(/b.r/x) {}
|
|
34
|
+
Given(/foo/) { }
|
|
35
|
+
Given(/b.r/x) { }
|
|
35
36
|
"""
|
|
36
37
|
When I run the following Ruby code:
|
|
37
38
|
"""
|
|
@@ -39,8 +40,7 @@ Feature: List step defs as json
|
|
|
39
40
|
puts Cucumber::StepDefinitions.new(:autoload_code_paths => ['my_weird']).to_json
|
|
40
41
|
|
|
41
42
|
"""
|
|
42
|
-
Then it should pass
|
|
43
|
-
And the output should contain the following JSON:
|
|
43
|
+
Then it should pass with JSON:
|
|
44
44
|
"""
|
|
45
45
|
[
|
|
46
46
|
{"source": "foo", "flags": ""},
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@spawn
|
|
1
2
|
Feature: Run Cli::Main with existing Runtime
|
|
2
3
|
|
|
3
4
|
This is the API that Spork uses. It creates an existing runtime then
|
|
@@ -5,19 +6,13 @@ Feature: Run Cli::Main with existing Runtime
|
|
|
5
6
|
When the process forks, Spork them passes the runtime to Cli::Main to
|
|
6
7
|
run it.
|
|
7
8
|
|
|
8
|
-
Background:
|
|
9
|
-
Given a standard Cucumber project directory structure
|
|
10
|
-
|
|
11
9
|
Scenario: Run a single feature
|
|
12
|
-
Given
|
|
13
|
-
"""
|
|
14
|
-
Given(/pass/) {}
|
|
15
|
-
"""
|
|
10
|
+
Given the standard step definitions
|
|
16
11
|
Given a file named "features/success.feature" with:
|
|
17
12
|
"""
|
|
18
13
|
Feature:
|
|
19
14
|
Scenario:
|
|
20
|
-
Given
|
|
15
|
+
Given this step passes
|
|
21
16
|
"""
|
|
22
17
|
When I run the following Ruby code:
|
|
23
18
|
"""
|
|
@@ -30,5 +25,5 @@ Feature: Run Cli::Main with existing Runtime
|
|
|
30
25
|
Then it should pass
|
|
31
26
|
And the output should contain:
|
|
32
27
|
"""
|
|
33
|
-
Given
|
|
34
|
-
"""
|
|
28
|
+
Given this step passes
|
|
29
|
+
"""
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Feature: Backtraces
|
|
2
|
+
|
|
2
3
|
In order to discover errors quickly
|
|
3
4
|
As a cuker
|
|
4
5
|
I want to see backtraces for failures
|
|
@@ -30,7 +31,6 @@ Feature: Backtraces
|
|
|
30
31
|
Scenario: Example # features/failing_hard.feature:2
|
|
31
32
|
Given failing # features/step_definitions/steps.rb:4
|
|
32
33
|
(Java::JavaLang::UnsupportedOperationException)
|
|
33
|
-
java.util.AbstractList.add(AbstractList.java:
|
|
34
|
-
java.util.AbstractList.add(AbstractList.java:108)
|
|
34
|
+
java.util.AbstractList.add(java/util/AbstractList.java:
|
|
35
35
|
"""
|
|
36
36
|
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Feature: Dry Run
|
|
2
|
+
|
|
3
|
+
Dry run gives you a way to quickly scan your features without actually running them.
|
|
4
|
+
|
|
5
|
+
- Invokes formatters without executing the steps.
|
|
6
|
+
- This also omits the loading of your support/env.rb file if it exists.
|
|
7
|
+
|
|
8
|
+
Scenario: With a failing step
|
|
9
|
+
Given a file named "features/test.feature" with:
|
|
10
|
+
"""
|
|
11
|
+
Feature: test
|
|
12
|
+
Scenario:
|
|
13
|
+
Given this step fails
|
|
14
|
+
"""
|
|
15
|
+
And the standard step definitions
|
|
16
|
+
When I run `cucumber --dry-run`
|
|
17
|
+
Then it should pass with exactly:
|
|
18
|
+
"""
|
|
19
|
+
Feature: test
|
|
20
|
+
|
|
21
|
+
Scenario: # features/test.feature:2
|
|
22
|
+
Given this step fails # features/step_definitions/steps.rb:4
|
|
23
|
+
|
|
24
|
+
1 scenario (1 skipped)
|
|
25
|
+
1 step (1 skipped)
|
|
26
|
+
0m0.012s
|
|
27
|
+
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
Scenario: In strict mode
|
|
31
|
+
Given a file named "features/test.feature" with:
|
|
32
|
+
"""
|
|
33
|
+
Feature: test
|
|
34
|
+
Scenario:
|
|
35
|
+
Given this step fails
|
|
36
|
+
"""
|
|
37
|
+
And the standard step definitions
|
|
38
|
+
When I run `cucumber --dry-run --strict`
|
|
39
|
+
Then it should pass with exactly:
|
|
40
|
+
"""
|
|
41
|
+
Feature: test
|
|
42
|
+
|
|
43
|
+
Scenario: # features/test.feature:2
|
|
44
|
+
Given this step fails # features/step_definitions/steps.rb:4
|
|
45
|
+
|
|
46
|
+
1 scenario (1 skipped)
|
|
47
|
+
1 step (1 skipped)
|
|
48
|
+
0m0.012s
|
|
49
|
+
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
Scenario: In strict mode with an undefined step
|
|
53
|
+
Given a file named "features/test.feature" with:
|
|
54
|
+
"""
|
|
55
|
+
Feature: test
|
|
56
|
+
Scenario:
|
|
57
|
+
Given this step is undefined
|
|
58
|
+
"""
|
|
59
|
+
When I run `cucumber --dry-run --strict`
|
|
60
|
+
Then it should fail with:
|
|
61
|
+
"""
|
|
62
|
+
Feature: test
|
|
63
|
+
|
|
64
|
+
Scenario: # features/test.feature:2
|
|
65
|
+
Given this step is undefined # features/test.feature:3
|
|
66
|
+
Undefined step: "this step is undefined" (Cucumber::Undefined)
|
|
67
|
+
features/test.feature:3:in `Given this step is undefined'
|
|
68
|
+
|
|
69
|
+
1 scenario (1 undefined)
|
|
70
|
+
1 step (1 undefined)
|
|
71
|
+
0m0.012s
|
|
72
|
+
|
|
73
|
+
"""
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Feature: Excluding ruby and feature files from runs
|
|
2
|
+
|
|
3
|
+
Developers are able to easily exclude files from cucumber runs
|
|
4
|
+
This is a nice feature to have in conjunction with profiles, so you can exclude
|
|
5
|
+
certain environment files from certain runs.
|
|
6
|
+
|
|
7
|
+
Scenario: exclude ruby files
|
|
8
|
+
Given an empty file named "features/support/dont_require_me.rb"
|
|
9
|
+
And an empty file named "features/step_definitions/fooz.rb"
|
|
10
|
+
And an empty file named "features/step_definitions/foof.rb"
|
|
11
|
+
And an empty file named "features/step_definitions/foot.rb"
|
|
12
|
+
And an empty file named "features/support/require_me.rb"
|
|
13
|
+
When I run `cucumber features -q --verbose --exclude features/support/dont --exclude foo[zf]`
|
|
14
|
+
Then "features/support/require_me.rb" should be required
|
|
15
|
+
And "features/step_definitions/foot.rb" should be required
|
|
16
|
+
And "features/support/dont_require_me.rb" should not be required
|
|
17
|
+
And "features/step_definitions/foof.rb" should not be required
|
|
18
|
+
And "features/step_definitions/fooz.rb" should not be required
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
Feature: Tag logic
|
|
2
|
+
In order to conveniently run subsets of features
|
|
3
|
+
As a Cuker
|
|
4
|
+
I want to select features using logical AND/OR of tags
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Given a file named "features/test.feature" with:
|
|
8
|
+
"""
|
|
9
|
+
@feature
|
|
10
|
+
Feature: Sample
|
|
11
|
+
|
|
12
|
+
@one @three
|
|
13
|
+
Scenario: Example
|
|
14
|
+
Given passing
|
|
15
|
+
|
|
16
|
+
@one
|
|
17
|
+
Scenario: Another Example
|
|
18
|
+
Given passing
|
|
19
|
+
|
|
20
|
+
@three
|
|
21
|
+
Scenario: Yet another Example
|
|
22
|
+
Given passing
|
|
23
|
+
|
|
24
|
+
@ignore
|
|
25
|
+
Scenario: And yet another Example
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
Scenario: ANDing tags
|
|
29
|
+
When I run `cucumber -q -t @one -t @three features/test.feature`
|
|
30
|
+
Then it should pass with:
|
|
31
|
+
"""
|
|
32
|
+
@feature
|
|
33
|
+
Feature: Sample
|
|
34
|
+
|
|
35
|
+
@one @three
|
|
36
|
+
Scenario: Example
|
|
37
|
+
Given passing
|
|
38
|
+
|
|
39
|
+
1 scenario (1 undefined)
|
|
40
|
+
1 step (1 undefined)
|
|
41
|
+
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
Scenario: ORing tags
|
|
45
|
+
When I run `cucumber -q -t @one,@three features/test.feature`
|
|
46
|
+
Then it should pass with:
|
|
47
|
+
"""
|
|
48
|
+
@feature
|
|
49
|
+
Feature: Sample
|
|
50
|
+
|
|
51
|
+
@one @three
|
|
52
|
+
Scenario: Example
|
|
53
|
+
Given passing
|
|
54
|
+
|
|
55
|
+
@one
|
|
56
|
+
Scenario: Another Example
|
|
57
|
+
Given passing
|
|
58
|
+
|
|
59
|
+
@three
|
|
60
|
+
Scenario: Yet another Example
|
|
61
|
+
Given passing
|
|
62
|
+
|
|
63
|
+
3 scenarios (3 undefined)
|
|
64
|
+
3 steps (3 undefined)
|
|
65
|
+
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
Scenario: Negative tags
|
|
69
|
+
When I run `cucumber -q -t ~@three features/test.feature`
|
|
70
|
+
Then it should pass with:
|
|
71
|
+
"""
|
|
72
|
+
@feature
|
|
73
|
+
Feature: Sample
|
|
74
|
+
|
|
75
|
+
@one
|
|
76
|
+
Scenario: Another Example
|
|
77
|
+
Given passing
|
|
78
|
+
|
|
79
|
+
@ignore
|
|
80
|
+
Scenario: And yet another Example
|
|
81
|
+
|
|
82
|
+
2 scenarios (1 undefined, 1 passed)
|
|
83
|
+
1 step (1 undefined)
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
Scenario: Run with limited tag count, blowing it on scenario
|
|
87
|
+
When I run `cucumber -q --no-source --tags @one:1 features/test.feature`
|
|
88
|
+
Then it fails before running features with:
|
|
89
|
+
"""
|
|
90
|
+
@one occurred 2 times, but the limit was set to 1
|
|
91
|
+
features/test.feature:5
|
|
92
|
+
features/test.feature:9
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
Scenario: Run with limited tag count, blowing it via feature inheritance
|
|
96
|
+
When I run `cucumber -q --no-source --tags @feature:1 features/test.feature`
|
|
97
|
+
Then it fails before running features with:
|
|
98
|
+
"""
|
|
99
|
+
@feature occurred 4 times, but the limit was set to 1
|
|
100
|
+
features/test.feature:5
|
|
101
|
+
features/test.feature:9
|
|
102
|
+
features/test.feature:13
|
|
103
|
+
features/test.feature:17
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
Scenario: Run with limited tag count using negative tag, blowing it via a tag that is not run
|
|
107
|
+
When I run `cucumber -q --no-source --tags ~@one:1 features/test.feature`
|
|
108
|
+
Then it fails before running features with:
|
|
109
|
+
"""
|
|
110
|
+
@one occurred 2 times, but the limit was set to 1
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
Scenario: Limiting with tags which do not exist in the features
|
|
114
|
+
Originally added to check [Lighthouse bug #464](https://rspec.lighthouseapp.com/projects/16211/tickets/464).
|
|
115
|
+
|
|
116
|
+
When I run `cucumber -q -t @i_dont_exist features/test.feature`
|
|
117
|
+
Then it should pass
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Feature: Randomize
|
|
2
|
+
|
|
3
|
+
Use the `--order random` switch to run scenarios in random order.
|
|
4
|
+
|
|
5
|
+
This is especially helpful for detecting situations where you have state
|
|
6
|
+
leaking between scenarios, which can cause flickering or fragile tests.
|
|
7
|
+
|
|
8
|
+
If you do find a randmon run that exposes dependencies between your tests,
|
|
9
|
+
you can reproduce that run by using the seed that's printed at the end of
|
|
10
|
+
the test run.
|
|
11
|
+
|
|
12
|
+
Background:
|
|
13
|
+
Given a file named "features/bad_practice.feature" with:
|
|
14
|
+
"""
|
|
15
|
+
Feature: Bad practice
|
|
16
|
+
|
|
17
|
+
Scenario: Set state
|
|
18
|
+
Given I set some state
|
|
19
|
+
|
|
20
|
+
Scenario: Depend on state
|
|
21
|
+
When I depend on the state
|
|
22
|
+
"""
|
|
23
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
24
|
+
"""
|
|
25
|
+
Given(/^I set some state$/) do
|
|
26
|
+
$global_state = "set"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
Given(/^I depend on the state$/) do
|
|
30
|
+
raise "I expect the state to be set!" unless $global_state == "set"
|
|
31
|
+
end
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
Scenario: Run scenarios in order
|
|
35
|
+
When I run `cucumber`
|
|
36
|
+
Then it should pass
|
|
37
|
+
|
|
38
|
+
@spawn
|
|
39
|
+
Scenario: Run scenarios randomized
|
|
40
|
+
When I run `cucumber --order random:41515`
|
|
41
|
+
Then it should fail
|
|
42
|
+
And the stdout should contain:
|
|
43
|
+
"""
|
|
44
|
+
Randomized with seed 41515
|
|
45
|
+
"""
|
|
46
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Feature: Requiring extra step files
|
|
2
|
+
|
|
3
|
+
Cucumber allows you to require extra files using the `-r` option.
|
|
4
|
+
|
|
5
|
+
Scenario:
|
|
6
|
+
Given a file named "features/test.feature" with:
|
|
7
|
+
"""
|
|
8
|
+
Feature: Sample
|
|
9
|
+
Scenario: Sample
|
|
10
|
+
Given found in extra file
|
|
11
|
+
"""
|
|
12
|
+
And a file named "tmp/extras.rb" with:
|
|
13
|
+
"""
|
|
14
|
+
Given(/^found in extra file$/) { }
|
|
15
|
+
"""
|
|
16
|
+
When I run `cucumber -q -r tmp/extras.rb features/test.feature`
|
|
17
|
+
Then it should pass with:
|
|
18
|
+
"""
|
|
19
|
+
Feature: Sample
|
|
20
|
+
|
|
21
|
+
Scenario: Sample
|
|
22
|
+
Given found in extra file
|
|
23
|
+
|
|
24
|
+
1 scenario (1 passed)
|
|
25
|
+
1 step (1 passed)
|
|
26
|
+
"""
|
|
27
|
+
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
Feature: Run feature elements matching a name with --name/-n
|
|
2
|
+
|
|
3
|
+
The `--name NAME` option runs only scenarios which match a certain
|
|
4
|
+
name. The NAME can be a substring of the names of Features, Scenarios,
|
|
5
|
+
Scenario Outlines or Example blocks.
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given a file named "features/first.feature" with:
|
|
9
|
+
"""
|
|
10
|
+
Feature: first feature
|
|
11
|
+
Scenario: foo first
|
|
12
|
+
Given missing
|
|
13
|
+
Scenario: bar first
|
|
14
|
+
Given missing
|
|
15
|
+
"""
|
|
16
|
+
Given a file named "features/second.feature" with:
|
|
17
|
+
"""
|
|
18
|
+
Feature: second
|
|
19
|
+
Scenario: foo second
|
|
20
|
+
Given missing
|
|
21
|
+
Scenario: bar second
|
|
22
|
+
Given missing
|
|
23
|
+
"""
|
|
24
|
+
Given a file named "features/outline.feature" with:
|
|
25
|
+
"""
|
|
26
|
+
Feature: outline
|
|
27
|
+
Scenario Outline: baz outline
|
|
28
|
+
Given outline step <name>
|
|
29
|
+
|
|
30
|
+
Examples: quux example
|
|
31
|
+
| name |
|
|
32
|
+
| a |
|
|
33
|
+
| b |
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
Scenario: Matching Feature names
|
|
37
|
+
When I run `cucumber -q --name feature`
|
|
38
|
+
Then it should pass with:
|
|
39
|
+
"""
|
|
40
|
+
Feature: first feature
|
|
41
|
+
|
|
42
|
+
Scenario: foo first
|
|
43
|
+
Given missing
|
|
44
|
+
|
|
45
|
+
Scenario: bar first
|
|
46
|
+
Given missing
|
|
47
|
+
|
|
48
|
+
2 scenarios (2 undefined)
|
|
49
|
+
2 steps (2 undefined)
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
Scenario: Matching Scenario names
|
|
53
|
+
When I run `cucumber -q --name foo`
|
|
54
|
+
Then it should pass with:
|
|
55
|
+
"""
|
|
56
|
+
Feature: first feature
|
|
57
|
+
|
|
58
|
+
Scenario: foo first
|
|
59
|
+
Given missing
|
|
60
|
+
|
|
61
|
+
Feature: second
|
|
62
|
+
|
|
63
|
+
Scenario: foo second
|
|
64
|
+
Given missing
|
|
65
|
+
|
|
66
|
+
2 scenarios (2 undefined)
|
|
67
|
+
2 steps (2 undefined)
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
Scenario: Matching Scenario Outline names
|
|
71
|
+
When I run `cucumber -q --name baz`
|
|
72
|
+
Then it should pass with:
|
|
73
|
+
"""
|
|
74
|
+
Feature: outline
|
|
75
|
+
|
|
76
|
+
Scenario Outline: baz outline
|
|
77
|
+
Given outline step <name>
|
|
78
|
+
|
|
79
|
+
Examples: quux example
|
|
80
|
+
| name |
|
|
81
|
+
| a |
|
|
82
|
+
| b |
|
|
83
|
+
|
|
84
|
+
2 scenarios (2 undefined)
|
|
85
|
+
2 steps (2 undefined)
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
Scenario: Matching Example block names
|
|
89
|
+
When I run `cucumber -q --name quux`
|
|
90
|
+
Then it should pass with:
|
|
91
|
+
"""
|
|
92
|
+
Feature: outline
|
|
93
|
+
|
|
94
|
+
Scenario Outline: baz outline
|
|
95
|
+
Given outline step <name>
|
|
96
|
+
|
|
97
|
+
Examples: quux example
|
|
98
|
+
| name |
|
|
99
|
+
| a |
|
|
100
|
+
| b |
|
|
101
|
+
|
|
102
|
+
2 scenarios (2 undefined)
|
|
103
|
+
2 steps (2 undefined)
|
|
104
|
+
"""
|