cucumber 3.0.1 → 3.2.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 +5 -5
- data/CHANGELOG.md +84 -4
- data/CONTRIBUTING.md +3 -4
- data/README.md +12 -12
- data/lib/autotest/cucumber.rb +1 -0
- data/lib/autotest/cucumber_mixin.rb +1 -0
- data/lib/autotest/cucumber_rails.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
- data/lib/autotest/cucumber_rspec.rb +1 -0
- data/lib/autotest/cucumber_rspec2.rb +1 -0
- data/lib/autotest/discover.rb +1 -0
- data/lib/cucumber.rb +1 -0
- data/lib/cucumber/cli/configuration.rb +1 -0
- data/lib/cucumber/cli/main.rb +2 -2
- data/lib/cucumber/cli/options.rb +63 -55
- data/lib/cucumber/cli/profile_loader.rb +5 -7
- data/lib/cucumber/cli/rerun_file.rb +1 -0
- data/lib/cucumber/configuration.rb +8 -7
- data/lib/cucumber/constantize.rb +6 -5
- data/lib/cucumber/core_ext/string.rb +1 -0
- data/lib/cucumber/deprecate.rb +1 -1
- data/lib/cucumber/encoding.rb +2 -1
- data/lib/cucumber/errors.rb +2 -1
- data/lib/cucumber/events.rb +1 -2
- data/lib/cucumber/events/gherkin_source_read.rb +1 -4
- data/lib/cucumber/events/step_activated.rb +4 -5
- data/lib/cucumber/events/step_definition_registered.rb +4 -8
- data/lib/cucumber/events/test_case_finished.rb +0 -4
- data/lib/cucumber/events/test_case_started.rb +0 -4
- data/lib/cucumber/events/test_run_finished.rb +2 -3
- data/lib/cucumber/events/test_run_started.rb +2 -4
- data/lib/cucumber/events/test_step_finished.rb +0 -6
- data/lib/cucumber/events/test_step_started.rb +1 -7
- data/lib/cucumber/file_specs.rb +2 -1
- data/lib/cucumber/filters.rb +1 -0
- data/lib/cucumber/filters/activate_steps.rb +1 -1
- data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
- data/lib/cucumber/filters/broadcast_test_run_started_event.rb +2 -1
- data/lib/cucumber/filters/gated_receiver.rb +1 -2
- data/lib/cucumber/filters/prepare_world.rb +2 -5
- data/lib/cucumber/filters/quit.rb +2 -4
- data/lib/cucumber/filters/randomizer.rb +6 -7
- data/lib/cucumber/filters/retry.rb +2 -2
- data/lib/cucumber/filters/tag_limits.rb +2 -2
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
- data/lib/cucumber/filters/tag_limits/verifier.rb +1 -2
- data/lib/cucumber/formatter/ansicolor.rb +13 -12
- data/lib/cucumber/formatter/backtrace_filter.rb +1 -2
- data/lib/cucumber/formatter/console.rb +11 -12
- data/lib/cucumber/formatter/console_counts.rb +4 -4
- data/lib/cucumber/formatter/console_issues.rb +3 -3
- data/lib/cucumber/formatter/duration.rb +1 -0
- data/lib/cucumber/formatter/duration_extractor.rb +1 -1
- data/lib/cucumber/formatter/fail_fast.rb +9 -6
- data/lib/cucumber/formatter/fanout.rb +1 -3
- data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
- data/lib/cucumber/formatter/html.rb +28 -32
- data/lib/cucumber/formatter/html_builder.rb +3 -2
- data/lib/cucumber/formatter/http_io.rb +146 -0
- data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -3
- data/lib/cucumber/formatter/interceptor.rb +18 -5
- data/lib/cucumber/formatter/io.rb +18 -11
- data/lib/cucumber/formatter/json.rb +11 -4
- data/lib/cucumber/formatter/json_pretty.rb +1 -1
- data/lib/cucumber/formatter/junit.rb +22 -17
- data/lib/cucumber/formatter/pretty.rb +4 -3
- data/lib/cucumber/formatter/progress.rb +3 -2
- data/lib/cucumber/formatter/rerun.rb +2 -1
- data/lib/cucumber/formatter/stepdefs.rb +1 -0
- data/lib/cucumber/formatter/steps.rb +2 -2
- data/lib/cucumber/formatter/summary.rb +1 -2
- data/lib/cucumber/formatter/unicode.rb +2 -2
- data/lib/cucumber/formatter/usage.rb +22 -19
- data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +86 -85
- data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
- data/lib/cucumber/gherkin/i18n.rb +1 -0
- data/lib/cucumber/gherkin/steps_parser.rb +1 -0
- data/lib/cucumber/glue/dsl.rb +1 -0
- data/lib/cucumber/glue/hook.rb +1 -0
- data/lib/cucumber/glue/invoke_in_world.rb +3 -3
- data/lib/cucumber/glue/proto_world.rb +10 -9
- data/lib/cucumber/glue/registry_and_more.rb +13 -12
- data/lib/cucumber/glue/snippet.rb +1 -5
- data/lib/cucumber/glue/step_definition.rb +10 -10
- data/lib/cucumber/glue/world_factory.rb +1 -3
- data/lib/cucumber/hooks.rb +13 -3
- data/lib/cucumber/load_path.rb +1 -0
- data/lib/cucumber/multiline_argument.rb +3 -3
- data/lib/cucumber/multiline_argument/data_table.rb +16 -20
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +7 -11
- data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
- data/lib/cucumber/platform.rb +2 -1
- data/lib/cucumber/project_initializer.rb +1 -1
- data/lib/cucumber/rake/task.rb +8 -5
- data/lib/cucumber/rspec/disable_option_parser.rb +1 -0
- data/lib/cucumber/rspec/doubles.rb +1 -0
- data/lib/cucumber/running_test_case.rb +2 -1
- data/lib/cucumber/runtime.rb +6 -6
- data/lib/cucumber/runtime/after_hooks.rb +1 -0
- data/lib/cucumber/runtime/before_hooks.rb +1 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +8 -7
- data/lib/cucumber/runtime/step_hooks.rb +2 -0
- data/lib/cucumber/runtime/support_code.rb +3 -7
- data/lib/cucumber/runtime/user_interface.rb +2 -3
- data/lib/cucumber/step_argument.rb +1 -0
- data/lib/cucumber/step_definition_light.rb +2 -1
- data/lib/cucumber/step_definitions.rb +2 -1
- data/lib/cucumber/step_match.rb +9 -8
- data/lib/cucumber/step_match_search.rb +8 -9
- data/lib/cucumber/term/ansicolor.rb +30 -30
- data/lib/cucumber/unit.rb +1 -0
- data/lib/cucumber/version +1 -1
- data/lib/simplecov_setup.rb +1 -0
- metadata +64 -659
- 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
data/gem_tasks/flog.rake
DELETED
data/gem_tasks/rspec.rake
DELETED
data/gem_tasks/sass.rake
DELETED
data/gem_tasks/stats
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env sh
|
2
|
-
|
3
|
-
echo 'Commits'
|
4
|
-
git log --pretty=format:'' | wc -l
|
5
|
-
|
6
|
-
echo 'Contributors'
|
7
|
-
git log --pretty=short --no-merges | git shortlog -ne | egrep -ve '^ +' | egrep -ve '^$' | wc -l
|
8
|
-
|
9
|
-
echo 'Resolved bugs/feature requests'
|
10
|
-
egrep -e '^\*' History.md | wc -l
|
11
|
-
|
12
|
-
echo 'Open tickets'
|
13
|
-
curl -s https://api.github.com/repos/cucumber/cucumber/issues?state=open | ruby -e "require 'multi_json'; puts MultiJson.load(STDIN.read).length"
|
14
|
-
|
15
|
-
echo 'Group members'
|
16
|
-
curl -s http://groups.google.com/group/cukes | grep Members
|
data/gem_tasks/versions.txt
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
0.10.2
|
2
|
-
0.10.1
|
3
|
-
0.10.0
|
4
|
-
0.9.4
|
5
|
-
0.9.3
|
6
|
-
0.9.2
|
7
|
-
0.9.1
|
8
|
-
0.9.0
|
9
|
-
0.8.5
|
10
|
-
0.8.4
|
11
|
-
0.8.3
|
12
|
-
0.8.2
|
13
|
-
0.8.1
|
14
|
-
0.8.0
|
15
|
-
0.7.3
|
16
|
-
0.7.2
|
17
|
-
0.7.1
|
18
|
-
0.7.0
|
19
|
-
0.6.4
|
20
|
-
0.6.3
|
21
|
-
0.6.2
|
22
|
-
0.6.1
|
23
|
-
0.6.0
|
24
|
-
0.5.3
|
25
|
-
0.5.2
|
26
|
-
0.5.1
|
27
|
-
0.5.0
|
28
|
-
0.4.4
|
29
|
-
0.4.3
|
30
|
-
0.4.2
|
31
|
-
0.4.1
|
32
|
-
0.4.0
|
33
|
-
0.3.104
|
34
|
-
0.3.103
|
35
|
-
0.3.102
|
36
|
-
0.3.101
|
37
|
-
0.3.100
|
38
|
-
0.3.99
|
39
|
-
0.3.98
|
40
|
-
0.3.97
|
41
|
-
0.3.96
|
42
|
-
0.3.95
|
43
|
-
0.3.94
|
44
|
-
0.3.93
|
45
|
-
0.3.92
|
46
|
-
0.3.91
|
47
|
-
0.3.90
|
48
|
-
0.3.11
|
49
|
-
0.3.10
|
50
|
-
0.3.9
|
51
|
-
0.3.8
|
52
|
-
0.3.7
|
53
|
-
0.3.6
|
54
|
-
0.3.5
|
55
|
-
0.3.4
|
56
|
-
0.3.3
|
57
|
-
0.3.2
|
58
|
-
0.3.1
|
59
|
-
0.3.0
|
60
|
-
0.2.3
|
61
|
-
0.2.2
|
62
|
-
0.2.1
|
63
|
-
0.2.0
|
64
|
-
0.1.16
|
65
|
-
0.1.15
|
66
|
-
0.1.14
|
67
|
-
0.1.13
|
68
|
-
0.1.12
|
69
|
-
0.1.11
|
70
|
-
0.1.10
|
71
|
-
0.1.9
|
72
|
-
0.1.8
|
73
|
-
0.1.7
|
74
|
-
0.1.6
|
data/scripts/invite-collaborator
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'octokit'
|
3
|
-
|
4
|
-
class Team
|
5
|
-
attr_reader :gh, :name
|
6
|
-
|
7
|
-
def initialize(gh, name)
|
8
|
-
@gh = gh
|
9
|
-
@name = name
|
10
|
-
end
|
11
|
-
|
12
|
-
def add_member(login)
|
13
|
-
gh.add_team_membership(id, login)
|
14
|
-
end
|
15
|
-
|
16
|
-
def id
|
17
|
-
team['id']
|
18
|
-
end
|
19
|
-
|
20
|
-
def team
|
21
|
-
@team ||= gh.organization_teams('cucumber').
|
22
|
-
find { |team| team['name'] == name } || raise("Unable to find a team named #{name}")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
begin
|
27
|
-
token = ENV['GITHUB_TOKEN'] || raise('You need to set GITHUB_TOKEN')
|
28
|
-
login = (ARGV[0] || raise("syntax: #{$0} <COLLABORATOR_LOGIN>")).to_s
|
29
|
-
|
30
|
-
gh = Octokit::Client.new(access_token: token)
|
31
|
-
[
|
32
|
-
Team.new(gh, 'cucumber-ruby'),
|
33
|
-
Team.new(gh, 'collaborators')
|
34
|
-
].each { |team|
|
35
|
-
team.add_member(login)
|
36
|
-
}
|
37
|
-
|
38
|
-
rescue StandardError => error
|
39
|
-
abort error.message
|
40
|
-
end
|
data/scripts/update-changelog
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'octokit'
|
3
|
-
|
4
|
-
class PullRequest
|
5
|
-
attr_reader :gh, :num
|
6
|
-
|
7
|
-
def initialize(gh, num)
|
8
|
-
@gh = gh
|
9
|
-
@num = num
|
10
|
-
end
|
11
|
-
|
12
|
-
def entry
|
13
|
-
pr = gh.pull_request('cucumber/cucumber-ruby', num)
|
14
|
-
username = pr['user']['login']
|
15
|
-
url = pr['html_url']
|
16
|
-
title = pr['title']
|
17
|
-
"#{title} ([##{num}](#{url}) [@#{username}](https://github.com/#{username}))"
|
18
|
-
end
|
19
|
-
|
20
|
-
def labels
|
21
|
-
gh.labels_for_issue('cucumber/cucumber-ruby', num).map { |label| label['name'] }
|
22
|
-
end
|
23
|
-
|
24
|
-
def type_label
|
25
|
-
types = labels.select { |label| label =~ /^type: / }
|
26
|
-
if types.empty?
|
27
|
-
raise('This pull request does not have a \'type\' label on it. Please add one.')
|
28
|
-
end
|
29
|
-
|
30
|
-
if types.length > 1
|
31
|
-
raise('This pull request has more than one \'type\' label on it. Please choose just one.')
|
32
|
-
end
|
33
|
-
|
34
|
-
types.first
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
class Changelog
|
39
|
-
def self.open(path, &block)
|
40
|
-
full_path = File.expand_path(File.dirname(__FILE__) + '/' + path + '/CHANGELOG.md')
|
41
|
-
log = new(File.read(full_path))
|
42
|
-
log.instance_exec(&block)
|
43
|
-
File.write(full_path, log.body)
|
44
|
-
end
|
45
|
-
|
46
|
-
attr_reader :lines
|
47
|
-
|
48
|
-
def initialize(body)
|
49
|
-
@lines = body.lines
|
50
|
-
end
|
51
|
-
|
52
|
-
def insert(label, entry)
|
53
|
-
section_index = lines.index { |line| line.strip == heading_for(label) }
|
54
|
-
unless section_index
|
55
|
-
raise("Unable to find matching heading in CHANGELOG.md for '#{label}' (#{heading_for(label)})")
|
56
|
-
end
|
57
|
-
lines.insert(section_index + 2, "* #{entry}\n")
|
58
|
-
end
|
59
|
-
|
60
|
-
def heading_for(label)
|
61
|
-
text = {
|
62
|
-
'type: new feature' => 'Added',
|
63
|
-
'type: bug' => 'Fixed',
|
64
|
-
'type: refactoring / developer experience' => 'Changed'
|
65
|
-
}.fetch(label)
|
66
|
-
"### #{text}"
|
67
|
-
end
|
68
|
-
|
69
|
-
def body
|
70
|
-
lines.join
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
begin
|
75
|
-
token = ENV['GITHUB_TOKEN'] || raise('You need to set GITHUB_TOKEN')
|
76
|
-
num = (ARGV[0] || raise("syntax: #{$0} <PULL-REQUEST-NUMBER>")).to_i
|
77
|
-
|
78
|
-
gh = Octokit::Client.new(access_token: token)
|
79
|
-
pr = PullRequest.new(gh, num)
|
80
|
-
|
81
|
-
Changelog.open('..') do
|
82
|
-
insert(pr.type_label, pr.entry)
|
83
|
-
end
|
84
|
-
rescue StandardError => error
|
85
|
-
abort error.message
|
86
|
-
end
|
@@ -1,446 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'yaml'
|
4
|
-
|
5
|
-
module Cucumber
|
6
|
-
module Cli
|
7
|
-
describe Configuration do
|
8
|
-
module ExposesOptions
|
9
|
-
attr_reader :options
|
10
|
-
end
|
11
|
-
|
12
|
-
def given_cucumber_yml_defined_as(hash_or_string)
|
13
|
-
allow(File).to receive(:exist?) { true }
|
14
|
-
|
15
|
-
cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
|
16
|
-
|
17
|
-
allow(IO).to receive(:read).with('cucumber.yml') { cucumber_yml }
|
18
|
-
end
|
19
|
-
|
20
|
-
def given_the_following_files(*files)
|
21
|
-
allow(File).to receive(:directory?) { true }
|
22
|
-
allow(File).to receive(:file?) { true }
|
23
|
-
allow(Dir).to receive(:[]) { files }
|
24
|
-
end
|
25
|
-
|
26
|
-
before(:each) do
|
27
|
-
allow(File).to receive(:exist?) { false } # Meaning, no cucumber.yml exists
|
28
|
-
allow(Kernel).to receive(:exit)
|
29
|
-
end
|
30
|
-
|
31
|
-
def config
|
32
|
-
@config ||= Configuration.new(@out = StringIO.new, @error = StringIO.new).extend(ExposesOptions)
|
33
|
-
end
|
34
|
-
|
35
|
-
def reset_config
|
36
|
-
@config = nil
|
37
|
-
end
|
38
|
-
|
39
|
-
attr_reader :out, :error
|
40
|
-
|
41
|
-
it 'uses the default profile when no profile is defined' do
|
42
|
-
given_cucumber_yml_defined_as({'default' => '--require some_file'})
|
43
|
-
|
44
|
-
config.parse!(%w{--format progress})
|
45
|
-
|
46
|
-
expect(config.options[:require]).to include('some_file')
|
47
|
-
end
|
48
|
-
|
49
|
-
context '--profile' do
|
50
|
-
include RSpec::WorkInProgress
|
51
|
-
|
52
|
-
it 'expands args from profiles in the cucumber.yml file' do
|
53
|
-
given_cucumber_yml_defined_as({'bongo' => '--require from/yml'})
|
54
|
-
|
55
|
-
config.parse!(%w{--format progress --profile bongo})
|
56
|
-
|
57
|
-
expect(config.options[:formats]).to eq [['progress', {}, out]]
|
58
|
-
expect(config.options[:require]).to eq ['from/yml']
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'expands args from the default profile when no flags are provided' do
|
62
|
-
given_cucumber_yml_defined_as({'default' => '--require from/yml'})
|
63
|
-
|
64
|
-
config.parse!([])
|
65
|
-
|
66
|
-
expect(config.options[:require]).to eq ['from/yml']
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'allows --strict to be set by a profile' do
|
70
|
-
given_cucumber_yml_defined_as({'bongo' => '--strict'})
|
71
|
-
|
72
|
-
config.parse!(%w{--profile bongo})
|
73
|
-
|
74
|
-
expect(config.options[:strict].strict?(:undefined)).to be true
|
75
|
-
expect(config.options[:strict].strict?(:pending)).to be true
|
76
|
-
expect(config.options[:strict].strict?(:flaky)).to be true
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'allows --strict from a profile to be selectively overridden' do
|
80
|
-
given_cucumber_yml_defined_as({'bongo' => '--strict'})
|
81
|
-
|
82
|
-
config.parse!(%w{--profile bongo --no-strict-flaky})
|
83
|
-
|
84
|
-
expect(config.options[:strict].strict?(:undefined)).to be true
|
85
|
-
expect(config.options[:strict].strict?(:pending)).to be true
|
86
|
-
expect(config.options[:strict].strict?(:flaky)).to be false
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'parses ERB syntax in the cucumber.yml file' do
|
90
|
-
given_cucumber_yml_defined_as("---\ndefault: \"<%=\"--require some_file\"%>\"\n")
|
91
|
-
|
92
|
-
config.parse!([])
|
93
|
-
|
94
|
-
expect(config.options[:require]).to include('some_file')
|
95
|
-
end
|
96
|
-
|
97
|
-
it 'parses ERB in cucumber.yml that makes uses nested ERB sessions' do
|
98
|
-
given_cucumber_yml_defined_as(<<ERB_YML)
|
99
|
-
<%= ERB.new({'standard' => '--require some_file'}.to_yaml).result %>
|
100
|
-
<%= ERB.new({'enhanced' => '--require other_file'}.to_yaml).result %>
|
101
|
-
ERB_YML
|
102
|
-
|
103
|
-
config.parse!(%w(-p standard))
|
104
|
-
|
105
|
-
expect(config.options[:require]).to include('some_file')
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'provides a helpful error message when a specified profile does not exists in cucumber.yml' do
|
109
|
-
given_cucumber_yml_defined_as({'default' => '--require from/yml', 'html_report' => '--format html'})
|
110
|
-
|
111
|
-
expected_message = <<-END_OF_MESSAGE
|
112
|
-
Could not find profile: 'i_do_not_exist'
|
113
|
-
|
114
|
-
Defined profiles in cucumber.yml:
|
115
|
-
* default
|
116
|
-
* html_report
|
117
|
-
END_OF_MESSAGE
|
118
|
-
|
119
|
-
expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(ProfileNotFound, expected_message)
|
120
|
-
end
|
121
|
-
|
122
|
-
it 'allows profiles to be defined in arrays' do
|
123
|
-
given_cucumber_yml_defined_as({'foo' => ['-f','progress']})
|
124
|
-
|
125
|
-
config.parse!(%w{--profile foo})
|
126
|
-
|
127
|
-
expect(config.options[:formats]).to eq [['progress', {}, out]]
|
128
|
-
end
|
129
|
-
|
130
|
-
it 'disregards default STDOUT formatter defined in profile when another is passed in (via cmd line)' do
|
131
|
-
given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
|
132
|
-
config.parse!(%w{--format progress --profile foo})
|
133
|
-
|
134
|
-
expect(config.options[:formats]).to eq [['progress', {}, out]]
|
135
|
-
end
|
136
|
-
|
137
|
-
['--no-profile', '-P'].each do |flag|
|
138
|
-
context 'when none is specified with #{flag}' do
|
139
|
-
it 'disables profiles' do
|
140
|
-
given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
|
141
|
-
|
142
|
-
config.parse!("#{flag} --require some_file.rb".split(' '))
|
143
|
-
|
144
|
-
expect(config.options[:require]).to eq ['some_file.rb']
|
145
|
-
end
|
146
|
-
|
147
|
-
it 'notifies the user that the profiles are being disabled' do
|
148
|
-
given_cucumber_yml_defined_as({'default' => '-v'})
|
149
|
-
|
150
|
-
config.parse!("#{flag} --require some_file.rb".split(' '))
|
151
|
-
|
152
|
-
expect(out.string).to match(/Disabling profiles.../)
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
it 'issues a helpful error message when a specified profile exists but is nil or blank' do
|
158
|
-
[nil, ' '].each do |bad_input|
|
159
|
-
given_cucumber_yml_defined_as({'foo' => bad_input})
|
160
|
-
|
161
|
-
expected_error = /The 'foo' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml./
|
162
|
-
|
163
|
-
expect(-> { config.parse!(%w{--profile foo}) }).to raise_error(expected_error)
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
it 'issues a helpful error message when no YAML file exists and a profile is specified' do
|
168
|
-
expect(File).to receive(:exist?).with('cucumber.yml') { false }
|
169
|
-
|
170
|
-
expected_error = /cucumber\.yml was not found/
|
171
|
-
|
172
|
-
expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(expected_error)
|
173
|
-
end
|
174
|
-
|
175
|
-
it 'issues a helpful error message when cucumber.yml is blank or malformed' do
|
176
|
-
expected_error_message = /cucumber\.yml was found, but was blank or malformed. Please refer to cucumber's documentation on correct profile usage./
|
177
|
-
|
178
|
-
['', 'sfsadfs', "--- \n- an\n- array\n", '---dddfd'].each do |bad_input|
|
179
|
-
given_cucumber_yml_defined_as(bad_input)
|
180
|
-
|
181
|
-
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
182
|
-
|
183
|
-
reset_config
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
it 'issues a helpful error message when cucumber.yml can not be parsed' do
|
188
|
-
expected_error_message = /cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentation on correct profile usage./
|
189
|
-
|
190
|
-
given_cucumber_yml_defined_as('input that causes an exception in YAML loading')
|
191
|
-
|
192
|
-
expect(YAML).to receive(:load).and_raise(ArgumentError)
|
193
|
-
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
194
|
-
end
|
195
|
-
|
196
|
-
it 'issues a helpful error message when cucumber.yml can not be parsed by ERB' do
|
197
|
-
expected_error_message = /cucumber.yml was found, but could not be parsed with ERB. Please refer to cucumber's documentation on correct profile usage./
|
198
|
-
given_cucumber_yml_defined_as('<% this_fails %>')
|
199
|
-
|
200
|
-
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
it 'accepts --dry-run option' do
|
205
|
-
config.parse!(%w{--dry-run})
|
206
|
-
|
207
|
-
expect(config.options[:dry_run]).to be true
|
208
|
-
end
|
209
|
-
|
210
|
-
it 'implies --no-duration with --dry-run option' do
|
211
|
-
config.parse!(%w{--dry-run})
|
212
|
-
|
213
|
-
expect(config.options[:duration]).to be false
|
214
|
-
end
|
215
|
-
|
216
|
-
it 'accepts --no-source option' do
|
217
|
-
config.parse!(%w{--no-source})
|
218
|
-
|
219
|
-
expect(config.options[:source]).to be false
|
220
|
-
end
|
221
|
-
|
222
|
-
it 'accepts --no-snippets option' do
|
223
|
-
config.parse!(%w{--no-snippets})
|
224
|
-
|
225
|
-
expect(config.options[:snippets]).to be false
|
226
|
-
end
|
227
|
-
|
228
|
-
it 'sets snippets and source and duration to false with --quiet option' do
|
229
|
-
config.parse!(%w{--quiet})
|
230
|
-
|
231
|
-
expect(config.options[:snippets]).to be false
|
232
|
-
expect(config.options[:source]).to be false
|
233
|
-
expect(config.options[:duration]).to be false
|
234
|
-
end
|
235
|
-
|
236
|
-
it 'sets duration to false with --no-duration' do
|
237
|
-
config.parse!(%w{--no-duration})
|
238
|
-
|
239
|
-
expect(config.options[:duration]).to be false
|
240
|
-
end
|
241
|
-
|
242
|
-
it 'accepts --verbose option' do
|
243
|
-
config.parse!(%w{--verbose})
|
244
|
-
|
245
|
-
expect(config.options[:verbose]).to be true
|
246
|
-
end
|
247
|
-
|
248
|
-
it 'accepts --out option' do
|
249
|
-
config.parse!(%w{--out jalla.txt})
|
250
|
-
|
251
|
-
expect(config.formats).to eq [['pretty', {}, 'jalla.txt']]
|
252
|
-
end
|
253
|
-
|
254
|
-
it 'accepts multiple --out options' do
|
255
|
-
config.parse!(%w{--format progress --out file1 --out file2})
|
256
|
-
|
257
|
-
expect(config.formats).to eq [['progress', {}, 'file2']]
|
258
|
-
end
|
259
|
-
|
260
|
-
it 'accepts multiple --format options and put the STDOUT one first so progress is seen' do
|
261
|
-
config.parse!(%w{--format pretty --out pretty.txt --format progress})
|
262
|
-
|
263
|
-
expect(config.formats).to eq [['progress', {}, out], ['pretty', {}, 'pretty.txt']]
|
264
|
-
end
|
265
|
-
|
266
|
-
it 'does not accept multiple --format options when both use implicit STDOUT' do
|
267
|
-
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)')
|
268
|
-
end
|
269
|
-
|
270
|
-
it 'does not accept multiple --format options when both use implicit STDOUT (using profile with no formatters)' do
|
271
|
-
given_cucumber_yml_defined_as({'default' => ['-q']})
|
272
|
-
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)')
|
273
|
-
end
|
274
|
-
|
275
|
-
it 'accepts same --format options with implicit STDOUT, and keep only one' do
|
276
|
-
config.parse!(%w{--format pretty --format pretty})
|
277
|
-
|
278
|
-
expect(config.formats).to eq [['pretty', {}, out]]
|
279
|
-
end
|
280
|
-
|
281
|
-
it 'does not accept multiple --out streams pointing to the same place' do
|
282
|
-
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)')
|
283
|
-
end
|
284
|
-
|
285
|
-
it 'does not accept multiple --out streams pointing to the same place (one from profile, one from command line)' do
|
286
|
-
given_cucumber_yml_defined_as({'default' => ['-f','progress', '--out', 'file1']})
|
287
|
-
expect(-> { config.parse!(%w{--format pretty --out file1}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
|
288
|
-
end
|
289
|
-
|
290
|
-
it 'associates --out to previous --format' do
|
291
|
-
config.parse!(%w{--format progress --out file1 --format profile --out file2})
|
292
|
-
|
293
|
-
expect(config.formats).to eq [['progress', {}, 'file1'], ['profile', {}, 'file2']]
|
294
|
-
end
|
295
|
-
|
296
|
-
it 'accepts same --format options with same --out streams and keep only one' do
|
297
|
-
config.parse!(%w{--format html --out file --format pretty --format html --out file})
|
298
|
-
|
299
|
-
expect(config.formats).to eq [['pretty', {}, out], ['html', {}, 'file']]
|
300
|
-
end
|
301
|
-
|
302
|
-
it 'accepts same --format options with different --out streams' do
|
303
|
-
config.parse!(%w{--format html --out file1 --format html --out file2})
|
304
|
-
|
305
|
-
expect(config.formats).to eq [['html', {}, 'file1'], ['html', {}, 'file2']]
|
306
|
-
end
|
307
|
-
|
308
|
-
it 'accepts --color option' do
|
309
|
-
expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(true)
|
310
|
-
|
311
|
-
config.parse!(['--color'])
|
312
|
-
end
|
313
|
-
|
314
|
-
it 'accepts --no-color option' do
|
315
|
-
expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(false)
|
316
|
-
|
317
|
-
config = Configuration.new(StringIO.new)
|
318
|
-
config.parse!(['--no-color'])
|
319
|
-
end
|
320
|
-
|
321
|
-
describe '--backtrace' do
|
322
|
-
before do
|
323
|
-
Cucumber.use_full_backtrace = false
|
324
|
-
end
|
325
|
-
|
326
|
-
it 'shows full backtrace when --backtrace is present' do
|
327
|
-
Main.new(['--backtrace'])
|
328
|
-
begin
|
329
|
-
expect('x').to eq 'y'
|
330
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
331
|
-
expect(e.backtrace[0]).not_to eq "#{__FILE__}:#{__LINE__ - 2}"
|
332
|
-
end
|
333
|
-
end
|
334
|
-
|
335
|
-
after do
|
336
|
-
Cucumber.use_full_backtrace = false
|
337
|
-
end
|
338
|
-
end
|
339
|
-
|
340
|
-
it 'accepts multiple --name options' do
|
341
|
-
config.parse!(['--name', 'User logs in', '--name', 'User signs up'])
|
342
|
-
|
343
|
-
expect(config.options[:name_regexps]).to include(/User logs in/)
|
344
|
-
expect(config.options[:name_regexps]).to include(/User signs up/)
|
345
|
-
end
|
346
|
-
|
347
|
-
it 'accepts multiple -n options' do
|
348
|
-
config.parse!(['-n', 'User logs in', '-n', 'User signs up'])
|
349
|
-
|
350
|
-
expect(config.options[:name_regexps]).to include(/User logs in/)
|
351
|
-
expect(config.options[:name_regexps]).to include(/User signs up/)
|
352
|
-
end
|
353
|
-
|
354
|
-
it 'should allow specifying environment variables on the command line' do
|
355
|
-
config.parse!(['foo=bar'])
|
356
|
-
|
357
|
-
expect(ENV['foo']).to eq 'bar'
|
358
|
-
expect(config.paths).not_to include('foo=bar')
|
359
|
-
end
|
360
|
-
|
361
|
-
it 'allows specifying environment variables in profiles' do
|
362
|
-
given_cucumber_yml_defined_as({'selenium' => 'RAILS_ENV=selenium'})
|
363
|
-
config.parse!(['--profile', 'selenium'])
|
364
|
-
|
365
|
-
expect(ENV['RAILS_ENV']).to eq 'selenium'
|
366
|
-
expect(config.paths).not_to include('RAILS_ENV=selenium')
|
367
|
-
end
|
368
|
-
|
369
|
-
describe '#tag_expressions' do
|
370
|
-
it 'returns an empty expression when no tags are specified' do
|
371
|
-
config.parse!([])
|
372
|
-
|
373
|
-
expect(config.tag_expressions).to be_empty
|
374
|
-
end
|
375
|
-
|
376
|
-
it 'returns an expression when tags are specified' do
|
377
|
-
config.parse!(['--tags','@foo'])
|
378
|
-
|
379
|
-
expect(config.tag_expressions).not_to be_empty
|
380
|
-
end
|
381
|
-
end
|
382
|
-
|
383
|
-
describe '#tag_limits' do
|
384
|
-
it 'returns an empty hash when no limits are specified' do
|
385
|
-
config.parse!([])
|
386
|
-
|
387
|
-
expect(config.tag_limits).to eq({ })
|
388
|
-
end
|
389
|
-
|
390
|
-
it 'returns a hash of limits when limits are specified' do
|
391
|
-
config.parse!(['--tags','@foo:1'])
|
392
|
-
|
393
|
-
expect(config.tag_limits).to eq({ '@foo' => 1 })
|
394
|
-
end
|
395
|
-
end
|
396
|
-
|
397
|
-
describe '#dry_run?' do
|
398
|
-
it 'returns true when --dry-run was specified on in the arguments' do
|
399
|
-
config.parse!(['--dry-run'])
|
400
|
-
|
401
|
-
expect(config.dry_run?).to be true
|
402
|
-
end
|
403
|
-
|
404
|
-
it 'returns true when --dry-run was specified in yaml file' do
|
405
|
-
given_cucumber_yml_defined_as({'default' => '--dry-run'})
|
406
|
-
config.parse!([])
|
407
|
-
|
408
|
-
expect(config.dry_run?).to be true
|
409
|
-
end
|
410
|
-
|
411
|
-
it 'returns false by default' do
|
412
|
-
config.parse!([])
|
413
|
-
|
414
|
-
expect(config.dry_run?).to be false
|
415
|
-
end
|
416
|
-
end
|
417
|
-
|
418
|
-
describe '#snippet_type' do
|
419
|
-
it 'returns the snippet type when it was set' do
|
420
|
-
config.parse!(['--snippet-type', 'classic'])
|
421
|
-
|
422
|
-
expect(config.snippet_type).to eq :classic
|
423
|
-
end
|
424
|
-
|
425
|
-
it 'returns the snippet type when it was set with shorthand option' do
|
426
|
-
config.parse!(['-I', 'classic'])
|
427
|
-
|
428
|
-
expect(config.snippet_type).to eq :classic
|
429
|
-
end
|
430
|
-
|
431
|
-
it 'returns the default snippet type if it was not set' do
|
432
|
-
config.parse!([])
|
433
|
-
|
434
|
-
expect(config.snippet_type).to eq :cucumber_expression
|
435
|
-
end
|
436
|
-
end
|
437
|
-
|
438
|
-
describe '#retry_attempts' do
|
439
|
-
it 'returns the specified number of retries' do
|
440
|
-
config.parse!(['--retry=3'])
|
441
|
-
expect(config.retry_attempts).to eql 3
|
442
|
-
end
|
443
|
-
end
|
444
|
-
end
|
445
|
-
end
|
446
|
-
end
|