cucumber 3.0.0.pre.1 → 4.0.0.rc.4
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/{History.md → CHANGELOG.md} +339 -37
- data/CONTRIBUTING.md +11 -21
- data/README.md +20 -12
- data/bin/cucumber +2 -1
- data/lib/autotest/cucumber.rb +1 -0
- data/lib/autotest/cucumber_mixin.rb +44 -48
- 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 +3 -2
- data/lib/cucumber.rb +2 -1
- data/lib/cucumber/cli/configuration.rb +15 -20
- data/lib/cucumber/cli/main.rb +15 -15
- data/lib/cucumber/cli/options.rb +249 -197
- data/lib/cucumber/cli/profile_loader.rb +63 -38
- data/lib/cucumber/cli/rerun_file.rb +1 -0
- data/lib/cucumber/configuration.rb +49 -44
- data/lib/cucumber/constantize.rb +8 -10
- data/lib/cucumber/core_ext/string.rb +2 -1
- data/lib/cucumber/deprecate.rb +34 -10
- data/lib/cucumber/encoding.rb +2 -1
- data/lib/cucumber/errors.rb +10 -8
- data/lib/cucumber/events.rb +18 -3
- data/lib/cucumber/events/envelope.rb +9 -0
- data/lib/cucumber/events/gherkin_source_parsed.rb +11 -0
- data/lib/cucumber/events/gherkin_source_read.rb +14 -0
- data/lib/cucumber/events/hook_test_step_created.rb +13 -0
- data/lib/cucumber/events/{step_match.rb → step_activated.rb} +8 -8
- data/lib/cucumber/events/step_definition_registered.rb +5 -9
- data/lib/cucumber/events/test_case_created.rb +13 -0
- data/lib/cucumber/events/test_case_finished.rb +14 -0
- data/lib/cucumber/events/test_case_ready.rb +12 -0
- data/lib/cucumber/events/test_case_started.rb +11 -0
- data/lib/cucumber/events/test_run_finished.rb +2 -3
- data/lib/cucumber/events/test_run_started.rb +14 -0
- data/lib/cucumber/events/test_step_created.rb +13 -0
- data/lib/cucumber/events/test_step_finished.rb +14 -0
- data/lib/cucumber/events/test_step_started.rb +11 -0
- data/lib/cucumber/file_specs.rb +7 -6
- data/lib/cucumber/filters.rb +3 -0
- data/lib/cucumber/filters/activate_steps.rb +12 -6
- 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_case_ready_event.rb +12 -0
- data/lib/cucumber/filters/broadcast_test_run_started_event.rb +28 -0
- data/lib/cucumber/filters/gated_receiver.rb +1 -2
- data/lib/cucumber/filters/prepare_world.rb +6 -13
- data/lib/cucumber/filters/quit.rb +3 -7
- data/lib/cucumber/filters/randomizer.rb +6 -7
- data/lib/cucumber/filters/retry.rb +3 -3
- data/lib/cucumber/filters/tag_limits.rb +5 -5
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
- data/lib/cucumber/filters/tag_limits/verifier.rb +4 -7
- data/lib/cucumber/formatter/ansicolor.rb +38 -45
- data/lib/cucumber/formatter/ast_lookup.rb +165 -0
- data/lib/cucumber/formatter/backtrace_filter.rb +24 -12
- data/lib/cucumber/formatter/console.rb +48 -88
- data/lib/cucumber/formatter/console_counts.rb +11 -29
- data/lib/cucumber/formatter/console_issues.rb +34 -10
- data/lib/cucumber/formatter/duration.rb +2 -1
- data/lib/cucumber/formatter/duration_extractor.rb +4 -2
- data/lib/cucumber/formatter/errors.rb +6 -0
- data/lib/cucumber/formatter/fail_fast.rb +8 -5
- data/lib/cucumber/formatter/fanout.rb +3 -3
- data/lib/cucumber/formatter/ignore_missing_messages.rb +2 -4
- data/lib/cucumber/formatter/interceptor.rb +12 -14
- data/lib/cucumber/formatter/io.rb +5 -4
- data/lib/cucumber/formatter/json.rb +109 -115
- data/lib/cucumber/formatter/junit.rb +85 -80
- data/lib/cucumber/formatter/message.rb +246 -0
- data/lib/cucumber/formatter/pretty.rb +353 -153
- data/lib/cucumber/formatter/progress.rb +34 -38
- data/lib/cucumber/formatter/query/hook_by_test_step.rb +31 -0
- data/lib/cucumber/formatter/query/pickle_by_test.rb +26 -0
- data/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +26 -0
- data/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +40 -0
- data/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +40 -0
- data/lib/cucumber/formatter/rerun.rb +24 -5
- data/lib/cucumber/formatter/stepdefs.rb +2 -2
- data/lib/cucumber/formatter/steps.rb +5 -6
- data/lib/cucumber/formatter/summary.rb +18 -11
- data/lib/cucumber/formatter/unicode.rb +16 -18
- data/lib/cucumber/formatter/usage.rb +37 -33
- data/lib/cucumber/gherkin/data_table_parser.rb +18 -6
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +83 -86
- data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
- data/lib/cucumber/gherkin/i18n.rb +1 -0
- data/lib/cucumber/gherkin/steps_parser.rb +18 -8
- data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +37 -23
- data/lib/cucumber/glue/hook.rb +67 -0
- data/lib/cucumber/glue/invoke_in_world.rb +65 -0
- data/lib/cucumber/glue/proto_world.rb +231 -0
- data/lib/cucumber/glue/registry_and_more.rb +221 -0
- data/lib/cucumber/glue/snippet.rb +205 -0
- data/lib/cucumber/glue/step_definition.rb +166 -0
- data/lib/cucumber/glue/world_factory.rb +21 -0
- data/lib/cucumber/hooks.rb +30 -20
- data/lib/cucumber/load_path.rb +1 -0
- data/lib/cucumber/multiline_argument.rb +9 -19
- data/lib/cucumber/multiline_argument/data_table.rb +143 -250
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +154 -0
- data/lib/cucumber/multiline_argument/doc_string.rb +2 -1
- data/lib/cucumber/platform.rb +5 -6
- data/lib/cucumber/project_initializer.rb +2 -2
- data/lib/cucumber/rake/task.rb +34 -27
- data/lib/cucumber/rspec/disable_option_parser.rb +10 -8
- data/lib/cucumber/rspec/doubles.rb +2 -1
- data/lib/cucumber/running_test_case.rb +4 -54
- data/lib/cucumber/runtime.rb +54 -72
- data/lib/cucumber/runtime/after_hooks.rb +10 -5
- data/lib/cucumber/runtime/before_hooks.rb +9 -4
- data/lib/cucumber/runtime/for_programming_languages.rb +12 -44
- data/lib/cucumber/runtime/step_hooks.rb +5 -2
- data/lib/cucumber/runtime/support_code.rb +30 -32
- data/lib/cucumber/runtime/user_interface.rb +16 -34
- data/lib/cucumber/step_definition_light.rb +7 -4
- data/lib/cucumber/step_definitions.rb +3 -2
- data/lib/cucumber/step_match.rb +42 -26
- data/lib/cucumber/step_match_search.rb +11 -12
- data/lib/cucumber/term/ansicolor.rb +39 -39
- data/lib/cucumber/unit.rb +1 -0
- data/lib/cucumber/version +1 -1
- data/lib/simplecov_setup.rb +2 -1
- metadata +238 -623
- data/.coveralls.yml +0 -1
- data/.github/ISSUE_TEMPLATE.md +0 -48
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -39
- data/.rspec +0 -1
- data/.ruby-gemset +0 -1
- data/.travis.yml +0 -35
- data/.yardopts +0 -1
- data/Gemfile +0 -22
- data/Rakefile +0 -22
- data/cucumber.gemspec +0 -47
- data/cucumber.yml +0 -20
- 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 -24
- 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 -5
- data/examples/i18n/bg/features/support/world.rb +0 -8
- data/examples/i18n/bg/lib/calculator.rb +0 -24
- data/examples/i18n/ca/Rakefile +0 -6
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -21
- 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 -24
- 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 -24
- 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 -24
- 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 -24
- 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 -7
- 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 -24
- 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 -24
- 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 -21
- 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 -24
- 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 -24
- 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 -5
- 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 -24
- 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 -24
- 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 -25
- 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 -25
- 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 -24
- 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 -24
- 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 -5
- 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 -24
- 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 -24
- 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 -24
- 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 -6
- 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 -24
- data/examples/i18n/pl/features/support/env.rb +0 -5
- 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 -5
- 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 -21
- 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 -5
- data/examples/i18n/ru/features/support/world.rb +0 -8
- data/examples/i18n/ru/lib/calculator.rb +0 -24
- 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 -24
- 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 -5
- 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 -24
- 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 -24
- 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 -24
- 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 -5
- data/examples/i18n/uk/features/support/world.rb +0 -8
- data/examples/i18n/uk/lib/calculator.rb +0 -24
- 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 -5
- data/examples/i18n/uz/features/support/world.rb +0 -8
- data/examples/i18n/uz/lib/calculator.rb +0 -24
- 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 -26
- 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 -24
- 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 -10
- 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 -6
- 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 -26
- data/examples/watir/features/support/env.rb +0 -35
- data/examples/watir/features/support/screenshots.rb +0 -47
- data/features/docs/api/list_step_defs_as_json.feature +0 -50
- data/features/docs/api/listen_for_events.feature +0 -59
- data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -26
- data/features/docs/cli/backtraces.feature +0 -36
- data/features/docs/cli/dry_run.feature +0 -70
- data/features/docs/cli/exclude_files.feature +0 -18
- data/features/docs/cli/execute_with_tag_filter.feature +0 -117
- data/features/docs/cli/fail_fast.feature +0 -46
- data/features/docs/cli/finding_steps.feature +0 -28
- data/features/docs/cli/help.feature +0 -8
- 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 -67
- data/features/docs/cli/run_scenarios_matching_name.feature +0 -104
- 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 -65
- data/features/docs/cli/strict_mode.feature +0 -64
- data/features/docs/defining_steps/nested_steps.feature +0 -177
- data/features/docs/defining_steps/nested_steps_i18n.feature +0 -36
- data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -54
- 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 -30
- data/features/docs/defining_steps/snippets.feature +0 -56
- data/features/docs/defining_steps/table_diffing.feature +0 -50
- data/features/docs/exception_in_after_hook.feature +0 -126
- data/features/docs/exception_in_after_step_hook.feature +0 -102
- data/features/docs/exception_in_around_hook.feature +0 -78
- data/features/docs/exception_in_before_hook.feature +0 -96
- data/features/docs/extending_cucumber/custom_filter.feature +0 -29
- data/features/docs/extending_cucumber/custom_formatter.feature +0 -102
- data/features/docs/formatters/api_methods.feature +0 -37
- data/features/docs/formatters/debug_formatter.feature +0 -47
- data/features/docs/formatters/formatter_step_file_colon_line.feature +0 -44
- 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 -454
- data/features/docs/formatters/pretty_formatter.feature +0 -73
- data/features/docs/formatters/progress_formatter.feature +0 -31
- data/features/docs/formatters/rerun_formatter.feature +0 -188
- data/features/docs/formatters/summary_formatter.feature +0 -34
- data/features/docs/formatters/usage_formatter.feature +0 -98
- data/features/docs/getting_started.feature +0 -27
- data/features/docs/gherkin/background.feature +0 -548
- data/features/docs/gherkin/doc_strings.feature +0 -74
- data/features/docs/gherkin/expand_option_for_outlines.feature +0 -46
- data/features/docs/gherkin/language_from_header.feature +0 -32
- data/features/docs/gherkin/language_help.feature +0 -42
- data/features/docs/gherkin/outlines.feature +0 -156
- data/features/docs/gherkin/unicode_table.feature +0 -32
- data/features/docs/gherkin/using_descriptions.feature +0 -82
- 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 -141
- data/features/docs/raketask.feature +0 -44
- data/features/docs/work_in_progress.feature +0 -154
- data/features/docs/writing_support_code/after_hooks.feature +0 -102
- data/features/docs/writing_support_code/after_step_hooks.feature +0 -53
- data/features/docs/writing_support_code/around_hooks.feature +0 -260
- data/features/docs/writing_support_code/before_hook.feature +0 -65
- data/features/docs/writing_support_code/hook_order.feature +0 -61
- data/features/docs/writing_support_code/load_path.feature +0 -17
- 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/transforms.feature +0 -98
- data/features/docs/writing_support_code/world.feature +0 -129
- data/features/lib/step_definitions/aruba_steps.rb +0 -27
- data/features/lib/step_definitions/cli_steps.rb +0 -4
- data/features/lib/step_definitions/cucumber_steps.rb +0 -79
- data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -13
- 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/step_definitions/wire_steps.rb +0 -59
- data/features/lib/support/env.rb +0 -22
- data/features/lib/support/fake_wire_server.rb +0 -81
- data/features/lib/support/feature_factory.rb +0 -68
- data/features/lib/support/normalise_output.rb +0 -51
- data/gem_tasks/contributors.rake +0 -16
- data/gem_tasks/cov.rake +0 -6
- data/gem_tasks/cucumber.rake +0 -26
- data/gem_tasks/downloads.rb +0 -8
- data/gem_tasks/environment.rake +0 -8
- data/gem_tasks/examples.rake +0 -12
- data/gem_tasks/fix_cr_lf.rake +0 -11
- 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/lib/cucumber/core_ext/instance_exec.rb +0 -71
- data/lib/cucumber/formatter/cucumber.css +0 -286
- data/lib/cucumber/formatter/cucumber.sass +0 -247
- data/lib/cucumber/formatter/debug.rb +0 -36
- data/lib/cucumber/formatter/hook_query_visitor.rb +0 -41
- data/lib/cucumber/formatter/html.rb +0 -690
- data/lib/cucumber/formatter/jquery-min.js +0 -154
- data/lib/cucumber/formatter/json_pretty.rb +0 -11
- data/lib/cucumber/formatter/legacy_api/adapter.rb +0 -1012
- data/lib/cucumber/formatter/legacy_api/ast.rb +0 -390
- data/lib/cucumber/formatter/legacy_api/results.rb +0 -52
- data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +0 -32
- data/lib/cucumber/rb_support/rb_hook.rb +0 -20
- data/lib/cucumber/rb_support/rb_language.rb +0 -227
- data/lib/cucumber/rb_support/rb_step_definition.rb +0 -132
- data/lib/cucumber/rb_support/rb_transform.rb +0 -60
- data/lib/cucumber/rb_support/rb_world.rb +0 -171
- data/lib/cucumber/rb_support/snippet.rb +0 -171
- data/lib/cucumber/step_argument.rb +0 -26
- data/spec/cucumber/cli/configuration_spec.rb +0 -436
- data/spec/cucumber/cli/main_spec.rb +0 -84
- data/spec/cucumber/cli/options_spec.rb +0 -411
- data/spec/cucumber/cli/profile_loader_spec.rb +0 -47
- 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/core_ext/instance_exec_spec.rb +0 -5
- 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 -85
- 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/console_counts_spec.rb +0 -14
- data/spec/cucumber/formatter/debug_spec.rb +0 -65
- 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 -842
- data/spec/cucumber/formatter/junit_spec.rb +0 -253
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2187
- data/spec/cucumber/formatter/pretty_spec.rb +0 -920
- 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 -83
- data/spec/cucumber/hooks_spec.rb +0 -31
- data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -604
- data/spec/cucumber/project_initializer_spec.rb +0 -88
- data/spec/cucumber/rake/forked_spec.rb +0 -54
- data/spec/cucumber/rake/task_spec.rb +0 -86
- data/spec/cucumber/rb_support/rb_language_spec.rb +0 -321
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -200
- data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -47
- data/spec/cucumber/rb_support/rb_world_spec.rb +0 -48
- data/spec/cucumber/rb_support/snippet_spec.rb +0 -138
- data/spec/cucumber/running_test_case_spec.rb +0 -140
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -37
- 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 -123
- 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,171 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module Cucumber
|
3
|
-
module RbSupport
|
4
|
-
module Snippet
|
5
|
-
|
6
|
-
ARGUMENT_PATTERNS = ['"([^"]*)"', '(\d+)']
|
7
|
-
|
8
|
-
class Generator
|
9
|
-
def self.register_on(configuration)
|
10
|
-
configuration.snippet_generators << new
|
11
|
-
end
|
12
|
-
|
13
|
-
def call(code_keyword, step_name, multiline_arg, snippet_type = :regexp)
|
14
|
-
snippet_class = typed_snippet_class(snippet_type)
|
15
|
-
snippet_class.new(code_keyword, step_name, multiline_arg).to_s
|
16
|
-
end
|
17
|
-
|
18
|
-
def typed_snippet_class(type)
|
19
|
-
SNIPPET_TYPES.fetch(type || :regexp)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class BaseSnippet
|
24
|
-
|
25
|
-
def initialize(code_keyword, pattern, multiline_argument)
|
26
|
-
@number_of_arguments = 0
|
27
|
-
@code_keyword = code_keyword
|
28
|
-
@pattern = replace_and_count_capturing_groups(pattern)
|
29
|
-
@multiline_argument = MultilineArgumentSnippet.new(multiline_argument)
|
30
|
-
end
|
31
|
-
|
32
|
-
def to_s
|
33
|
-
"#{step} #{do_block}"
|
34
|
-
end
|
35
|
-
|
36
|
-
def step
|
37
|
-
"#{code_keyword}#{typed_pattern}"
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.cli_option_string(type)
|
41
|
-
"%-7s: %-28s e.g. %s" % [type, description, example]
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
attr_reader :code_keyword, :pattern, :multiline_argument, :number_of_arguments
|
47
|
-
|
48
|
-
def replace_and_count_capturing_groups(pattern)
|
49
|
-
modified_pattern = ::Regexp.escape(pattern).gsub('\ ', ' ').gsub('/', '\/')
|
50
|
-
|
51
|
-
ARGUMENT_PATTERNS.each do |argument_pattern|
|
52
|
-
modified_pattern.gsub!(::Regexp.new(argument_pattern), argument_pattern)
|
53
|
-
@number_of_arguments += modified_pattern.scan(argument_pattern).length
|
54
|
-
end
|
55
|
-
|
56
|
-
modified_pattern
|
57
|
-
end
|
58
|
-
|
59
|
-
def do_block
|
60
|
-
do_block = String.new
|
61
|
-
do_block << "do#{arguments}\n"
|
62
|
-
multiline_argument.append_comment_to(do_block)
|
63
|
-
do_block << " pending # Write code here that turns the phrase above into concrete actions\n"
|
64
|
-
do_block << "end"
|
65
|
-
do_block
|
66
|
-
end
|
67
|
-
|
68
|
-
def arguments
|
69
|
-
block_args = (0...number_of_arguments).map { |n| "arg#{n+1}" }
|
70
|
-
multiline_argument.append_block_argument_to(block_args)
|
71
|
-
block_args.empty? ? "" : " |#{block_args.join(", ")}|"
|
72
|
-
end
|
73
|
-
|
74
|
-
def self.example
|
75
|
-
new("Given", "missing step", MultilineArgument::None.new).step
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
class Regexp < BaseSnippet
|
81
|
-
def typed_pattern
|
82
|
-
"(/^#{pattern}$/)"
|
83
|
-
end
|
84
|
-
|
85
|
-
def self.description
|
86
|
-
"Snippets with parentheses"
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
class Classic < BaseSnippet
|
91
|
-
def typed_pattern
|
92
|
-
" /^#{pattern}$/"
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.description
|
96
|
-
"Snippets without parentheses. Note that these cause a warning from modern versions of Ruby."
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
class Percent < BaseSnippet
|
101
|
-
def typed_pattern
|
102
|
-
" %r{^#{pattern}$}"
|
103
|
-
end
|
104
|
-
|
105
|
-
def self.description
|
106
|
-
"Snippets with percent regexp"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
SNIPPET_TYPES = {
|
111
|
-
:regexp => Regexp,
|
112
|
-
:classic => Classic,
|
113
|
-
:percent => Percent
|
114
|
-
}
|
115
|
-
|
116
|
-
module MultilineArgumentSnippet
|
117
|
-
|
118
|
-
def self.new(multiline_argument)
|
119
|
-
builder = Builder.new
|
120
|
-
multiline_argument.describe_to(builder)
|
121
|
-
builder.result
|
122
|
-
end
|
123
|
-
|
124
|
-
class Builder
|
125
|
-
def doc_string(*args)
|
126
|
-
@result = DocString.new
|
127
|
-
end
|
128
|
-
|
129
|
-
def data_table(table, *args)
|
130
|
-
@result = DataTable.new(table)
|
131
|
-
end
|
132
|
-
|
133
|
-
def result
|
134
|
-
@result || None.new
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
class DocString
|
139
|
-
def append_block_argument_to(array)
|
140
|
-
array << 'string'
|
141
|
-
end
|
142
|
-
|
143
|
-
def append_comment_to(string)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
class DataTable
|
148
|
-
def initialize(table)
|
149
|
-
@table = table
|
150
|
-
end
|
151
|
-
|
152
|
-
def append_block_argument_to(array)
|
153
|
-
array << 'table'
|
154
|
-
end
|
155
|
-
|
156
|
-
def append_comment_to(string)
|
157
|
-
string << " # table is a #{Cucumber::MultilineArgument::DataTable.to_s}\n"
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
class None
|
162
|
-
def append_block_argument_to(array)
|
163
|
-
end
|
164
|
-
|
165
|
-
def append_comment_to(string)
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module Cucumber
|
3
|
-
# Defines the location and value of a captured argument from the step
|
4
|
-
# text
|
5
|
-
class StepArgument
|
6
|
-
def self.arguments_from(regexp, step_name)
|
7
|
-
match = regexp.match(step_name)
|
8
|
-
if match
|
9
|
-
n = 0
|
10
|
-
match.captures.map do |val|
|
11
|
-
n += 1
|
12
|
-
offset = match.offset(n)[0]
|
13
|
-
new(offset, val)
|
14
|
-
end
|
15
|
-
else
|
16
|
-
nil
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
attr_reader :offset, :val
|
21
|
-
|
22
|
-
def initialize(offset, val)
|
23
|
-
@offset, @val = offset, val
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,436 +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]).to be true
|
75
|
-
end
|
76
|
-
|
77
|
-
it "parses ERB syntax in the cucumber.yml file" do
|
78
|
-
given_cucumber_yml_defined_as("---\ndefault: \"<%=\"--require some_file\"%>\"\n")
|
79
|
-
|
80
|
-
config.parse!([])
|
81
|
-
|
82
|
-
expect(config.options[:require]).to include('some_file')
|
83
|
-
end
|
84
|
-
|
85
|
-
it "parses ERB in cucumber.yml that makes uses nested ERB sessions" do
|
86
|
-
given_cucumber_yml_defined_as(<<ERB_YML)
|
87
|
-
<%= ERB.new({'standard' => '--require some_file'}.to_yaml).result %>
|
88
|
-
<%= ERB.new({'enhanced' => '--require other_file'}.to_yaml).result %>
|
89
|
-
ERB_YML
|
90
|
-
|
91
|
-
config.parse!(%w(-p standard))
|
92
|
-
|
93
|
-
expect(config.options[:require]).to include('some_file')
|
94
|
-
end
|
95
|
-
|
96
|
-
it "provides a helpful error message when a specified profile does not exists in cucumber.yml" do
|
97
|
-
given_cucumber_yml_defined_as({'default' => '--require from/yml', 'html_report' => '--format html'})
|
98
|
-
|
99
|
-
expected_message = <<-END_OF_MESSAGE
|
100
|
-
Could not find profile: 'i_do_not_exist'
|
101
|
-
|
102
|
-
Defined profiles in cucumber.yml:
|
103
|
-
* default
|
104
|
-
* html_report
|
105
|
-
END_OF_MESSAGE
|
106
|
-
|
107
|
-
expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(ProfileNotFound, expected_message)
|
108
|
-
end
|
109
|
-
|
110
|
-
it "allows profiles to be defined in arrays" do
|
111
|
-
given_cucumber_yml_defined_as({'foo' => ['-f','progress']})
|
112
|
-
|
113
|
-
config.parse!(%w{--profile foo})
|
114
|
-
|
115
|
-
expect(config.options[:formats]).to eq [['progress', out]]
|
116
|
-
end
|
117
|
-
|
118
|
-
it "disregards default STDOUT formatter defined in profile when another is passed in (via cmd line)" do
|
119
|
-
given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
|
120
|
-
config.parse!(%w{--format progress --profile foo})
|
121
|
-
|
122
|
-
expect(config.options[:formats]).to eq [['progress', out]]
|
123
|
-
end
|
124
|
-
|
125
|
-
["--no-profile", "-P"].each do |flag|
|
126
|
-
context 'when none is specified with #{flag}' do
|
127
|
-
it "disables profiles" do
|
128
|
-
given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
|
129
|
-
|
130
|
-
config.parse!("#{flag} --require some_file.rb".split(" "))
|
131
|
-
|
132
|
-
expect(config.options[:require]).to eq ['some_file.rb']
|
133
|
-
end
|
134
|
-
|
135
|
-
it "notifies the user that the profiles are being disabled" do
|
136
|
-
given_cucumber_yml_defined_as({'default' => '-v'})
|
137
|
-
|
138
|
-
config.parse!("#{flag} --require some_file.rb".split(" "))
|
139
|
-
|
140
|
-
expect(out.string).to match /Disabling profiles.../
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
it "issues a helpful error message when a specified profile exists but is nil or blank" do
|
146
|
-
[nil, ' '].each do |bad_input|
|
147
|
-
given_cucumber_yml_defined_as({'foo' => bad_input})
|
148
|
-
|
149
|
-
expected_error = /The 'foo' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml./
|
150
|
-
|
151
|
-
expect(-> { config.parse!(%w{--profile foo}) }).to raise_error(expected_error)
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
it "issues a helpful error message when no YAML file exists and a profile is specified" do
|
156
|
-
expect(File).to receive(:exist?).with('cucumber.yml') { false }
|
157
|
-
|
158
|
-
expected_error = /cucumber\.yml was not found/
|
159
|
-
|
160
|
-
expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(expected_error)
|
161
|
-
end
|
162
|
-
|
163
|
-
it "issues a helpful error message when cucumber.yml is blank or malformed" do
|
164
|
-
expected_error_message = /cucumber\.yml was found, but was blank or malformed. Please refer to cucumber's documentation on correct profile usage./
|
165
|
-
|
166
|
-
['', 'sfsadfs', "--- \n- an\n- array\n", "---dddfd"].each do |bad_input|
|
167
|
-
given_cucumber_yml_defined_as(bad_input)
|
168
|
-
|
169
|
-
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
170
|
-
|
171
|
-
reset_config
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
it "issues a helpful error message when cucumber.yml can not be parsed" do
|
176
|
-
expected_error_message = /cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentation on correct profile usage./
|
177
|
-
|
178
|
-
given_cucumber_yml_defined_as("input that causes an exception in YAML loading")
|
179
|
-
|
180
|
-
expect(YAML).to receive(:load).and_raise(ArgumentError)
|
181
|
-
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
182
|
-
end
|
183
|
-
|
184
|
-
it "issues a helpful error message when cucumber.yml can not be parsed by ERB" do
|
185
|
-
expected_error_message = /cucumber.yml was found, but could not be parsed with ERB. Please refer to cucumber's documentation on correct profile usage./
|
186
|
-
given_cucumber_yml_defined_as("<% this_fails %>")
|
187
|
-
|
188
|
-
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
it "accepts --dry-run option" do
|
193
|
-
config.parse!(%w{--dry-run})
|
194
|
-
|
195
|
-
expect(config.options[:dry_run]).to be true
|
196
|
-
end
|
197
|
-
|
198
|
-
it "implies --no-duration with --dry-run option" do
|
199
|
-
config.parse!(%w{--dry-run})
|
200
|
-
|
201
|
-
expect(config.options[:duration]).to be false
|
202
|
-
end
|
203
|
-
|
204
|
-
it "accepts --no-source option" do
|
205
|
-
config.parse!(%w{--no-source})
|
206
|
-
|
207
|
-
expect(config.options[:source]).to be false
|
208
|
-
end
|
209
|
-
|
210
|
-
it "accepts --no-snippets option" do
|
211
|
-
config.parse!(%w{--no-snippets})
|
212
|
-
|
213
|
-
expect(config.options[:snippets]).to be false
|
214
|
-
end
|
215
|
-
|
216
|
-
it "sets snippets and source and duration to false with --quiet option" do
|
217
|
-
config.parse!(%w{--quiet})
|
218
|
-
|
219
|
-
expect(config.options[:snippets]).to be false
|
220
|
-
expect(config.options[:source]).to be false
|
221
|
-
expect(config.options[:duration]).to be false
|
222
|
-
end
|
223
|
-
|
224
|
-
it "sets duration to false with --no-duration" do
|
225
|
-
config.parse!(%w{--no-duration})
|
226
|
-
|
227
|
-
expect(config.options[:duration]).to be false
|
228
|
-
end
|
229
|
-
|
230
|
-
it "accepts --verbose option" do
|
231
|
-
config.parse!(%w{--verbose})
|
232
|
-
|
233
|
-
expect(config.options[:verbose]).to be true
|
234
|
-
end
|
235
|
-
|
236
|
-
it "accepts --out option" do
|
237
|
-
config.parse!(%w{--out jalla.txt})
|
238
|
-
|
239
|
-
expect(config.formats).to eq [['pretty', 'jalla.txt']]
|
240
|
-
end
|
241
|
-
|
242
|
-
it "accepts multiple --out options" do
|
243
|
-
config.parse!(%w{--format progress --out file1 --out file2})
|
244
|
-
|
245
|
-
expect(config.formats).to eq [['progress', 'file2']]
|
246
|
-
end
|
247
|
-
|
248
|
-
it "accepts multiple --format options and put the STDOUT one first so progress is seen" do
|
249
|
-
config.parse!(%w{--format pretty --out pretty.txt --format progress})
|
250
|
-
|
251
|
-
expect(config.formats).to eq [['progress', out], ['pretty', 'pretty.txt']]
|
252
|
-
end
|
253
|
-
|
254
|
-
it "does not accept multiple --format options when both use implicit STDOUT" do
|
255
|
-
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)")
|
256
|
-
end
|
257
|
-
|
258
|
-
it "does not accept multiple --format options when both use implicit STDOUT (using profile with no formatters)" do
|
259
|
-
given_cucumber_yml_defined_as({'default' => ['-q']})
|
260
|
-
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)")
|
261
|
-
end
|
262
|
-
|
263
|
-
it "accepts same --format options with implicit STDOUT, and keep only one" do
|
264
|
-
config.parse!(%w{--format pretty --format pretty})
|
265
|
-
|
266
|
-
expect(config.formats).to eq [["pretty", out]]
|
267
|
-
end
|
268
|
-
|
269
|
-
it "does not accept multiple --out streams pointing to the same place" do
|
270
|
-
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)")
|
271
|
-
end
|
272
|
-
|
273
|
-
it "does not accept multiple --out streams pointing to the same place (one from profile, one from command line)" do
|
274
|
-
given_cucumber_yml_defined_as({'default' => ['-f','progress', '--out', 'file1']})
|
275
|
-
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)")
|
276
|
-
end
|
277
|
-
|
278
|
-
it "associates --out to previous --format" do
|
279
|
-
config.parse!(%w{--format progress --out file1 --format profile --out file2})
|
280
|
-
|
281
|
-
expect(config.formats).to eq [["progress", "file1"], ["profile" ,"file2"]]
|
282
|
-
end
|
283
|
-
|
284
|
-
it "accepts same --format options with same --out streams and keep only one" do
|
285
|
-
config.parse!(%w{--format html --out file --format pretty --format html --out file})
|
286
|
-
|
287
|
-
expect(config.formats).to eq [["pretty", out], ["html", "file"]]
|
288
|
-
end
|
289
|
-
|
290
|
-
it "accepts same --format options with different --out streams" do
|
291
|
-
config.parse!(%w{--format html --out file1 --format html --out file2})
|
292
|
-
|
293
|
-
expect(config.formats).to eq [["html", "file1"], ["html", "file2"]]
|
294
|
-
end
|
295
|
-
|
296
|
-
it "accepts --color option" do
|
297
|
-
expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(true)
|
298
|
-
|
299
|
-
config.parse!(['--color'])
|
300
|
-
end
|
301
|
-
|
302
|
-
it "accepts --no-color option" do
|
303
|
-
expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(false)
|
304
|
-
|
305
|
-
config = Configuration.new(StringIO.new)
|
306
|
-
config.parse!(['--no-color'])
|
307
|
-
end
|
308
|
-
|
309
|
-
describe "--backtrace" do
|
310
|
-
before do
|
311
|
-
Cucumber.use_full_backtrace = false
|
312
|
-
end
|
313
|
-
|
314
|
-
it "shows full backtrace when --backtrace is present" do
|
315
|
-
Main.new(['--backtrace'])
|
316
|
-
begin
|
317
|
-
expect("x").to eq "y"
|
318
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
319
|
-
expect(e.backtrace[0]).not_to eq "#{__FILE__}:#{__LINE__ - 2}"
|
320
|
-
end
|
321
|
-
end
|
322
|
-
|
323
|
-
after do
|
324
|
-
Cucumber.use_full_backtrace = false
|
325
|
-
end
|
326
|
-
end
|
327
|
-
|
328
|
-
it "accepts multiple --name options" do
|
329
|
-
config.parse!(['--name', "User logs in", '--name', "User signs up"])
|
330
|
-
|
331
|
-
expect(config.options[:name_regexps]).to include(/User logs in/)
|
332
|
-
expect(config.options[:name_regexps]).to include(/User signs up/)
|
333
|
-
end
|
334
|
-
|
335
|
-
it "accepts multiple -n options" do
|
336
|
-
config.parse!(['-n', "User logs in", '-n', "User signs up"])
|
337
|
-
|
338
|
-
expect(config.options[:name_regexps]).to include(/User logs in/)
|
339
|
-
expect(config.options[:name_regexps]).to include(/User signs up/)
|
340
|
-
end
|
341
|
-
|
342
|
-
it "should allow specifying environment variables on the command line" do
|
343
|
-
config.parse!(["foo=bar"])
|
344
|
-
|
345
|
-
expect(ENV["foo"]).to eq "bar"
|
346
|
-
expect(config.paths).not_to include('foo=bar')
|
347
|
-
end
|
348
|
-
|
349
|
-
it "allows specifying environment variables in profiles" do
|
350
|
-
given_cucumber_yml_defined_as({'selenium' => 'RAILS_ENV=selenium'})
|
351
|
-
config.parse!(["--profile", "selenium"])
|
352
|
-
|
353
|
-
expect(ENV["RAILS_ENV"]).to eq "selenium"
|
354
|
-
expect(config.paths).not_to include('RAILS_ENV=selenium')
|
355
|
-
end
|
356
|
-
|
357
|
-
describe "#tag_expression" do
|
358
|
-
include RSpec::WorkInProgress
|
359
|
-
|
360
|
-
it "returns an empty expression when no tags are specified" do
|
361
|
-
config.parse!([])
|
362
|
-
|
363
|
-
expect(config.tag_expression).to be_empty
|
364
|
-
end
|
365
|
-
|
366
|
-
it "returns an expression when tags are specified" do
|
367
|
-
config.parse!(['--tags','@foo'])
|
368
|
-
|
369
|
-
expect(config.tag_expression).not_to be_empty
|
370
|
-
end
|
371
|
-
end
|
372
|
-
|
373
|
-
describe '#tag_limits' do
|
374
|
-
it "returns an empty hash when no limits are specified" do
|
375
|
-
config.parse!([])
|
376
|
-
|
377
|
-
expect(config.tag_limits).to eq({ })
|
378
|
-
end
|
379
|
-
|
380
|
-
it "returns a hash of limits when limits are specified" do
|
381
|
-
config.parse!(['--tags','@foo:1'])
|
382
|
-
|
383
|
-
expect(config.tag_limits).to eq({ "@foo" => 1 })
|
384
|
-
end
|
385
|
-
end
|
386
|
-
|
387
|
-
describe "#dry_run?" do
|
388
|
-
it "returns true when --dry-run was specified on in the arguments" do
|
389
|
-
config.parse!(['--dry-run'])
|
390
|
-
|
391
|
-
expect(config.dry_run?).to be true
|
392
|
-
end
|
393
|
-
|
394
|
-
it "returns true when --dry-run was specified in yaml file" do
|
395
|
-
given_cucumber_yml_defined_as({'default' => '--dry-run'})
|
396
|
-
config.parse!([])
|
397
|
-
|
398
|
-
expect(config.dry_run?).to be true
|
399
|
-
end
|
400
|
-
|
401
|
-
it "returns false by default" do
|
402
|
-
config.parse!([])
|
403
|
-
|
404
|
-
expect(config.dry_run?).to be false
|
405
|
-
end
|
406
|
-
end
|
407
|
-
|
408
|
-
describe "#snippet_type" do
|
409
|
-
it "returns the snippet type when it was set" do
|
410
|
-
config.parse!(["--snippet-type", "classic"])
|
411
|
-
|
412
|
-
expect(config.snippet_type).to eq :classic
|
413
|
-
end
|
414
|
-
|
415
|
-
it "returns the snippet type when it was set with shorthand option" do
|
416
|
-
config.parse!(["-I", "classic"])
|
417
|
-
|
418
|
-
expect(config.snippet_type).to eq :classic
|
419
|
-
end
|
420
|
-
|
421
|
-
it "returns the default snippet type if it was not set" do
|
422
|
-
config.parse!([])
|
423
|
-
|
424
|
-
expect(config.snippet_type).to eq :regexp
|
425
|
-
end
|
426
|
-
end
|
427
|
-
|
428
|
-
describe "#retry_attempts" do
|
429
|
-
it "returns the specified number of retries" do
|
430
|
-
config.parse!(['--retry=3'])
|
431
|
-
expect(config.retry_attempts).to eql 3
|
432
|
-
end
|
433
|
-
end
|
434
|
-
end
|
435
|
-
end
|
436
|
-
end
|