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
|
@@ -9,20 +9,22 @@ module Cli
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def given_cucumber_yml_defined_as(hash_or_string)
|
|
12
|
-
File.
|
|
12
|
+
allow(File).to receive(:exist?) { true }
|
|
13
|
+
|
|
13
14
|
cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
|
|
14
|
-
|
|
15
|
+
|
|
16
|
+
allow(IO).to receive(:read).with('cucumber.yml') { cucumber_yml }
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
def given_the_following_files(*files)
|
|
18
|
-
File.
|
|
19
|
-
File.
|
|
20
|
-
Dir.
|
|
20
|
+
allow(File).to receive(:directory?) { true }
|
|
21
|
+
allow(File).to receive(:file?) { true }
|
|
22
|
+
allow(Dir).to receive(:[]) { files }
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
before(:each) do
|
|
24
|
-
File.
|
|
25
|
-
Kernel.
|
|
26
|
+
allow(File).to receive(:exist?) { false } # Meaning, no cucumber.yml exists
|
|
27
|
+
allow(Kernel).to receive(:exit)
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
def config
|
|
@@ -35,34 +37,34 @@ module Cli
|
|
|
35
37
|
|
|
36
38
|
attr_reader :out, :error
|
|
37
39
|
|
|
38
|
-
it "
|
|
40
|
+
it "requires env.rb files first" do
|
|
39
41
|
given_the_following_files("/features/support/a_file.rb","/features/support/env.rb")
|
|
40
42
|
|
|
41
43
|
config.parse!(%w{--require /features})
|
|
42
44
|
|
|
43
|
-
config.support_to_load.
|
|
45
|
+
expect(config.support_to_load).to eq [
|
|
44
46
|
"/features/support/env.rb",
|
|
45
47
|
"/features/support/a_file.rb"
|
|
46
48
|
]
|
|
47
49
|
end
|
|
48
50
|
|
|
49
|
-
it "
|
|
51
|
+
it "does not require env.rb files when --dry-run" do
|
|
50
52
|
given_the_following_files("/features/support/a_file.rb","/features/support/env.rb")
|
|
51
53
|
|
|
52
54
|
config.parse!(%w{--require /features --dry-run})
|
|
53
55
|
|
|
54
|
-
config.support_to_load.
|
|
56
|
+
expect(config.support_to_load).to eq [
|
|
55
57
|
"/features/support/a_file.rb"
|
|
56
58
|
]
|
|
57
59
|
end
|
|
58
60
|
|
|
59
|
-
it "
|
|
61
|
+
it "requires files in vendor/{plugins,gems}/*/cucumber/*.rb" do
|
|
60
62
|
given_the_following_files("/vendor/gems/gem_a/cucumber/bar.rb",
|
|
61
63
|
"/vendor/plugins/plugin_a/cucumber/foo.rb")
|
|
62
64
|
|
|
63
65
|
config.parse!(%w{--require /features})
|
|
64
66
|
|
|
65
|
-
config.step_defs_to_load.
|
|
67
|
+
expect(config.step_defs_to_load).to eq [
|
|
66
68
|
"/vendor/gems/gem_a/cucumber/bar.rb",
|
|
67
69
|
"/vendor/plugins/plugin_a/cucumber/foo.rb"
|
|
68
70
|
]
|
|
@@ -75,7 +77,7 @@ module Cli
|
|
|
75
77
|
|
|
76
78
|
config.parse!(%w{--require /features --exclude a_file.rb})
|
|
77
79
|
|
|
78
|
-
config.all_files_to_load.
|
|
80
|
+
expect(config.all_files_to_load).to eq [
|
|
79
81
|
"/features/support/env.rb"
|
|
80
82
|
]
|
|
81
83
|
end
|
|
@@ -87,43 +89,19 @@ module Cli
|
|
|
87
89
|
|
|
88
90
|
config.parse!(%w{--require /features --exclude foo[df] --exclude blah})
|
|
89
91
|
|
|
90
|
-
config.all_files_to_load.
|
|
92
|
+
expect(config.all_files_to_load).to eq [
|
|
91
93
|
"/features/support/bar.rb",
|
|
92
94
|
"/features/support/fooz.rb"
|
|
93
95
|
]
|
|
94
96
|
end
|
|
95
97
|
end
|
|
96
98
|
|
|
97
|
-
describe '#drb?' do
|
|
98
|
-
it "indicates whether the --drb flag was passed in or not" do
|
|
99
|
-
config.parse!(%w{features})
|
|
100
|
-
config.should_not be_drb
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
config.parse!(%w{features --drb})
|
|
104
|
-
config.should be_drb
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
describe "#drb_port" do
|
|
109
|
-
it "is nil when not configured" do
|
|
110
|
-
config.parse!([])
|
|
111
|
-
config.drb_port.should be_nil
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
it "is numeric when configured" do
|
|
115
|
-
config.parse!(%w{features --port 1000})
|
|
116
|
-
config.drb_port.should == 1000
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
end
|
|
121
|
-
|
|
122
99
|
it "uses the default profile when no profile is defined" do
|
|
123
100
|
given_cucumber_yml_defined_as({'default' => '--require some_file'})
|
|
124
101
|
|
|
125
102
|
config.parse!(%w{--format progress})
|
|
126
|
-
|
|
103
|
+
|
|
104
|
+
expect(config.options[:require]).to include('some_file')
|
|
127
105
|
end
|
|
128
106
|
|
|
129
107
|
context '--profile' do
|
|
@@ -133,29 +111,33 @@ module Cli
|
|
|
133
111
|
given_cucumber_yml_defined_as({'bongo' => '--require from/yml'})
|
|
134
112
|
|
|
135
113
|
config.parse!(%w{--format progress --profile bongo})
|
|
136
|
-
|
|
137
|
-
config.options[:
|
|
114
|
+
|
|
115
|
+
expect(config.options[:formats]).to eq [['progress', out]]
|
|
116
|
+
expect(config.options[:require]).to eq ['from/yml']
|
|
138
117
|
end
|
|
139
118
|
|
|
140
119
|
it "expands args from the default profile when no flags are provided" do
|
|
141
120
|
given_cucumber_yml_defined_as({'default' => '--require from/yml'})
|
|
142
121
|
|
|
143
122
|
config.parse!([])
|
|
144
|
-
|
|
123
|
+
|
|
124
|
+
expect(config.options[:require]).to eq ['from/yml']
|
|
145
125
|
end
|
|
146
126
|
|
|
147
127
|
it "allows --strict to be set by a profile" do
|
|
148
128
|
given_cucumber_yml_defined_as({'bongo' => '--strict'})
|
|
149
129
|
|
|
150
130
|
config.parse!(%w{--profile bongo})
|
|
151
|
-
|
|
131
|
+
|
|
132
|
+
expect(config.options[:strict]).to be true
|
|
152
133
|
end
|
|
153
134
|
|
|
154
135
|
it "parses ERB syntax in the cucumber.yml file" do
|
|
155
136
|
given_cucumber_yml_defined_as("---\ndefault: \"<%=\"--require some_file\"%>\"\n")
|
|
156
137
|
|
|
157
138
|
config.parse!([])
|
|
158
|
-
|
|
139
|
+
|
|
140
|
+
expect(config.options[:require]).to include('some_file')
|
|
159
141
|
end
|
|
160
142
|
|
|
161
143
|
it "parses ERB in cucumber.yml that makes uses nested ERB sessions" do
|
|
@@ -165,7 +147,8 @@ module Cli
|
|
|
165
147
|
ERB_YML
|
|
166
148
|
|
|
167
149
|
config.parse!(%w(-p standard))
|
|
168
|
-
|
|
150
|
+
|
|
151
|
+
expect(config.options[:require]).to include('some_file')
|
|
169
152
|
end
|
|
170
153
|
|
|
171
154
|
it "provides a helpful error message when a specified profile does not exists in cucumber.yml" do
|
|
@@ -179,23 +162,23 @@ Defined profiles in cucumber.yml:
|
|
|
179
162
|
* html_report
|
|
180
163
|
END_OF_MESSAGE
|
|
181
164
|
|
|
182
|
-
|
|
165
|
+
expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(ProfileNotFound, expected_message)
|
|
183
166
|
end
|
|
184
167
|
|
|
185
168
|
it "allows profiles to be defined in arrays" do
|
|
186
169
|
given_cucumber_yml_defined_as({'foo' => ['-f','progress']})
|
|
187
170
|
|
|
188
171
|
config.parse!(%w{--profile foo})
|
|
189
|
-
|
|
172
|
+
|
|
173
|
+
expect(config.options[:formats]).to eq [['progress', out]]
|
|
190
174
|
end
|
|
191
175
|
|
|
192
176
|
it "disregards default STDOUT formatter defined in profile when another is passed in (via cmd line)" do
|
|
193
177
|
given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
|
|
194
178
|
config.parse!(%w{--format progress --profile foo})
|
|
195
|
-
config.options[:formats].should == [['progress', out]]#, ['pretty', 'pretty.txt']]
|
|
196
|
-
end
|
|
197
|
-
|
|
198
179
|
|
|
180
|
+
expect(config.options[:formats]).to eq [['progress', out]]
|
|
181
|
+
end
|
|
199
182
|
|
|
200
183
|
["--no-profile", "-P"].each do |flag|
|
|
201
184
|
context 'when none is specified with #{flag}' do
|
|
@@ -203,14 +186,16 @@ END_OF_MESSAGE
|
|
|
203
186
|
given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
|
|
204
187
|
|
|
205
188
|
config.parse!("#{flag} --require some_file.rb".split(" "))
|
|
206
|
-
|
|
189
|
+
|
|
190
|
+
expect(config.options[:require]).to eq ['some_file.rb']
|
|
207
191
|
end
|
|
208
192
|
|
|
209
193
|
it "notifies the user that the profiles are being disabled" do
|
|
210
194
|
given_cucumber_yml_defined_as({'default' => '-v'})
|
|
211
195
|
|
|
212
196
|
config.parse!("#{flag} --require some_file.rb".split(" "))
|
|
213
|
-
|
|
197
|
+
|
|
198
|
+
expect(out.string).to match /Disabling profiles.../
|
|
214
199
|
end
|
|
215
200
|
end
|
|
216
201
|
end
|
|
@@ -220,15 +205,17 @@ END_OF_MESSAGE
|
|
|
220
205
|
given_cucumber_yml_defined_as({'foo' => bad_input})
|
|
221
206
|
|
|
222
207
|
expected_error = /The 'foo' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml./
|
|
223
|
-
|
|
208
|
+
|
|
209
|
+
expect(-> { config.parse!(%w{--profile foo}) }).to raise_error(expected_error)
|
|
224
210
|
end
|
|
225
211
|
end
|
|
226
212
|
|
|
227
213
|
it "issues a helpful error message when no YAML file exists and a profile is specified" do
|
|
228
|
-
File.
|
|
214
|
+
expect(File).to receive(:exist?).with('cucumber.yml') { false }
|
|
229
215
|
|
|
230
216
|
expected_error = /cucumber\.yml was not found/
|
|
231
|
-
|
|
217
|
+
|
|
218
|
+
expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(expected_error)
|
|
232
219
|
end
|
|
233
220
|
|
|
234
221
|
it "issues a helpful error message when cucumber.yml is blank or malformed" do
|
|
@@ -236,7 +223,9 @@ END_OF_MESSAGE
|
|
|
236
223
|
|
|
237
224
|
['', 'sfsadfs', "--- \n- an\n- array\n", "---dddfd"].each do |bad_input|
|
|
238
225
|
given_cucumber_yml_defined_as(bad_input)
|
|
239
|
-
|
|
226
|
+
|
|
227
|
+
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
|
228
|
+
|
|
240
229
|
reset_config
|
|
241
230
|
end
|
|
242
231
|
end
|
|
@@ -245,104 +234,109 @@ END_OF_MESSAGE
|
|
|
245
234
|
expected_error_message = /cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentation on correct profile usage./
|
|
246
235
|
|
|
247
236
|
given_cucumber_yml_defined_as("input that causes an exception in YAML loading")
|
|
248
|
-
YAML.should_receive(:load).and_raise ArgumentError
|
|
249
237
|
|
|
250
|
-
|
|
238
|
+
expect(YAML).to receive(:load).and_raise(ArgumentError)
|
|
239
|
+
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
|
251
240
|
end
|
|
252
241
|
|
|
253
242
|
it "issues a helpful error message when cucumber.yml can not be parsed by ERB" do
|
|
254
243
|
expected_error_message = /cucumber.yml was found, but could not be parsed with ERB. Please refer to cucumber's documentation on correct profile usage./
|
|
255
244
|
given_cucumber_yml_defined_as("<% this_fails %>")
|
|
256
245
|
|
|
257
|
-
|
|
246
|
+
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
|
258
247
|
end
|
|
259
248
|
end
|
|
260
249
|
|
|
261
|
-
|
|
262
|
-
it "should accept --dry-run option" do
|
|
250
|
+
it "accepts --dry-run option" do
|
|
263
251
|
config.parse!(%w{--dry-run})
|
|
264
|
-
|
|
252
|
+
|
|
253
|
+
expect(config.options[:dry_run]).to be true
|
|
265
254
|
end
|
|
266
255
|
|
|
267
|
-
it "
|
|
256
|
+
it "accepts --no-source option" do
|
|
268
257
|
config.parse!(%w{--no-source})
|
|
269
258
|
|
|
270
|
-
config.options[:source].
|
|
259
|
+
expect(config.options[:source]).to be false
|
|
271
260
|
end
|
|
272
261
|
|
|
273
|
-
it "
|
|
262
|
+
it "accepts --no-snippets option" do
|
|
274
263
|
config.parse!(%w{--no-snippets})
|
|
275
264
|
|
|
276
|
-
config.options[:snippets].
|
|
265
|
+
expect(config.options[:snippets]).to be false
|
|
277
266
|
end
|
|
278
267
|
|
|
279
|
-
it "
|
|
268
|
+
it "sets snippets and source to false with --quiet option" do
|
|
280
269
|
config.parse!(%w{--quiet})
|
|
281
270
|
|
|
282
|
-
config.options[:snippets].
|
|
283
|
-
config.options[:source].
|
|
271
|
+
expect(config.options[:snippets]).to be false
|
|
272
|
+
expect(config.options[:source]).to be false
|
|
284
273
|
end
|
|
285
274
|
|
|
286
|
-
it "
|
|
275
|
+
it "accepts --verbose option" do
|
|
287
276
|
config.parse!(%w{--verbose})
|
|
288
277
|
|
|
289
|
-
config.options[:verbose].
|
|
278
|
+
expect(config.options[:verbose]).to be true
|
|
290
279
|
end
|
|
291
280
|
|
|
292
|
-
it "
|
|
281
|
+
it "accepts --out option" do
|
|
293
282
|
config.parse!(%w{--out jalla.txt})
|
|
294
|
-
|
|
283
|
+
|
|
284
|
+
expect(config.formats).to eq [['pretty', 'jalla.txt']]
|
|
295
285
|
end
|
|
296
286
|
|
|
297
|
-
it "
|
|
287
|
+
it "accepts multiple --out options" do
|
|
298
288
|
config.parse!(%w{--format progress --out file1 --out file2})
|
|
299
|
-
|
|
289
|
+
|
|
290
|
+
expect(config.formats).to eq [['progress', 'file2']]
|
|
300
291
|
end
|
|
301
292
|
|
|
302
|
-
it "
|
|
293
|
+
it "accepts multiple --format options and put the STDOUT one first so progress is seen" do
|
|
303
294
|
config.parse!(%w{--format pretty --out pretty.txt --format progress})
|
|
304
|
-
|
|
295
|
+
|
|
296
|
+
expect(config.formats).to eq [['progress', out], ['pretty', 'pretty.txt']]
|
|
305
297
|
end
|
|
306
298
|
|
|
307
|
-
it "
|
|
308
|
-
|
|
309
|
-
config.parse!(%w{--format pretty --format progress})
|
|
310
|
-
end.should raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
|
|
299
|
+
it "does not accept multiple --format options when both use implicit STDOUT" do
|
|
300
|
+
expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
|
|
311
301
|
end
|
|
312
302
|
|
|
313
|
-
it "
|
|
303
|
+
it "accepts same --format options with implicit STDOUT, and keep only one" do
|
|
314
304
|
config.parse!(%w{--format pretty --format pretty})
|
|
315
|
-
|
|
305
|
+
|
|
306
|
+
expect(config.formats).to eq [["pretty", out]]
|
|
316
307
|
end
|
|
317
308
|
|
|
318
|
-
it "
|
|
319
|
-
|
|
320
|
-
config.parse!(%w{--format pretty --out file1 --format progress --out file1})
|
|
321
|
-
end.should raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
|
|
309
|
+
it "does not accept multiple --out streams pointing to the same place" do
|
|
310
|
+
expect(-> { config.parse!(%w{--format pretty --out file1 --format progress --out file1}) }).to raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
|
|
322
311
|
end
|
|
323
312
|
|
|
324
|
-
it "
|
|
313
|
+
it "associates --out to previous --format" do
|
|
325
314
|
config.parse!(%w{--format progress --out file1 --format profile --out file2})
|
|
326
|
-
|
|
315
|
+
|
|
316
|
+
expect(config.formats).to eq [["progress", "file1"], ["profile" ,"file2"]]
|
|
327
317
|
end
|
|
328
318
|
|
|
329
|
-
it "
|
|
319
|
+
it "accepts same --format options with same --out streams and keep only one" do
|
|
330
320
|
config.parse!(%w{--format html --out file --format pretty --format html --out file})
|
|
331
|
-
|
|
321
|
+
|
|
322
|
+
expect(config.formats).to eq [["pretty", out], ["html", "file"]]
|
|
332
323
|
end
|
|
333
324
|
|
|
334
|
-
it "
|
|
325
|
+
it "accepts same --format options with different --out streams" do
|
|
335
326
|
config.parse!(%w{--format html --out file1 --format html --out file2})
|
|
336
|
-
|
|
327
|
+
|
|
328
|
+
expect(config.formats).to eq [["html", "file1"], ["html", "file2"]]
|
|
337
329
|
end
|
|
338
330
|
|
|
339
|
-
it "
|
|
340
|
-
Cucumber::Term::ANSIColor.
|
|
331
|
+
it "accepts --color option" do
|
|
332
|
+
expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(true)
|
|
333
|
+
|
|
341
334
|
config.parse!(['--color'])
|
|
342
335
|
end
|
|
343
336
|
|
|
344
|
-
it "
|
|
345
|
-
Cucumber::Term::ANSIColor.
|
|
337
|
+
it "accepts --no-color option" do
|
|
338
|
+
expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(false)
|
|
339
|
+
|
|
346
340
|
config = Configuration.new(StringIO.new)
|
|
347
341
|
config.parse!(['--no-color'])
|
|
348
342
|
end
|
|
@@ -352,12 +346,12 @@ END_OF_MESSAGE
|
|
|
352
346
|
Cucumber.use_full_backtrace = false
|
|
353
347
|
end
|
|
354
348
|
|
|
355
|
-
it "
|
|
356
|
-
|
|
349
|
+
it "shows full backtrace when --backtrace is present" do
|
|
350
|
+
Main.new(['--backtrace'])
|
|
357
351
|
begin
|
|
358
|
-
"x".
|
|
359
|
-
rescue => e
|
|
360
|
-
e.backtrace[0].
|
|
352
|
+
expect("x").to eq "y"
|
|
353
|
+
rescue RSpec::Expectations::ExpectationNotMetError => e
|
|
354
|
+
expect(e.backtrace[0]).not_to eq "#{__FILE__}:#{__LINE__ - 2}"
|
|
361
355
|
end
|
|
362
356
|
end
|
|
363
357
|
|
|
@@ -366,57 +360,72 @@ END_OF_MESSAGE
|
|
|
366
360
|
end
|
|
367
361
|
end
|
|
368
362
|
|
|
369
|
-
it "
|
|
363
|
+
it "accepts multiple --name options" do
|
|
370
364
|
config.parse!(['--name', "User logs in", '--name', "User signs up"])
|
|
371
365
|
|
|
372
|
-
config.options[:name_regexps].
|
|
373
|
-
config.options[:name_regexps].
|
|
366
|
+
expect(config.options[:name_regexps]).to include(/User logs in/)
|
|
367
|
+
expect(config.options[:name_regexps]).to include(/User signs up/)
|
|
374
368
|
end
|
|
375
369
|
|
|
376
|
-
it "
|
|
370
|
+
it "accepts multiple -n options" do
|
|
377
371
|
config.parse!(['-n', "User logs in", '-n', "User signs up"])
|
|
378
372
|
|
|
379
|
-
config.options[:name_regexps].
|
|
380
|
-
config.options[:name_regexps].
|
|
373
|
+
expect(config.options[:name_regexps]).to include(/User logs in/)
|
|
374
|
+
expect(config.options[:name_regexps]).to include(/User signs up/)
|
|
381
375
|
end
|
|
382
376
|
|
|
383
|
-
it "
|
|
377
|
+
it "preserves the order of the feature files" do
|
|
384
378
|
config.parse!(%w{b.feature c.feature a.feature})
|
|
385
379
|
|
|
386
|
-
config.feature_files.
|
|
380
|
+
expect(config.feature_files).to eq ["b.feature", "c.feature", "a.feature"]
|
|
387
381
|
end
|
|
388
382
|
|
|
389
|
-
it "
|
|
390
|
-
File.
|
|
391
|
-
Dir.
|
|
392
|
-
and_return(["cucumber.feature"])
|
|
383
|
+
it "searchs for all features in the specified directory" do
|
|
384
|
+
allow(File).to receive(:directory?) { true }
|
|
385
|
+
allow(Dir).to receive(:[]).with("feature_directory/**/*.feature") { ["cucumber.feature"] }
|
|
393
386
|
|
|
394
387
|
config.parse!(%w{feature_directory/})
|
|
395
388
|
|
|
396
|
-
config.feature_files.
|
|
389
|
+
expect(config.feature_files).to eq ["cucumber.feature"]
|
|
397
390
|
end
|
|
398
391
|
|
|
399
392
|
it "defaults to the features directory when no feature file are provided" do
|
|
400
|
-
File.
|
|
401
|
-
Dir.
|
|
402
|
-
and_return(["cucumber.feature"])
|
|
393
|
+
allow(File).to receive(:directory?) { true }
|
|
394
|
+
allow(Dir).to receive(:[]).with("features/**/*.feature") { ["cucumber.feature"] }
|
|
403
395
|
|
|
404
396
|
config.parse!(%w{})
|
|
405
397
|
|
|
406
|
-
config.feature_files.
|
|
398
|
+
expect(config.feature_files).to eq ["cucumber.feature"]
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
it "gets the feature files from the rerun file" do
|
|
402
|
+
allow(File).to receive(:directory?).and_return(false)
|
|
403
|
+
allow(File).to receive(:file?).and_return(true)
|
|
404
|
+
allow(IO).to receive(:read).and_return(
|
|
405
|
+
"cucumber.feature:1:3 cucumber space.feature:134 domain folder/cuke.feature:1 domain folder/different cuke:4:5" )
|
|
406
|
+
|
|
407
|
+
config.parse!(%w{@rerun.txt})
|
|
408
|
+
|
|
409
|
+
expect(config.feature_files).to eq [
|
|
410
|
+
"cucumber.feature:1:3",
|
|
411
|
+
"cucumber space.feature:134",
|
|
412
|
+
"domain folder/cuke.feature:1",
|
|
413
|
+
"domain folder/different cuke:4:5"]
|
|
407
414
|
end
|
|
408
415
|
|
|
409
416
|
it "should allow specifying environment variables on the command line" do
|
|
410
417
|
config.parse!(["foo=bar"])
|
|
411
|
-
|
|
412
|
-
|
|
418
|
+
|
|
419
|
+
expect(ENV["foo"]).to eq "bar"
|
|
420
|
+
expect(config.feature_files).not_to include('foo=bar')
|
|
413
421
|
end
|
|
414
422
|
|
|
415
|
-
it "
|
|
423
|
+
it "allows specifying environment variables in profiles" do
|
|
416
424
|
given_cucumber_yml_defined_as({'selenium' => 'RAILS_ENV=selenium'})
|
|
417
425
|
config.parse!(["--profile", "selenium"])
|
|
418
|
-
|
|
419
|
-
|
|
426
|
+
|
|
427
|
+
expect(ENV["RAILS_ENV"]).to eq "selenium"
|
|
428
|
+
expect(config.feature_files).not_to include('RAILS_ENV=selenium')
|
|
420
429
|
end
|
|
421
430
|
|
|
422
431
|
describe "#tag_expression" do
|
|
@@ -424,47 +433,69 @@ END_OF_MESSAGE
|
|
|
424
433
|
|
|
425
434
|
it "returns an empty expression when no tags are specified" do
|
|
426
435
|
config.parse!([])
|
|
427
|
-
|
|
436
|
+
|
|
437
|
+
expect(config.tag_expression).to be_empty
|
|
428
438
|
end
|
|
429
439
|
|
|
430
440
|
it "returns an expression when tags are specified" do
|
|
431
441
|
config.parse!(['--tags','@foo'])
|
|
432
|
-
|
|
442
|
+
|
|
443
|
+
expect(config.tag_expression).not_to be_empty
|
|
444
|
+
end
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
describe '#tag_limits' do
|
|
448
|
+
it "returns an empty hash when no limits are specified" do
|
|
449
|
+
config.parse!([])
|
|
450
|
+
|
|
451
|
+
expect(config.tag_limits).to eq({ })
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
it "returns a hash of limits when limits are specified" do
|
|
455
|
+
config.parse!(['--tags','@foo:1'])
|
|
456
|
+
|
|
457
|
+
expect(config.tag_limits).to eq({ "@foo" => 1 })
|
|
433
458
|
end
|
|
434
459
|
end
|
|
435
460
|
|
|
436
461
|
describe "#dry_run?" do
|
|
437
462
|
it "returns true when --dry-run was specified on in the arguments" do
|
|
438
463
|
config.parse!(['--dry-run'])
|
|
439
|
-
|
|
464
|
+
|
|
465
|
+
expect(config.dry_run?).to be true
|
|
440
466
|
end
|
|
441
467
|
|
|
442
468
|
it "returns true when --dry-run was specified in yaml file" do
|
|
443
469
|
given_cucumber_yml_defined_as({'default' => '--dry-run'})
|
|
444
470
|
config.parse!([])
|
|
445
|
-
|
|
471
|
+
|
|
472
|
+
expect(config.dry_run?).to be true
|
|
446
473
|
end
|
|
447
474
|
|
|
448
475
|
it "returns false by default" do
|
|
449
476
|
config.parse!([])
|
|
450
|
-
|
|
477
|
+
|
|
478
|
+
expect(config.dry_run?).to be false
|
|
451
479
|
end
|
|
452
480
|
end
|
|
453
481
|
|
|
454
482
|
describe "#snippet_type" do
|
|
455
483
|
it "returns the snippet type when it was set" do
|
|
456
484
|
config.parse!(["--snippet-type", "classic"])
|
|
457
|
-
|
|
485
|
+
|
|
486
|
+
expect(config.snippet_type).to eq :classic
|
|
458
487
|
end
|
|
459
488
|
|
|
460
489
|
it "returns the snippet type when it was set with shorthand option" do
|
|
461
490
|
config.parse!(["-I", "classic"])
|
|
462
|
-
|
|
491
|
+
|
|
492
|
+
expect(config.snippet_type).to eq :classic
|
|
463
493
|
end
|
|
464
494
|
|
|
465
495
|
it "returns the default snippet type if it was not set" do
|
|
466
496
|
config.parse!([])
|
|
467
|
-
|
|
497
|
+
|
|
498
|
+
expect(config.snippet_type).to eq :regexp
|
|
468
499
|
end
|
|
469
500
|
end
|
|
470
501
|
end
|