cucumber 3.0.1 → 3.0.2
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/CHANGELOG.md +32 -4
- data/README.md +6 -5
- data/lib/cucumber/cli/options.rb +3 -1
- data/lib/cucumber/errors.rb +1 -1
- data/lib/cucumber/events.rb +0 -1
- data/lib/cucumber/events/test_step_finished.rb +0 -2
- data/lib/cucumber/events/test_step_started.rb +0 -2
- data/lib/cucumber/filters/quit.rb +0 -1
- data/lib/cucumber/formatter/html.rb +1 -1
- data/lib/cucumber/formatter/html_builder.rb +1 -1
- data/lib/cucumber/formatter/ignore_missing_messages.rb +0 -1
- data/lib/cucumber/formatter/json.rb +1 -1
- data/lib/cucumber/formatter/json_pretty.rb +0 -1
- data/lib/cucumber/formatter/rerun.rb +1 -1
- data/lib/cucumber/formatter/summary.rb +0 -1
- data/lib/cucumber/glue/proto_world.rb +2 -0
- data/lib/cucumber/glue/world_factory.rb +1 -1
- data/lib/cucumber/multiline_argument.rb +1 -1
- data/lib/cucumber/multiline_argument/data_table.rb +6 -10
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +0 -1
- data/lib/cucumber/step_definitions.rb +1 -1
- data/lib/cucumber/step_match.rb +1 -1
- data/lib/cucumber/step_match_search.rb +1 -1
- data/lib/cucumber/version +1 -1
- metadata +25 -563
- data/.coveralls.yml +0 -1
- data/.cucumberproignore +0 -6
- data/.gitattributes +0 -32
- data/.github/ISSUE_TEMPLATE.md +0 -48
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -40
- data/.rspec +0 -1
- data/.rubocop.yml +0 -13
- data/.rubocop_todo.yml +0 -991
- data/.ruby-gemset +0 -1
- data/.travis.yml +0 -70
- data/.yardopts +0 -1
- data/Gemfile +0 -28
- data/Rakefile +0 -32
- data/appveyor.yml +0 -27
- data/cucumber.gemspec +0 -52
- data/cucumber.yml +0 -19
- data/examples/i18n/README.textile +0 -3
- data/examples/i18n/Rakefile +0 -33
- data/examples/i18n/ar/Rakefile +0 -6
- data/examples/i18n/ar/features/addition.feature +0 -17
- data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/ar/lib/calculator.rb +0 -11
- data/examples/i18n/bg/Rakefile +0 -6
- data/examples/i18n/bg/features/addition.feature +0 -12
- data/examples/i18n/bg/features/consecutive_calculations.feature +0 -19
- data/examples/i18n/bg/features/division.feature +0 -17
- data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +0 -24
- data/examples/i18n/bg/features/support/env.rb +0 -10
- data/examples/i18n/bg/features/support/world.rb +0 -8
- data/examples/i18n/bg/lib/calculator.rb +0 -25
- data/examples/i18n/ca/Rakefile +0 -6
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -26
- data/examples/i18n/ca/features/suma.feature +0 -17
- data/examples/i18n/ca/lib/calculadora.rb +0 -16
- data/examples/i18n/cs/Rakefile +0 -6
- data/examples/i18n/cs/features/addition.feature +0 -17
- data/examples/i18n/cs/features/division.feature +0 -11
- data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/cs/lib/calculator.rb +0 -14
- data/examples/i18n/da/Rakefile +0 -6
- data/examples/i18n/da/features/sammenlaegning.feature +0 -18
- data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +0 -29
- data/examples/i18n/da/lib/lommeregner.rb +0 -11
- data/examples/i18n/de/Rakefile +0 -6
- data/examples/i18n/de/features/addition.feature +0 -17
- data/examples/i18n/de/features/division.feature +0 -10
- data/examples/i18n/de/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/de/lib/calculator.rb +0 -14
- data/examples/i18n/el/Rakefile +0 -6
- data/examples/i18n/el/features/addition.feature +0 -17
- data/examples/i18n/el/features/division.feature +0 -10
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/el/lib/calculator.rb +0 -14
- data/examples/i18n/en-lol/Rakefile +0 -4
- data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +0 -16
- data/examples/i18n/en-lol/features/stuffing.feature +0 -8
- data/examples/i18n/en-lol/features/support/env.rb +0 -11
- data/examples/i18n/en-lol/lib/basket.rb +0 -12
- data/examples/i18n/en-lol/lib/belly.rb +0 -11
- data/examples/i18n/en/Rakefile +0 -6
- data/examples/i18n/en/features/addition.feature +0 -17
- data/examples/i18n/en/features/division.feature +0 -10
- data/examples/i18n/en/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/en/lib/calculator.rb +0 -14
- data/examples/i18n/eo/Rakefile +0 -6
- data/examples/i18n/eo/features/adicio.feature +0 -17
- data/examples/i18n/eo/features/divido.feature +0 -10
- data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/eo/lib/calculator.rb +0 -14
- data/examples/i18n/es/Rakefile +0 -6
- data/examples/i18n/es/features/adicion.feature +0 -17
- data/examples/i18n/es/features/step_definitions/calculador_steps.rb +0 -26
- data/examples/i18n/es/lib/calculador.rb +0 -14
- data/examples/i18n/et/Rakefile +0 -6
- data/examples/i18n/et/features/jagamine.feature +0 -10
- data/examples/i18n/et/features/liitmine.feature +0 -17
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -29
- data/examples/i18n/et/lib/kalkulaator.rb +0 -14
- data/examples/i18n/fi/Rakefile +0 -6
- data/examples/i18n/fi/features/jakolasku.feature +0 -10
- data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +0 -29
- data/examples/i18n/fi/features/yhteenlasku.feature +0 -17
- data/examples/i18n/fi/lib/laskin.rb +0 -14
- data/examples/i18n/fr/Rakefile +0 -8
- data/examples/i18n/fr/features/addition.feature +0 -18
- data/examples/i18n/fr/features/addition2.feature +0 -17
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -32
- data/examples/i18n/fr/features/support/env.rb +0 -10
- data/examples/i18n/fr/lib/calculatrice.rb +0 -10
- data/examples/i18n/he/Rakefile +0 -6
- data/examples/i18n/he/features/addition.feature +0 -17
- data/examples/i18n/he/features/division.feature +0 -10
- data/examples/i18n/he/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/he/lib/calculator.rb +0 -15
- data/examples/i18n/hi/Rakefile +0 -6
- data/examples/i18n/hi/features/addition.feature +0 -16
- data/examples/i18n/hi/features/division.feature +0 -10
- data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/hi/lib/calculator.rb +0 -15
- data/examples/i18n/ht/Rakefile +0 -6
- data/examples/i18n/ht/features/adisyon.feature +0 -17
- data/examples/i18n/ht/features/divizyon.feature +0 -10
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +0 -29
- data/examples/i18n/ht/lib/kalkilatris.rb +0 -14
- data/examples/i18n/hu/Rakefile +0 -6
- data/examples/i18n/hu/features/osszeadas.feature +0 -17
- data/examples/i18n/hu/features/osztas.feature +0 -10
- data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +0 -30
- data/examples/i18n/hu/lib/calculator.rb +0 -14
- data/examples/i18n/id/Rakefile +0 -6
- data/examples/i18n/id/features/addition.feature +0 -17
- data/examples/i18n/id/features/division.feature +0 -10
- data/examples/i18n/id/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/id/lib/calculator.rb +0 -14
- data/examples/i18n/it/Rakefile +0 -6
- data/examples/i18n/it/features/somma.feature +0 -11
- data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +0 -29
- data/examples/i18n/it/lib/calcolatrice.rb +0 -11
- data/examples/i18n/ja/Rakefile +0 -6
- data/examples/i18n/ja/features/addition.feature +0 -17
- data/examples/i18n/ja/features/division.feature +0 -10
- data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +0 -19
- data/examples/i18n/ja/features/support/env.rb +0 -10
- data/examples/i18n/ja/lib/calculator.rb +0 -14
- data/examples/i18n/ko/Rakefile +0 -6
- data/examples/i18n/ko/features/addition.feature +0 -17
- data/examples/i18n/ko/features/division.feature +0 -11
- data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/ko/lib/calculator.rb +0 -14
- data/examples/i18n/lt/Rakefile +0 -6
- data/examples/i18n/lt/features/addition.feature +0 -17
- data/examples/i18n/lt/features/division.feature +0 -10
- data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/lt/lib/calculator.rb +0 -14
- data/examples/i18n/lv/Rakefile +0 -6
- data/examples/i18n/lv/features/addition.feature +0 -17
- data/examples/i18n/lv/features/division.feature +0 -10
- data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/lv/lib/calculator.rb +0 -14
- data/examples/i18n/no/Rakefile +0 -6
- data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +0 -17
- data/examples/i18n/no/features/summering.feature +0 -19
- data/examples/i18n/no/features/support/env.rb +0 -11
- data/examples/i18n/no/lib/kalkulator.rb +0 -11
- data/examples/i18n/pl/Rakefile +0 -6
- data/examples/i18n/pl/features/addition.feature +0 -17
- data/examples/i18n/pl/features/division.feature +0 -10
- data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/pl/features/support/env.rb +0 -10
- data/examples/i18n/pl/lib/calculator.rb +0 -14
- data/examples/i18n/pt/Rakefile +0 -6
- data/examples/i18n/pt/features/adicao.feature +0 -11
- data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -20
- data/examples/i18n/pt/features/support/env.rb +0 -10
- data/examples/i18n/pt/lib/calculadora.rb +0 -10
- data/examples/i18n/ro/Rakefile +0 -6
- data/examples/i18n/ro/features/adunare.feature +0 -12
- data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +0 -26
- data/examples/i18n/ro/lib/calculator.rb +0 -11
- data/examples/i18n/ru/Rakefile +0 -6
- data/examples/i18n/ru/features/addition.feature +0 -11
- data/examples/i18n/ru/features/consecutive_calculations.feature +0 -17
- data/examples/i18n/ru/features/division.feature +0 -16
- data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +0 -19
- data/examples/i18n/ru/features/support/env.rb +0 -10
- data/examples/i18n/ru/features/support/world.rb +0 -8
- data/examples/i18n/ru/lib/calculator.rb +0 -25
- data/examples/i18n/sk/Rakefile +0 -6
- data/examples/i18n/sk/features/addition.feature +0 -17
- data/examples/i18n/sk/features/division.feature +0 -10
- data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/sk/lib/calculator.rb +0 -14
- data/examples/i18n/sr-Cyrl/Rakefile +0 -6
- data/examples/i18n/sr-Cyrl/features/sabiranje.feature +0 -18
- data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +0 -20
- data/examples/i18n/sr-Cyrl/features/support/env.rb +0 -10
- data/examples/i18n/sr-Cyrl/lib/calculator.rb +0 -12
- data/examples/i18n/sr-Latn/Rakefile +0 -6
- data/examples/i18n/sr-Latn/features/sabiranje.feature +0 -18
- data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/sr-Latn/lib/calculator.rb +0 -12
- data/examples/i18n/sv/Rakefile +0 -6
- data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +0 -29
- data/examples/i18n/sv/features/summering.feature +0 -18
- data/examples/i18n/sv/lib/kalkulator.rb +0 -11
- data/examples/i18n/tr/Rakefile +0 -6
- data/examples/i18n/tr/features/bolme.feature +0 -10
- data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +0 -29
- data/examples/i18n/tr/features/toplama.feature +0 -18
- data/examples/i18n/tr/lib/hesap_makinesi.rb +0 -15
- data/examples/i18n/uk/Rakefile +0 -6
- data/examples/i18n/uk/features/addition.feature +0 -11
- data/examples/i18n/uk/features/consecutive_calculations.feature +0 -17
- data/examples/i18n/uk/features/division.feature +0 -16
- data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +0 -19
- data/examples/i18n/uk/features/support/env.rb +0 -10
- data/examples/i18n/uk/features/support/world.rb +0 -8
- data/examples/i18n/uk/lib/calculator.rb +0 -25
- data/examples/i18n/uz/Rakefile +0 -6
- data/examples/i18n/uz/features/addition.feature +0 -10
- data/examples/i18n/uz/features/consecutive_calculations.feature +0 -17
- data/examples/i18n/uz/features/division.feature +0 -17
- data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +0 -19
- data/examples/i18n/uz/features/support/env.rb +0 -10
- data/examples/i18n/uz/features/support/world.rb +0 -8
- data/examples/i18n/uz/lib/calculator.rb +0 -25
- data/examples/i18n/zh-CN/Rakefile +0 -4
- data/examples/i18n/zh-CN/features/addition.feature +0 -18
- data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +0 -31
- data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
- data/examples/i18n/zh-TW/Rakefile +0 -4
- data/examples/i18n/zh-TW/features/addition.feature +0 -17
- data/examples/i18n/zh-TW/features/division.feature +0 -11
- data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +0 -29
- data/examples/i18n/zh-TW/lib/calculator.rb +0 -14
- data/examples/rspec_doubles/Rakefile +0 -4
- data/examples/rspec_doubles/features/mocking.feature +0 -9
- data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +0 -19
- data/examples/rspec_doubles/features/support/env.rb +0 -12
- data/examples/sinatra/README.textile +0 -13
- data/examples/sinatra/Rakefile +0 -6
- data/examples/sinatra/app.rb +0 -14
- data/examples/sinatra/features/add.feature +0 -11
- data/examples/sinatra/features/step_definitions/add_steps.rb +0 -15
- data/examples/sinatra/features/support/env.rb +0 -15
- data/examples/sinatra/views/add.erb +0 -7
- data/examples/sinatra/views/layout.erb +0 -8
- data/examples/tcl/README.textile +0 -11
- data/examples/tcl/Rakefile +0 -6
- data/examples/tcl/features/fibonnacci.feature +0 -17
- data/examples/tcl/features/step_definitions/fib_steps.rb +0 -7
- data/examples/tcl/features/support/env.rb +0 -7
- data/examples/tcl/src/fib.tcl +0 -3
- data/examples/test_unit/Gemfile +0 -4
- data/examples/test_unit/Rakefile +0 -6
- data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -20
- data/examples/test_unit/features/test_unit.feature +0 -9
- data/examples/watir/README.textile +0 -16
- data/examples/watir/Rakefile +0 -12
- data/examples/watir/cucumber.yml +0 -1
- data/examples/watir/features/search.feature +0 -12
- data/examples/watir/features/step_definitions/search_steps.rb +0 -27
- data/examples/watir/features/support/env.rb +0 -39
- data/examples/watir/features/support/screenshots.rb +0 -47
- data/features/docs/api/list_step_defs_as_json.feature +0 -64
- data/features/docs/api/listen_for_events.feature +0 -59
- data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -27
- data/features/docs/cli/backtraces.feature +0 -36
- data/features/docs/cli/dry_run.feature +0 -73
- data/features/docs/cli/exclude_files.feature +0 -18
- data/features/docs/cli/execute_with_tag_filter.feature +0 -119
- data/features/docs/cli/fail_fast.feature +0 -48
- data/features/docs/cli/finding_steps.feature +0 -28
- data/features/docs/cli/help.feature +0 -8
- data/features/docs/cli/i18n.feature +0 -42
- data/features/docs/cli/randomize.feature +0 -140
- data/features/docs/cli/require.feature +0 -27
- data/features/docs/cli/retry_failing_tests.feature +0 -92
- data/features/docs/cli/run_scenarios_matching_name.feature +0 -105
- data/features/docs/cli/run_specific_scenarios.feature +0 -77
- data/features/docs/cli/showing_differences.feature +0 -43
- data/features/docs/cli/specifying_multiple_formatters.feature +0 -68
- data/features/docs/cli/strict_mode.feature +0 -70
- data/features/docs/defining_steps/ambiguous_steps.feature +0 -89
- data/features/docs/defining_steps/nested_steps.feature +0 -181
- data/features/docs/defining_steps/nested_steps_i18n.feature +0 -37
- data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -56
- data/features/docs/defining_steps/one_line_step_definitions.feature +0 -65
- data/features/docs/defining_steps/printing_messages.feature +0 -147
- data/features/docs/defining_steps/skip_scenario.feature +0 -31
- data/features/docs/defining_steps/snippets.feature +0 -56
- data/features/docs/defining_steps/table_diffing.feature +0 -50
- data/features/docs/events/gherkin_source_read_event.feature +0 -43
- data/features/docs/events/step_activated_event.feature +0 -36
- data/features/docs/events/step_definition_registered_event.feature +0 -29
- data/features/docs/events/test_case_finished_event.feature +0 -35
- data/features/docs/events/test_case_started_event.feature +0 -54
- data/features/docs/events/test_run_finished_event.feature +0 -40
- data/features/docs/events/test_run_started_event.feature +0 -41
- data/features/docs/events/test_step_finished_event.feature +0 -47
- data/features/docs/events/test_step_started_event.feature +0 -43
- data/features/docs/exception_in_after_hook.feature +0 -127
- data/features/docs/exception_in_after_step_hook.feature +0 -104
- data/features/docs/exception_in_around_hook.feature +0 -80
- data/features/docs/exception_in_before_hook.feature +0 -98
- data/features/docs/extending_cucumber/custom_filter.feature +0 -29
- data/features/docs/extending_cucumber/custom_formatter.feature +0 -94
- data/features/docs/formatters/api_methods.feature +0 -37
- data/features/docs/formatters/html_formatter.feature +0 -91
- data/features/docs/formatters/json_formatter.feature +0 -767
- data/features/docs/formatters/junit_formatter.feature +0 -455
- data/features/docs/formatters/pretty_formatter.feature +0 -74
- data/features/docs/formatters/progress_formatter.feature +0 -32
- data/features/docs/formatters/rerun_formatter.feature +0 -190
- data/features/docs/formatters/summary_formatter.feature +0 -35
- data/features/docs/formatters/usage_formatter.feature +0 -101
- data/features/docs/getting_started.feature +0 -28
- data/features/docs/gherkin/background.feature +0 -548
- data/features/docs/gherkin/doc_strings.feature +0 -76
- data/features/docs/gherkin/expand_option_for_outlines.feature +0 -47
- data/features/docs/gherkin/language_from_header.feature +0 -32
- data/features/docs/gherkin/outlines.feature +0 -158
- data/features/docs/gherkin/unicode_table.feature +0 -33
- data/features/docs/gherkin/using_descriptions.feature +0 -83
- data/features/docs/gherkin/using_star_notation.feature +0 -37
- data/features/docs/iso-8859-1.feature +0 -6
- data/features/docs/post_configuration_hook.feature +0 -33
- data/features/docs/profiles.feature +0 -120
- data/features/docs/rake_task.feature +0 -146
- data/features/docs/raketask.feature +0 -46
- data/features/docs/work_in_progress.feature +0 -157
- data/features/docs/writing_support_code/after_hooks.feature +0 -102
- data/features/docs/writing_support_code/after_step_hooks.feature +0 -55
- data/features/docs/writing_support_code/around_hooks.feature +0 -266
- data/features/docs/writing_support_code/before_hook.feature +0 -66
- data/features/docs/writing_support_code/hook_order.feature +0 -63
- data/features/docs/writing_support_code/load_path.feature +0 -17
- data/features/docs/writing_support_code/parameter_types.feature +0 -69
- data/features/docs/writing_support_code/state.feature +0 -32
- data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
- data/features/docs/writing_support_code/world.feature +0 -129
- data/features/lib/step_definitions/aruba_steps.rb +0 -21
- data/features/lib/step_definitions/cli_steps.rb +0 -4
- data/features/lib/step_definitions/cucumber_steps.rb +0 -75
- data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -16
- data/features/lib/step_definitions/json_steps.rb +0 -8
- data/features/lib/step_definitions/junit_steps.rb +0 -14
- data/features/lib/step_definitions/language_steps.rb +0 -9
- data/features/lib/step_definitions/profile_steps.rb +0 -16
- data/features/lib/step_definitions/retry_steps.rb +0 -55
- data/features/lib/step_definitions/ruby_steps.rb +0 -4
- data/features/lib/support/env.rb +0 -22
- data/features/lib/support/fake_wire_server.rb +0 -94
- data/features/lib/support/feature_factory.rb +0 -68
- data/features/lib/support/normalise_output.rb +0 -52
- data/features/lib/support/parameter_types.rb +0 -5
- data/gem_tasks/contributors.rake +0 -19
- data/gem_tasks/cov.rake +0 -6
- data/gem_tasks/downloads.rb +0 -8
- data/gem_tasks/environment.rake +0 -4
- data/gem_tasks/examples.rake +0 -12
- data/gem_tasks/fix_cr_lf.rake +0 -22
- data/gem_tasks/flog.rake +0 -5
- data/gem_tasks/rspec.rake +0 -7
- data/gem_tasks/sass.rake +0 -5
- data/gem_tasks/stats +0 -16
- data/gem_tasks/versions.txt +0 -74
- data/scripts/invite-collaborator +0 -40
- data/scripts/update-changelog +0 -86
- data/spec/cucumber/cli/configuration_spec.rb +0 -446
- data/spec/cucumber/cli/main_spec.rb +0 -84
- data/spec/cucumber/cli/options_spec.rb +0 -445
- data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
- data/spec/cucumber/cli/rerun_spec.rb +0 -86
- data/spec/cucumber/configuration_spec.rb +0 -148
- data/spec/cucumber/constantize_spec.rb +0 -20
- data/spec/cucumber/events_spec.rb +0 -9
- data/spec/cucumber/file_specs_spec.rb +0 -61
- data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
- data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
- data/spec/cucumber/filters/retry_spec.rb +0 -98
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
- data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
- data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
- data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
- data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
- data/spec/cucumber/formatter/duration_spec.rb +0 -23
- data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
- data/spec/cucumber/formatter/html_spec.rb +0 -543
- data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
- data/spec/cucumber/formatter/json_spec.rb +0 -815
- data/spec/cucumber/formatter/junit_spec.rb +0 -251
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2175
- data/spec/cucumber/formatter/pretty_spec.rb +0 -907
- data/spec/cucumber/formatter/progress_spec.rb +0 -170
- data/spec/cucumber/formatter/rerun_spec.rb +0 -97
- data/spec/cucumber/formatter/spec_helper.rb +0 -84
- data/spec/cucumber/glue/proto_world_spec.rb +0 -63
- data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
- data/spec/cucumber/glue/snippet_spec.rb +0 -174
- data/spec/cucumber/glue/step_definition_spec.rb +0 -207
- data/spec/cucumber/hooks_spec.rb +0 -31
- data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -653
- data/spec/cucumber/project_initializer_spec.rb +0 -88
- data/spec/cucumber/rake/forked_spec.rb +0 -58
- data/spec/cucumber/rake/task_spec.rb +0 -86
- data/spec/cucumber/running_test_case_spec.rb +0 -140
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
- data/spec/cucumber/runtime/support_code_spec.rb +0 -17
- data/spec/cucumber/runtime_spec.rb +0 -21
- data/spec/cucumber/sell_cucumbers.feature +0 -19
- data/spec/cucumber/step_argument_spec.rb +0 -19
- data/spec/cucumber/step_match_search_spec.rb +0 -113
- data/spec/cucumber/step_match_spec.rb +0 -86
- data/spec/cucumber/world/pending_spec.rb +0 -48
- data/spec/spec_helper.rb +0 -30
- data/spec/support/standard_step_actions.rb +0 -19
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require 'yaml'
|
|
4
|
-
|
|
5
|
-
module Cucumber
|
|
6
|
-
module Cli
|
|
7
|
-
describe Main do
|
|
8
|
-
before(:each) do
|
|
9
|
-
allow(File).to receive(:exist?) { false } # When Configuration checks for cucumber.yml
|
|
10
|
-
allow(Dir).to receive(:[]) { [] } # to prevent cucumber's features dir to being laoded
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
let(:args) { [] }
|
|
14
|
-
let(:stdin) { StringIO.new }
|
|
15
|
-
let(:stdout) { StringIO.new }
|
|
16
|
-
let(:stderr) { StringIO.new }
|
|
17
|
-
let(:kernel) { double(:kernel) }
|
|
18
|
-
subject { Main.new(args, stdin, stdout, stderr, kernel)}
|
|
19
|
-
|
|
20
|
-
describe '#execute!' do
|
|
21
|
-
context 'passed an existing runtime' do
|
|
22
|
-
let(:existing_runtime) { double('runtime').as_null_object }
|
|
23
|
-
|
|
24
|
-
def do_execute
|
|
25
|
-
subject.execute!(existing_runtime)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it 'configures that runtime' do
|
|
29
|
-
expected_configuration = double('Configuration').as_null_object
|
|
30
|
-
|
|
31
|
-
allow(Configuration).to receive(:new) { expected_configuration }
|
|
32
|
-
expect(existing_runtime).to receive(:configure).with(expected_configuration)
|
|
33
|
-
expect(kernel).to receive(:exit).with(1)
|
|
34
|
-
|
|
35
|
-
do_execute
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it 'uses that runtime for running and reporting results' do
|
|
39
|
-
expected_results = double('results', :failure? => true)
|
|
40
|
-
|
|
41
|
-
expect(existing_runtime).to receive(:run!)
|
|
42
|
-
allow(existing_runtime).to receive(:results) { expected_results }
|
|
43
|
-
expect(kernel).to receive(:exit).with(1)
|
|
44
|
-
|
|
45
|
-
do_execute
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context 'interrupted with ctrl-c' do
|
|
50
|
-
after do
|
|
51
|
-
Cucumber.wants_to_quit = false
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it 'exits with error code' do
|
|
55
|
-
results = double('results', :failure? => false)
|
|
56
|
-
|
|
57
|
-
allow_any_instance_of(Runtime).to receive(:run!)
|
|
58
|
-
allow_any_instance_of(Runtime).to receive(:results) { results }
|
|
59
|
-
|
|
60
|
-
Cucumber.wants_to_quit = true
|
|
61
|
-
|
|
62
|
-
expect(kernel).to receive(:exit).with(2)
|
|
63
|
-
|
|
64
|
-
subject.execute!
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
[ProfilesNotDefinedError, YmlLoadError, ProfileNotFound].each do |exception_klass|
|
|
70
|
-
it "rescues #{exception_klass}, prints the message to the error stream" do
|
|
71
|
-
configuration = double('configuration')
|
|
72
|
-
|
|
73
|
-
allow(Configuration).to receive(:new) { configuration }
|
|
74
|
-
allow(configuration).to receive(:parse!).and_raise(exception_klass.new('error message'))
|
|
75
|
-
allow(kernel).to receive(:exit).with(2)
|
|
76
|
-
|
|
77
|
-
subject.execute!
|
|
78
|
-
|
|
79
|
-
expect(stderr.string).to eq "error message\n"
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
@@ -1,445 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require 'yaml'
|
|
4
|
-
require 'cucumber/cli/options'
|
|
5
|
-
|
|
6
|
-
module Cucumber
|
|
7
|
-
module Cli
|
|
8
|
-
describe Options do
|
|
9
|
-
|
|
10
|
-
def given_cucumber_yml_defined_as(hash_or_string)
|
|
11
|
-
allow(File).to receive(:exist?) { true }
|
|
12
|
-
|
|
13
|
-
cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
|
|
14
|
-
|
|
15
|
-
allow(IO).to receive(:read).with('cucumber.yml') { cucumber_yml }
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
before(:each) do
|
|
19
|
-
allow(File).to receive(:exist?) { false } # Meaning, no cucumber.yml exists
|
|
20
|
-
allow(Kernel).to receive(:exit)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def output_stream
|
|
24
|
-
@output_stream ||= StringIO.new
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def error_stream
|
|
28
|
-
@error_stream ||= StringIO.new
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def options
|
|
32
|
-
@options ||= Options.new(output_stream, error_stream)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def prepare_args(args)
|
|
36
|
-
args.is_a?(Array) ? args : args.split(' ')
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe 'parsing' do
|
|
40
|
-
|
|
41
|
-
def when_parsing(args)
|
|
42
|
-
yield
|
|
43
|
-
options.parse!(prepare_args(args))
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def after_parsing(args)
|
|
47
|
-
options.parse!(prepare_args(args))
|
|
48
|
-
yield
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
context '-r or --require' do
|
|
52
|
-
it 'collects all specified files into an array' do
|
|
53
|
-
after_parsing('--require some_file.rb -r another_file.rb') do
|
|
54
|
-
expect(options[:require]).to eq ['some_file.rb', 'another_file.rb']
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
context '--i18n-languages' do
|
|
60
|
-
include RSpec::WorkInProgress
|
|
61
|
-
|
|
62
|
-
it 'lists all known languages' do
|
|
63
|
-
after_parsing '--i18n-languages' do
|
|
64
|
-
::Gherkin::DIALECTS.keys.map do |key|
|
|
65
|
-
expect(@output_stream.string).to include(key.to_s);
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it 'exits the program' do
|
|
71
|
-
when_parsing('--i18n-languages') { expect(Kernel).to receive(:exit) }
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
context '--i18n-keywords' do
|
|
76
|
-
context 'with invalid LANG' do
|
|
77
|
-
include RSpec::WorkInProgress
|
|
78
|
-
|
|
79
|
-
it 'exits' do
|
|
80
|
-
when_parsing '--i18n-keywords foo' do
|
|
81
|
-
expect(Kernel).to receive(:exit)
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it 'says the language was invalid' do
|
|
86
|
-
after_parsing '--i18n-keywords foo' do
|
|
87
|
-
expect(@output_stream.string).to include("Invalid language 'foo'. Available languages are:")
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it 'displays the language table' do
|
|
92
|
-
after_parsing '--i18n-keywords foo' do
|
|
93
|
-
::Gherkin::DIALECTS.keys.map do |key|
|
|
94
|
-
expect(@output_stream.string).to include(key.to_s);
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
context '-f FORMAT or --format FORMAT' do
|
|
102
|
-
it 'defaults the output for the formatter to the output stream (STDOUT)' do
|
|
103
|
-
after_parsing('-f pretty') { expect(options[:formats]).to eq [['pretty', {}, output_stream]] }
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it 'extracts per-formatter options' do
|
|
107
|
-
after_parsing('-f pretty,foo=bar,foo2=bar2') do
|
|
108
|
-
expect(options[:formats]).to eq [['pretty', { 'foo' => 'bar', 'foo2' => 'bar2' }, output_stream]]
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
context '-o [FILE|DIR] or --out [FILE|DIR]' do
|
|
114
|
-
it "defaults the formatter to 'pretty' when not specified earlier" do
|
|
115
|
-
after_parsing('-o file.txt') { expect(options[:formats]).to eq [['pretty', {}, 'file.txt']] }
|
|
116
|
-
end
|
|
117
|
-
it 'sets the output for the formatter defined immediatly before it' do
|
|
118
|
-
after_parsing('-f profile --out file.txt -f pretty -o file2.txt') do
|
|
119
|
-
expect(options[:formats]).to eq [['profile', {}, 'file.txt'], ['pretty', {}, 'file2.txt']]
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
context 'handling multiple formatters' do
|
|
125
|
-
it 'catches multiple command line formatters using the same stream' do
|
|
126
|
-
expect{ options.parse!(prepare_args('-f pretty -f progress')) }.to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
it 'catches multiple profile formatters using the same stream' do
|
|
130
|
-
given_cucumber_yml_defined_as({'default' => '-f progress -f pretty'})
|
|
131
|
-
options = Options.new(output_stream, error_stream, :default_profile => 'default')
|
|
132
|
-
|
|
133
|
-
expect{ options.parse!(%w{}) }.to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
it 'profiles does not affect the catching of multiple command line formatters using the same stream' do
|
|
137
|
-
given_cucumber_yml_defined_as({'default' => '-q'})
|
|
138
|
-
options = Options.new(output_stream, error_stream, :default_profile => 'default')
|
|
139
|
-
|
|
140
|
-
expect{ options.parse!(%w{-f progress -f pretty}) }.to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
it 'merges profile formatters and command line formatters' do
|
|
144
|
-
given_cucumber_yml_defined_as({'default' => '-f junit -o result.xml'})
|
|
145
|
-
options = Options.new(output_stream, error_stream, :default_profile => 'default')
|
|
146
|
-
|
|
147
|
-
options.parse!(%w{-f pretty})
|
|
148
|
-
|
|
149
|
-
expect(options[:formats]).to eq [['pretty', {}, output_stream], ['junit', {}, 'result.xml']]
|
|
150
|
-
end
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
context '-t TAGS --tags TAGS' do
|
|
154
|
-
it 'handles tag expressions as argument' do
|
|
155
|
-
after_parsing(['--tags', 'not @foo or @bar']) { expect(options[:tag_expressions]).to eq ['not @foo or @bar'] }
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
it 'stores tags passed with different --tags seperately' do
|
|
159
|
-
after_parsing('--tags @foo --tags @bar') { expect(options[:tag_expressions]).to eq ['@foo', '@bar'] }
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
it 'strips tag limits from the tag expressions stored' do
|
|
163
|
-
after_parsing(['--tags', 'not @foo:2 or @bar:3']) { expect(options[:tag_expressions]).to eq ['not @foo or @bar'] }
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
it 'stores tag limits separately' do
|
|
167
|
-
after_parsing(['--tags', 'not @foo:2 or @bar:3']) { expect(options[:tag_limits]).to eq Hash('@foo' => 2, '@bar' => 3) }
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
it 'raise exception for inconsistent tag limits' do
|
|
171
|
-
expect{ after_parsing('--tags @foo:2 --tags @foo:3') }.to raise_error(RuntimeError, 'Inconsistent tag limits for @foo: 2 and 3')
|
|
172
|
-
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
context '-n NAME or --name NAME' do
|
|
177
|
-
it 'stores the provided names as regular expressions' do
|
|
178
|
-
after_parsing('-n foo --name bar') { expect(options[:name_regexps]).to eq [/foo/,/bar/] }
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
context '-e PATTERN or --exclude PATTERN' do
|
|
183
|
-
it 'stores the provided exclusions as regular expressions' do
|
|
184
|
-
after_parsing('-e foo --exclude bar') { expect(options[:excludes]).to eq [/foo/,/bar/] }
|
|
185
|
-
end
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
context '-l LINES or --lines LINES' do
|
|
189
|
-
it 'adds line numbers to args' do
|
|
190
|
-
options.parse!(%w{-l24 FILE})
|
|
191
|
-
|
|
192
|
-
expect(options.instance_variable_get(:@args)).to eq ['FILE:24']
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
context '-p PROFILE or --profile PROFILE' do
|
|
197
|
-
it 'uses the default profile passed in during initialization if none are specified by the user' do
|
|
198
|
-
given_cucumber_yml_defined_as({'default' => '--require some_file'})
|
|
199
|
-
|
|
200
|
-
options = Options.new(output_stream, error_stream, :default_profile => 'default')
|
|
201
|
-
options.parse!(%w{--format progress})
|
|
202
|
-
|
|
203
|
-
expect(options[:require]).to include('some_file')
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
it 'merges all uniq values from both cmd line and the profile' do
|
|
207
|
-
given_cucumber_yml_defined_as('foo' => %w[--verbose])
|
|
208
|
-
options.parse!(%w[--wip --profile foo])
|
|
209
|
-
|
|
210
|
-
expect(options[:wip]).to be true
|
|
211
|
-
expect(options[:verbose]).to be true
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
it "gives precendene to the origianl options' paths" do
|
|
215
|
-
given_cucumber_yml_defined_as('foo' => %w[features])
|
|
216
|
-
options.parse!(%w[my.feature -p foo])
|
|
217
|
-
|
|
218
|
-
expect(options[:paths]).to eq %w[my.feature]
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
it 'combines the require files of both' do
|
|
222
|
-
given_cucumber_yml_defined_as('bar' => %w[--require features -r dog.rb])
|
|
223
|
-
options.parse!(%w[--require foo.rb -p bar])
|
|
224
|
-
|
|
225
|
-
expect(options[:require]).to eq %w[foo.rb features dog.rb]
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
it 'combines the tag names of both' do
|
|
229
|
-
given_cucumber_yml_defined_as('baz' => %w[-t @bar])
|
|
230
|
-
options.parse!(%w[--tags @foo -p baz])
|
|
231
|
-
|
|
232
|
-
expect(options[:tag_expressions]).to eq ['@foo', '@bar']
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
it 'combines the tag limits of both' do
|
|
236
|
-
given_cucumber_yml_defined_as('baz' => %w[-t @bar:2])
|
|
237
|
-
options.parse!(%w[--tags @foo:3 -p baz])
|
|
238
|
-
|
|
239
|
-
expect(options[:tag_limits]).to eq Hash('@foo' => 3, '@bar' => 2)
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
it 'raise exceptions for inconsistent tag limits' do
|
|
243
|
-
given_cucumber_yml_defined_as('baz' => %w[-t @bar:2])
|
|
244
|
-
|
|
245
|
-
expect{ options.parse!(%w[--tags @bar:3 -p baz]) }.to raise_error(RuntimeError, 'Inconsistent tag limits for @bar: 3 and 2')
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
it 'only takes the paths from the original options, and disgregards the profiles' do
|
|
249
|
-
given_cucumber_yml_defined_as('baz' => %w[features])
|
|
250
|
-
options.parse!(%w[my.feature -p baz])
|
|
251
|
-
|
|
252
|
-
expect(options[:paths]).to eq ['my.feature']
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
it 'uses the paths from the profile when none are specified originally' do
|
|
256
|
-
given_cucumber_yml_defined_as('baz' => %w[some.feature])
|
|
257
|
-
options.parse!(%w[-p baz])
|
|
258
|
-
|
|
259
|
-
expect(options[:paths]).to eq ['some.feature']
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
it 'combines environment variables from the profile but gives precendene to cmd line args' do
|
|
263
|
-
given_cucumber_yml_defined_as('baz' => %w[FOO=bar CHEESE=swiss])
|
|
264
|
-
options.parse!(%w[-p baz CHEESE=cheddar BAR=foo])
|
|
265
|
-
|
|
266
|
-
expect(options[:env_vars]).to eq({ 'BAR' => 'foo', 'FOO' => 'bar', 'CHEESE' => 'cheddar' })
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
it 'disregards STDOUT formatter defined in profile when another is passed in (via cmd line)' do
|
|
270
|
-
given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
|
|
271
|
-
options.parse!(%w{--format progress --profile foo})
|
|
272
|
-
|
|
273
|
-
expect(options[:formats]).to eq [['progress', {}, output_stream]]
|
|
274
|
-
end
|
|
275
|
-
|
|
276
|
-
it 'includes any non-STDOUT formatters from the profile' do
|
|
277
|
-
given_cucumber_yml_defined_as({'html' => %w[--format html -o features.html]})
|
|
278
|
-
options.parse!(%w{--format progress --profile html})
|
|
279
|
-
|
|
280
|
-
expect(options[:formats]).to eq [['progress', {}, output_stream], ['html', {}, 'features.html']]
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
it 'does not include STDOUT formatters from the profile if there is a STDOUT formatter in command line' do
|
|
284
|
-
given_cucumber_yml_defined_as({'html' => %w[--format html -o features.html --format pretty]})
|
|
285
|
-
options.parse!(%w{--format progress --profile html})
|
|
286
|
-
|
|
287
|
-
expect(options[:formats]).to eq [['progress', {}, output_stream], ['html', {}, 'features.html']]
|
|
288
|
-
end
|
|
289
|
-
|
|
290
|
-
it 'includes any STDOUT formatters from the profile if no STDOUT formatter was specified in command line' do
|
|
291
|
-
given_cucumber_yml_defined_as({'html' => %w[--format html]})
|
|
292
|
-
options.parse!(%w{--format rerun -o rerun.txt --profile html})
|
|
293
|
-
|
|
294
|
-
expect(options[:formats]).to eq [['html', {}, output_stream], ['rerun', {}, 'rerun.txt']]
|
|
295
|
-
end
|
|
296
|
-
|
|
297
|
-
it 'assumes all of the formatters defined in the profile when none are specified on cmd line' do
|
|
298
|
-
given_cucumber_yml_defined_as({'html' => %w[--format progress --format html -o features.html]})
|
|
299
|
-
options.parse!(%w{--profile html})
|
|
300
|
-
|
|
301
|
-
expect(options[:formats]).to eq [['progress', {}, output_stream], ['html', {}, 'features.html']]
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
it 'only reads cucumber.yml once' do
|
|
305
|
-
original_parse_count = $cucumber_yml_read_count
|
|
306
|
-
$cucumber_yml_read_count = 0
|
|
307
|
-
|
|
308
|
-
begin
|
|
309
|
-
given_cucumber_yml_defined_as(<<-END
|
|
310
|
-
<% $cucumber_yml_read_count += 1 %>
|
|
311
|
-
default: --format pretty
|
|
312
|
-
END
|
|
313
|
-
)
|
|
314
|
-
options = Options.new(output_stream, error_stream, :default_profile => 'default')
|
|
315
|
-
options.parse!(%w(-f progress))
|
|
316
|
-
|
|
317
|
-
expect($cucumber_yml_read_count).to eq 1
|
|
318
|
-
ensure
|
|
319
|
-
$cucumber_yml_read_count = original_parse_count
|
|
320
|
-
end
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
it 'respects --quiet when defined in the profile' do
|
|
324
|
-
given_cucumber_yml_defined_as('foo' => '-q')
|
|
325
|
-
options.parse!(%w[-p foo])
|
|
326
|
-
|
|
327
|
-
expect(options[:snippets]).to be false
|
|
328
|
-
expect(options[:source]).to be false
|
|
329
|
-
expect(options[:duration]).to be false
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
it 'uses --no-duration when defined in the profile' do
|
|
333
|
-
given_cucumber_yml_defined_as('foo' => '--no-duration')
|
|
334
|
-
options.parse!(%w[-p foo])
|
|
335
|
-
|
|
336
|
-
expect(options[:duration]).to be false
|
|
337
|
-
end
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
context '-P or --no-profile' do
|
|
341
|
-
it 'disables profiles' do
|
|
342
|
-
given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
|
|
343
|
-
|
|
344
|
-
after_parsing('-P --require some_file.rb') do
|
|
345
|
-
expect(options[:require]).to eq ['some_file.rb']
|
|
346
|
-
end
|
|
347
|
-
end
|
|
348
|
-
|
|
349
|
-
it 'notifies the user that the profiles are being disabled' do
|
|
350
|
-
given_cucumber_yml_defined_as({'default' => '-v'})
|
|
351
|
-
|
|
352
|
-
after_parsing('--no-profile --require some_file.rb') do
|
|
353
|
-
expect(output_stream.string).to match(/Disabling profiles.../)
|
|
354
|
-
end
|
|
355
|
-
end
|
|
356
|
-
end
|
|
357
|
-
|
|
358
|
-
context '-b or --backtrace' do
|
|
359
|
-
it "turns on cucumber's full backtrace" do
|
|
360
|
-
when_parsing('-b') do
|
|
361
|
-
expect(Cucumber).to receive(:use_full_backtrace=).with(true)
|
|
362
|
-
end
|
|
363
|
-
end
|
|
364
|
-
end
|
|
365
|
-
|
|
366
|
-
context '--version' do
|
|
367
|
-
it "displays Cucumber's version" do
|
|
368
|
-
after_parsing('--version') do
|
|
369
|
-
expect(output_stream.string).to match(/#{Cucumber::VERSION}/)
|
|
370
|
-
end
|
|
371
|
-
end
|
|
372
|
-
|
|
373
|
-
it 'exits the program' do
|
|
374
|
-
when_parsing('--version') { expect(Kernel).to receive(:exit) }
|
|
375
|
-
end
|
|
376
|
-
end
|
|
377
|
-
|
|
378
|
-
context 'environment variables (i.e. MODE=webrat)' do
|
|
379
|
-
it 'places all of the environment variables into a hash' do
|
|
380
|
-
after_parsing('MODE=webrat FOO=bar') do
|
|
381
|
-
expect(options[:env_vars]).to eq({ 'MODE' => 'webrat', 'FOO' => 'bar' })
|
|
382
|
-
end
|
|
383
|
-
end
|
|
384
|
-
end
|
|
385
|
-
|
|
386
|
-
context '--retry ATTEMPTS' do
|
|
387
|
-
it 'is 0 by default' do
|
|
388
|
-
after_parsing('') do
|
|
389
|
-
expect(options[:retry]).to eql 0
|
|
390
|
-
end
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
it 'sets the options[:retry] value' do
|
|
394
|
-
after_parsing('--retry 4') do
|
|
395
|
-
expect(options[:retry]).to eql 4
|
|
396
|
-
end
|
|
397
|
-
end
|
|
398
|
-
end
|
|
399
|
-
|
|
400
|
-
it 'assigns any extra arguments as paths to features' do
|
|
401
|
-
after_parsing('-f pretty my_feature.feature my_other_features') do
|
|
402
|
-
expect(options[:paths]).to eq ['my_feature.feature', 'my_other_features']
|
|
403
|
-
end
|
|
404
|
-
end
|
|
405
|
-
|
|
406
|
-
it 'does not mistake environment variables as feature paths' do
|
|
407
|
-
after_parsing('my_feature.feature FOO=bar') do
|
|
408
|
-
expect(options[:paths]).to eq ['my_feature.feature']
|
|
409
|
-
end
|
|
410
|
-
end
|
|
411
|
-
|
|
412
|
-
context '--snippet-type' do
|
|
413
|
-
it 'parses the snippet type argument' do
|
|
414
|
-
after_parsing('--snippet-type classic') do
|
|
415
|
-
expect(options[:snippet_type]).to eq :classic
|
|
416
|
-
end
|
|
417
|
-
end
|
|
418
|
-
end
|
|
419
|
-
end
|
|
420
|
-
|
|
421
|
-
describe 'dry-run' do
|
|
422
|
-
it 'has the default value for snippets' do
|
|
423
|
-
given_cucumber_yml_defined_as({'foo' => %w[--dry-run]})
|
|
424
|
-
options.parse!(%w{--dry-run})
|
|
425
|
-
|
|
426
|
-
expect(options[:snippets]).to be true
|
|
427
|
-
end
|
|
428
|
-
|
|
429
|
-
it 'sets snippets to false when no-snippets provided after dry-run' do
|
|
430
|
-
given_cucumber_yml_defined_as({'foo' => %w[--dry-run --no-snippets]})
|
|
431
|
-
options.parse!(%w{--dry-run --no-snippets})
|
|
432
|
-
|
|
433
|
-
expect(options[:snippets]).to be false
|
|
434
|
-
end
|
|
435
|
-
|
|
436
|
-
it 'sets snippets to false when no-snippets provided before dry-run' do
|
|
437
|
-
given_cucumber_yml_defined_as({'foo' => %w[--no-snippet --dry-run]})
|
|
438
|
-
options.parse!(%w{--no-snippets --dry-run})
|
|
439
|
-
|
|
440
|
-
expect(options[:snippets]).to be false
|
|
441
|
-
end
|
|
442
|
-
end
|
|
443
|
-
end
|
|
444
|
-
end
|
|
445
|
-
end
|