cucumber 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +53 -3
- data/CONTRIBUTING.md +2 -4
- data/README.md +6 -5
- data/lib/cucumber/cli/options.rb +3 -1
- data/lib/cucumber/errors.rb +1 -1
- data/lib/cucumber/events/test_step_finished.rb +0 -2
- data/lib/cucumber/events/test_step_started.rb +0 -2
- data/lib/cucumber/events.rb +0 -1
- data/lib/cucumber/filters/quit.rb +0 -1
- data/lib/cucumber/formatter/html.rb +1 -1
- data/lib/cucumber/formatter/html_builder.rb +1 -1
- data/lib/cucumber/formatter/ignore_missing_messages.rb +0 -1
- data/lib/cucumber/formatter/json.rb +1 -1
- data/lib/cucumber/formatter/json_pretty.rb +0 -1
- data/lib/cucumber/formatter/junit.rb +6 -2
- data/lib/cucumber/formatter/rerun.rb +1 -1
- data/lib/cucumber/formatter/summary.rb +0 -1
- data/lib/cucumber/glue/dsl.rb +6 -2
- data/lib/cucumber/glue/proto_world.rb +2 -0
- data/lib/cucumber/glue/step_definition.rb +1 -1
- data/lib/cucumber/glue/world_factory.rb +1 -1
- data/lib/cucumber/hooks.rb +12 -0
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +0 -1
- data/lib/cucumber/multiline_argument/data_table.rb +6 -10
- data/lib/cucumber/multiline_argument.rb +1 -1
- data/lib/cucumber/step_definitions.rb +1 -1
- data/lib/cucumber/step_match.rb +4 -1
- data/lib/cucumber/step_match_search.rb +1 -1
- data/lib/cucumber/version +1 -1
- metadata +32 -571
- 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 -69
- 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/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/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/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 -53
- data/features/docs/writing_support_code/state.feature +0 -32
- data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
- data/features/docs/writing_support_code/world.feature +0 -129
- data/features/lib/step_definitions/aruba_steps.rb +0 -21
- data/features/lib/step_definitions/cli_steps.rb +0 -4
- data/features/lib/step_definitions/cucumber_steps.rb +0 -75
- data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -16
- data/features/lib/step_definitions/json_steps.rb +0 -8
- data/features/lib/step_definitions/junit_steps.rb +0 -14
- data/features/lib/step_definitions/language_steps.rb +0 -9
- data/features/lib/step_definitions/profile_steps.rb +0 -16
- data/features/lib/step_definitions/retry_steps.rb +0 -55
- data/features/lib/step_definitions/ruby_steps.rb +0 -4
- data/features/lib/support/env.rb +0 -22
- data/features/lib/support/fake_wire_server.rb +0 -94
- data/features/lib/support/feature_factory.rb +0 -68
- data/features/lib/support/normalise_output.rb +0 -52
- data/features/lib/support/parameter_types.rb +0 -5
- data/gem_tasks/contributors.rake +0 -19
- data/gem_tasks/cov.rake +0 -6
- data/gem_tasks/downloads.rb +0 -8
- data/gem_tasks/environment.rake +0 -4
- data/gem_tasks/examples.rake +0 -12
- data/gem_tasks/fix_cr_lf.rake +0 -22
- data/gem_tasks/flog.rake +0 -5
- data/gem_tasks/rspec.rake +0 -7
- data/gem_tasks/sass.rake +0 -5
- data/gem_tasks/stats +0 -16
- data/gem_tasks/versions.txt +0 -74
- data/scripts/invite-collaborator +0 -40
- data/scripts/update-changelog +0 -86
- data/spec/cucumber/cli/configuration_spec.rb +0 -446
- data/spec/cucumber/cli/main_spec.rb +0 -84
- data/spec/cucumber/cli/options_spec.rb +0 -445
- data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
- data/spec/cucumber/cli/rerun_spec.rb +0 -86
- data/spec/cucumber/configuration_spec.rb +0 -148
- data/spec/cucumber/constantize_spec.rb +0 -20
- data/spec/cucumber/events_spec.rb +0 -9
- data/spec/cucumber/file_specs_spec.rb +0 -61
- data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
- data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
- data/spec/cucumber/filters/retry_spec.rb +0 -98
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
- data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
- data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
- data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
- data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
- data/spec/cucumber/formatter/duration_spec.rb +0 -23
- data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
- data/spec/cucumber/formatter/html_spec.rb +0 -543
- data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
- data/spec/cucumber/formatter/json_spec.rb +0 -815
- data/spec/cucumber/formatter/junit_spec.rb +0 -251
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2175
- data/spec/cucumber/formatter/pretty_spec.rb +0 -907
- data/spec/cucumber/formatter/progress_spec.rb +0 -170
- data/spec/cucumber/formatter/rerun_spec.rb +0 -97
- data/spec/cucumber/formatter/spec_helper.rb +0 -84
- data/spec/cucumber/glue/proto_world_spec.rb +0 -63
- data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
- data/spec/cucumber/glue/snippet_spec.rb +0 -174
- data/spec/cucumber/glue/step_definition_spec.rb +0 -207
- data/spec/cucumber/hooks_spec.rb +0 -31
- data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -653
- data/spec/cucumber/project_initializer_spec.rb +0 -88
- data/spec/cucumber/rake/forked_spec.rb +0 -58
- data/spec/cucumber/rake/task_spec.rb +0 -86
- data/spec/cucumber/running_test_case_spec.rb +0 -140
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
- data/spec/cucumber/runtime/support_code_spec.rb +0 -17
- data/spec/cucumber/runtime_spec.rb +0 -21
- data/spec/cucumber/sell_cucumbers.feature +0 -19
- data/spec/cucumber/step_argument_spec.rb +0 -19
- data/spec/cucumber/step_match_search_spec.rb +0 -113
- data/spec/cucumber/step_match_spec.rb +0 -86
- data/spec/cucumber/world/pending_spec.rb +0 -48
- data/spec/spec_helper.rb +0 -30
- data/spec/support/standard_step_actions.rb +0 -19
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require 'tmpdir'
|
|
4
|
-
|
|
5
|
-
module Cucumber
|
|
6
|
-
describe ProjectInitializer, :isolated_home => true do
|
|
7
|
-
let(:command_line_config) { ProjectInitializer.new }
|
|
8
|
-
|
|
9
|
-
before do
|
|
10
|
-
allow(command_line_config).to receive(:puts)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
context 'no files created' do
|
|
14
|
-
around(:example) do |example|
|
|
15
|
-
|
|
16
|
-
dir = Dir.mktmpdir
|
|
17
|
-
original_dir = Dir.pwd
|
|
18
|
-
begin
|
|
19
|
-
FileUtils.cd dir
|
|
20
|
-
example.call
|
|
21
|
-
ensure
|
|
22
|
-
FileUtils.cd original_dir
|
|
23
|
-
FileUtils.rm_rf dir
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it 'should create features directory' do
|
|
28
|
-
expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features$)
|
|
29
|
-
command_line_config.run
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it 'should create step_definitions directory' do
|
|
33
|
-
expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/step_definitions$)
|
|
34
|
-
command_line_config.run
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it 'should create support directory' do
|
|
38
|
-
expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/support$)
|
|
39
|
-
command_line_config.run
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it 'should create env.rb directory' do
|
|
43
|
-
expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/support/env.rb$)
|
|
44
|
-
command_line_config.run
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context 'files created' do
|
|
50
|
-
around(:example) do |example|
|
|
51
|
-
dir = Dir.mktmpdir
|
|
52
|
-
FileUtils.mkdir_p "#{dir}/features"
|
|
53
|
-
FileUtils.mkdir_p "#{dir}/features/step_definitions"
|
|
54
|
-
FileUtils.mkdir_p "#{dir}/features/support"
|
|
55
|
-
FileUtils.touch "#{dir}/features/support/env.rb"
|
|
56
|
-
original_dir = Dir.pwd
|
|
57
|
-
begin
|
|
58
|
-
FileUtils.cd dir
|
|
59
|
-
example.call
|
|
60
|
-
ensure
|
|
61
|
-
FileUtils.cd original_dir
|
|
62
|
-
FileUtils.rm_rf dir
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it 'should not create features directory' do
|
|
67
|
-
expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features$)
|
|
68
|
-
command_line_config.run
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'should not create step_definitions directory' do
|
|
72
|
-
expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/step_definitions$)
|
|
73
|
-
command_line_config.run
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it 'should not create support directory' do
|
|
77
|
-
expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/support$)
|
|
78
|
-
command_line_config.run
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it 'should not create env.rb directory' do
|
|
82
|
-
expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/support/env.rb$)
|
|
83
|
-
command_line_config.run
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require 'cucumber/rake/task'
|
|
4
|
-
require 'rake'
|
|
5
|
-
|
|
6
|
-
module Cucumber
|
|
7
|
-
module Rake
|
|
8
|
-
describe Task::ForkedCucumberRunner do
|
|
9
|
-
let(:libs) { ['lib'] }
|
|
10
|
-
let(:binary) { Cucumber::BINARY }
|
|
11
|
-
let(:cucumber_opts) { ['--cuke-option'] }
|
|
12
|
-
let(:feature_files) { ['./some.feature'] }
|
|
13
|
-
|
|
14
|
-
context 'when running with bundler' do
|
|
15
|
-
let(:bundler) { true }
|
|
16
|
-
|
|
17
|
-
subject { Task::ForkedCucumberRunner.new(
|
|
18
|
-
libs, binary, cucumber_opts, bundler, feature_files) }
|
|
19
|
-
|
|
20
|
-
it 'does use bundler if bundler is set to true' do
|
|
21
|
-
expect(subject.use_bundler).to be true
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'uses bundle exec to find cucumber and libraries' do
|
|
25
|
-
expect(subject.cmd).to eq [
|
|
26
|
-
Cucumber::RUBY_BINARY,
|
|
27
|
-
'-S',
|
|
28
|
-
'bundle',
|
|
29
|
-
'exec',
|
|
30
|
-
'cucumber',
|
|
31
|
-
'--cuke-option'
|
|
32
|
-
] + feature_files
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
context 'when running without bundler' do
|
|
37
|
-
let(:bundler) { false }
|
|
38
|
-
|
|
39
|
-
subject { Task::ForkedCucumberRunner.new(
|
|
40
|
-
libs, binary, cucumber_opts, bundler, feature_files) }
|
|
41
|
-
|
|
42
|
-
it 'does not use bundler if bundler is set to false' do
|
|
43
|
-
expect(subject.use_bundler).to be false
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it 'uses well known cucumber location and specified libraries' do
|
|
47
|
-
expect(subject.cmd).to eq [
|
|
48
|
-
Cucumber::RUBY_BINARY,
|
|
49
|
-
'-I',
|
|
50
|
-
'"lib"',
|
|
51
|
-
"\"#{Cucumber::BINARY}\"",
|
|
52
|
-
'--cuke-option'
|
|
53
|
-
] + feature_files
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require 'cucumber/rake/task'
|
|
4
|
-
require 'rake'
|
|
5
|
-
|
|
6
|
-
module Cucumber
|
|
7
|
-
module Rake
|
|
8
|
-
describe Task do
|
|
9
|
-
|
|
10
|
-
describe '#cucumber_opts' do
|
|
11
|
-
before { subject.cucumber_opts = opts }
|
|
12
|
-
|
|
13
|
-
context 'when set via array' do
|
|
14
|
-
let(:opts) { %w[ foo bar ] }
|
|
15
|
-
it { expect(subject.cucumber_opts).to be opts }
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
context 'when set via space-delimited string' do
|
|
19
|
-
let(:opts) { 'foo bar' }
|
|
20
|
-
it { expect(subject.cucumber_opts).to eq %w[ foo bar ] }
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
describe '#cucumber_opts_with_profile' do
|
|
25
|
-
before do
|
|
26
|
-
subject.cucumber_opts = opts
|
|
27
|
-
subject.profile = profile
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
context 'with cucumber_opts' do
|
|
31
|
-
let(:opts) { %w[ foo bar ] }
|
|
32
|
-
|
|
33
|
-
context 'without profile' do
|
|
34
|
-
let(:profile) { nil }
|
|
35
|
-
|
|
36
|
-
it 'should return just cucumber_opts' do
|
|
37
|
-
expect(subject.cucumber_opts_with_profile).to be opts
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
context 'with profile' do
|
|
42
|
-
let(:profile) { 'fancy' }
|
|
43
|
-
|
|
44
|
-
it 'should combine opts and profile into an array, prepending --profile option' do
|
|
45
|
-
expect(subject.cucumber_opts_with_profile).to eq %w[ foo bar --profile fancy ]
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context 'with multiple profiles' do
|
|
50
|
-
let(:profile) { %w[ fancy pants ] }
|
|
51
|
-
|
|
52
|
-
it 'should combine opts and each profile into an array, prepending --profile option' do
|
|
53
|
-
expect(subject.cucumber_opts_with_profile).to eq %w[ foo bar --profile fancy --profile pants ]
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context 'without cucumber_opts' do
|
|
59
|
-
let(:opts) { nil }
|
|
60
|
-
|
|
61
|
-
context 'without profile' do
|
|
62
|
-
let(:profile) { nil }
|
|
63
|
-
|
|
64
|
-
it { expect(subject.cucumber_opts_with_profile).to eq [] }
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
context 'with profile' do
|
|
68
|
-
let(:profile) { 'fancy' }
|
|
69
|
-
|
|
70
|
-
it 'should combine opts and profile into an array, prepending --profile option' do
|
|
71
|
-
expect(subject.cucumber_opts_with_profile).to eq %w[ --profile fancy ]
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
context 'with multiple profiles' do
|
|
76
|
-
let(:profile) { %w[ fancy pants ] }
|
|
77
|
-
|
|
78
|
-
it 'should combine opts and each profile into an array, prepending --profile option' do
|
|
79
|
-
expect(subject.cucumber_opts_with_profile).to eq %w[ --profile fancy --profile pants ]
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'cucumber/running_test_case'
|
|
3
|
-
require 'cucumber/core'
|
|
4
|
-
require 'cucumber/core/gherkin/writer'
|
|
5
|
-
|
|
6
|
-
module Cucumber
|
|
7
|
-
describe RunningTestCase do
|
|
8
|
-
include Core
|
|
9
|
-
include Core::Gherkin::Writer
|
|
10
|
-
|
|
11
|
-
attr_accessor :wrapped_test_case, :core_test_case
|
|
12
|
-
|
|
13
|
-
let(:result) { double(:result, to_sym: :status_symbol) }
|
|
14
|
-
|
|
15
|
-
before do
|
|
16
|
-
receiver = double.as_null_object
|
|
17
|
-
allow(receiver).to receive(:test_case) { |core_test_case|
|
|
18
|
-
self.core_test_case = core_test_case
|
|
19
|
-
self.wrapped_test_case = RunningTestCase.new(core_test_case).with_result(result)
|
|
20
|
-
}
|
|
21
|
-
compile [gherkin_doc], receiver
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
context 'for a regular scenario' do
|
|
25
|
-
let(:gherkin_doc) do
|
|
26
|
-
gherkin do
|
|
27
|
-
feature 'feature name' do
|
|
28
|
-
scenario 'scenario name' do
|
|
29
|
-
step 'passing'
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it 'sets the scenario name correctly' do
|
|
36
|
-
expect(wrapped_test_case.name).to eq 'scenario name'
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it 'sets the feature name correctly' do
|
|
40
|
-
expect(wrapped_test_case.feature.name).to eq 'feature name'
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it 'exposes properties of the test_case' do
|
|
44
|
-
expect(wrapped_test_case.location).to eq core_test_case.location
|
|
45
|
-
expect(wrapped_test_case.source).to eq core_test_case.source
|
|
46
|
-
expect(wrapped_test_case.keyword).to eq core_test_case.keyword
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it 'exposes properties of the result' do
|
|
50
|
-
expect(wrapped_test_case.status).to eq result.to_sym
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
context 'for a failed scenario' do
|
|
55
|
-
let(:gherkin_doc) do
|
|
56
|
-
gherkin do
|
|
57
|
-
feature 'feature name' do
|
|
58
|
-
scenario 'scenario name' do
|
|
59
|
-
step 'failed'
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
let(:exception) { StandardError.new }
|
|
66
|
-
|
|
67
|
-
before do
|
|
68
|
-
self.wrapped_test_case = self.wrapped_test_case.with_result(Core::Test::Result::Failed.new(0, exception))
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'is failed?' do
|
|
72
|
-
expect(wrapped_test_case.failed?).to be_truthy
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it 'exposes the exception' do
|
|
76
|
-
expect(wrapped_test_case.exception).to eq exception
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
context 'for a passing scenario' do
|
|
81
|
-
let(:gherkin_doc) do
|
|
82
|
-
gherkin do
|
|
83
|
-
feature 'feature name' do
|
|
84
|
-
scenario 'scenario name' do
|
|
85
|
-
step 'passing'
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
before do
|
|
92
|
-
self.wrapped_test_case = self.wrapped_test_case.with_result(Core::Test::Result::Passed.new(0))
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
it 'is not failed?' do
|
|
96
|
-
expect(wrapped_test_case.failed?).to be_falsey
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it '#exception is nil' do
|
|
100
|
-
expect(wrapped_test_case.exception).to be_nil
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
context 'for a scenario outline' do
|
|
105
|
-
let(:gherkin_doc) do
|
|
106
|
-
gherkin do
|
|
107
|
-
feature 'feature name' do
|
|
108
|
-
scenario_outline 'scenario outline name' do
|
|
109
|
-
step 'passing with <arg1> <arg2>'
|
|
110
|
-
|
|
111
|
-
examples 'examples name' do
|
|
112
|
-
row 'arg1', 'arg2'
|
|
113
|
-
row 'a', 'b'
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
it "sets the test case's name correctly" do
|
|
121
|
-
expect(wrapped_test_case.name).to eq 'scenario outline name, examples name (#1)'
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
it 'sets the feature name correctly' do
|
|
125
|
-
expect(wrapped_test_case.feature.name).to eq 'feature name'
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
it 'exposes properties of the test_case' do
|
|
129
|
-
expect(wrapped_test_case.location).to eq core_test_case.location
|
|
130
|
-
expect(wrapped_test_case.source).to eq core_test_case.source
|
|
131
|
-
expect(wrapped_test_case.keyword).to eq core_test_case.keyword
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
it 'exposes the examples table row cell values' do
|
|
135
|
-
expect(wrapped_test_case.cell_values).to eq %w(a b)
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
|
|
4
|
-
module Cucumber
|
|
5
|
-
describe Runtime::SupportCode do
|
|
6
|
-
let(:user_interface) { double('user interface') }
|
|
7
|
-
subject { Runtime::SupportCode.new(user_interface, configuration) }
|
|
8
|
-
let(:configuration) { Configuration.new(options) }
|
|
9
|
-
let(:options) { {}}
|
|
10
|
-
let(:dsl) do
|
|
11
|
-
@rb = subject.ruby
|
|
12
|
-
Object.new.extend(RbSupport::RbDsl)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
|
|
4
|
-
module Cucumber
|
|
5
|
-
describe Runtime do
|
|
6
|
-
subject { Runtime.new(options) }
|
|
7
|
-
let(:options) { {} }
|
|
8
|
-
|
|
9
|
-
describe '#features_paths' do
|
|
10
|
-
let(:options) { {:paths => ['foo/bar/baz.feature', 'foo/bar/features/baz.feature', 'other_features'] } }
|
|
11
|
-
|
|
12
|
-
it 'returns the value from configuration.paths' do
|
|
13
|
-
expect(subject.features_paths).to eq options[:paths]
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it '#doc_string' do
|
|
18
|
-
expect(subject.doc_string('Text')).to eq 'Text'
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
Feature: Sell cucumbers
|
|
2
|
-
As a cucumber farmer
|
|
3
|
-
I want to sell cucumbers
|
|
4
|
-
So that I buy meat
|
|
5
|
-
|
|
6
|
-
Scenario: Sell a dozen
|
|
7
|
-
Given there are 5 cucumbers
|
|
8
|
-
When I sell 12 cucumbers
|
|
9
|
-
Then I should owe 7 cucumbers
|
|
10
|
-
|
|
11
|
-
Scenario: Sell twenty
|
|
12
|
-
Given there are 5 cucumbers
|
|
13
|
-
When I sell 20 cucumbers
|
|
14
|
-
Then I should owe 15 cucumbers
|
|
15
|
-
|
|
16
|
-
Scenario: Sell fifty
|
|
17
|
-
Given there are 5 cucumbers
|
|
18
|
-
When I sell 50 cucumbers
|
|
19
|
-
Then I should owe 45 cucumbers
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require 'cucumber/step_argument'
|
|
4
|
-
|
|
5
|
-
module Cucumber
|
|
6
|
-
describe StepArgument do
|
|
7
|
-
it 'creates 2 arguments' do
|
|
8
|
-
arguments = StepArgument.arguments_from(/I (\w+) (\w+)/, 'I like fish')
|
|
9
|
-
|
|
10
|
-
expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [['like', 2], ['fish', 7]]
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it 'creates 2 arguments when first group is optional' do
|
|
14
|
-
arguments = StepArgument.arguments_from(/should( not)? be flashed '([^']*?)'$/, "I should be flashed 'Login failed.'")
|
|
15
|
-
|
|
16
|
-
expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [[nil, nil], ['Login failed.', 21]]
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'cucumber/step_match_search'
|
|
3
|
-
require 'cucumber/glue/dsl'
|
|
4
|
-
require 'cucumber/glue/registry_and_more'
|
|
5
|
-
require 'cucumber/configuration'
|
|
6
|
-
|
|
7
|
-
module Cucumber
|
|
8
|
-
describe StepMatchSearch do
|
|
9
|
-
|
|
10
|
-
let(:search) { StepMatchSearch.new(registry.method(:step_matches), configuration) }
|
|
11
|
-
let(:registry) { Glue::RegistryAndMore.new(runtime, configuration) }
|
|
12
|
-
let(:runtime) do
|
|
13
|
-
# TODO: break out step definitions collection from Glue::RegistryAndMore so we don't need this
|
|
14
|
-
:unused
|
|
15
|
-
end
|
|
16
|
-
let(:configuration) { Configuration.new(options) }
|
|
17
|
-
let(:options) { {} }
|
|
18
|
-
let(:dsl) do
|
|
19
|
-
# TODO: stop relying on implicit global state
|
|
20
|
-
registry
|
|
21
|
-
Object.new.extend(Glue::Dsl)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
context 'caching' do
|
|
25
|
-
it 'caches step match results' do
|
|
26
|
-
dsl.Given(/it (.*) in (.*)/) { |what, month| }
|
|
27
|
-
|
|
28
|
-
step_match = search.call('it snows in april').first
|
|
29
|
-
|
|
30
|
-
expect(registry).not_to receive(:step_matches)
|
|
31
|
-
second_step_match = search.call('it snows in april').first
|
|
32
|
-
|
|
33
|
-
expect(step_match).to equal(second_step_match)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
describe 'resolving step defintion matches' do
|
|
38
|
-
|
|
39
|
-
it 'raises Ambiguous error with guess hint when multiple step definitions match' do
|
|
40
|
-
expected_error = %{Ambiguous match of "Three blind mice":
|
|
41
|
-
|
|
42
|
-
spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three (.*) mice/'
|
|
43
|
-
spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three blind (.*)/'
|
|
44
|
-
|
|
45
|
-
You can run again with --guess to make Cucumber be more smart about it
|
|
46
|
-
}
|
|
47
|
-
dsl.Given(/Three (.*) mice/) {|disability|}
|
|
48
|
-
dsl.Given(/Three blind (.*)/) {|animal|}
|
|
49
|
-
|
|
50
|
-
expect(-> {
|
|
51
|
-
search.call('Three blind mice').first
|
|
52
|
-
}).to raise_error(Ambiguous, /#{expected_error}/)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
describe 'when --guess is used' do
|
|
56
|
-
let(:options) { {:guess => true} }
|
|
57
|
-
|
|
58
|
-
it 'does not show --guess hint' do
|
|
59
|
-
expected_error = %{Ambiguous match of "Three cute mice":
|
|
60
|
-
|
|
61
|
-
spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three (.*) mice/'
|
|
62
|
-
spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three cute (.*)/'
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
dsl.Given(/Three (.*) mice/) {|disability|}
|
|
66
|
-
dsl.Given(/Three cute (.*)/) {|animal|}
|
|
67
|
-
|
|
68
|
-
expect(-> {
|
|
69
|
-
search.call('Three cute mice').first
|
|
70
|
-
}).to raise_error(Ambiguous, /#{expected_error}/)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it 'does not raise Ambiguous error when multiple step definitions match' do
|
|
74
|
-
dsl.Given(/Three (.*) mice/) {|disability|}
|
|
75
|
-
dsl.Given(/Three (.*)/) {|animal|}
|
|
76
|
-
|
|
77
|
-
expect(-> {
|
|
78
|
-
search.call('Three blind mice').first
|
|
79
|
-
}).not_to raise_error
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
it 'picks right step definition when an equal number of capture groups' do
|
|
83
|
-
right = dsl.Given(/Three (.*) mice/) {|disability|}
|
|
84
|
-
_wrong = dsl.Given(/Three (.*)/) {|animal|}
|
|
85
|
-
|
|
86
|
-
expect(search.call('Three blind mice').first.step_definition).to eq right
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it 'picks right step definition when an unequal number of capture groups' do
|
|
90
|
-
right = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
|
|
91
|
-
_wrong = dsl.Given(/Three (.*)/) {|animal|}
|
|
92
|
-
|
|
93
|
-
expect(search.call('Three blind mice ran far').first.step_definition).to eq right
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it 'picks most specific step definition when an unequal number of capture groups' do
|
|
97
|
-
_general = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
|
|
98
|
-
_specific = dsl.Given(/Three blind mice ran far/) do; end
|
|
99
|
-
more_specific = dsl.Given(/^Three blind mice ran far$/) do; end
|
|
100
|
-
|
|
101
|
-
expect(search.call('Three blind mice ran far').first.step_definition).to eq more_specific
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
# TODO: remove this - it's ... redundant
|
|
106
|
-
# http://railsforum.com/viewtopic.php?pid=93881
|
|
107
|
-
it "does not raise Redundant unless it's really redundant" do
|
|
108
|
-
dsl.Given(/^(.*) (.*) user named '(.*)'$/) {|a,b,c|}
|
|
109
|
-
dsl.Given(/^there is no (.*) user named '(.*)'$/) {|a,b|}
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
require 'cucumber/glue/step_definition'
|
|
5
|
-
require 'cucumber/glue/registry_and_more'
|
|
6
|
-
|
|
7
|
-
module Cucumber
|
|
8
|
-
describe StepMatch do
|
|
9
|
-
WORD = '[[:word:]]'
|
|
10
|
-
|
|
11
|
-
before do
|
|
12
|
-
@registry = Glue::RegistryAndMore.new(nil, Configuration.new)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def stepdef(string_or_regexp)
|
|
16
|
-
Glue::StepDefinition.new(@registry, string_or_regexp, lambda{}, {})
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def step_match(regexp, name)
|
|
20
|
-
stepdef = stepdef(regexp)
|
|
21
|
-
StepMatch.new(stepdef, name, stepdef.arguments_from(name))
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it 'formats step names' do
|
|
25
|
-
m = step_match(/it (.*) in (.*)/, 'it snows in april')
|
|
26
|
-
format = m.format_args('[%s]')
|
|
27
|
-
expect(format).to eq 'it [snows] in [april]'
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it 'formats one group when we use Unicode' do
|
|
31
|
-
m = step_match(/I (#{WORD}+) ok/, "I æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ ok")
|
|
32
|
-
|
|
33
|
-
expect(m.format_args('<span>%s</span>')).to eq "I <span>æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ</span> ok"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'formats several groups when we use Unicode' do
|
|
37
|
-
m = step_match(/I (#{WORD}+) (#{WORD}+) (#{WORD}+) this (#{WORD}+)/, "I ate æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ egg this morning")
|
|
38
|
-
|
|
39
|
-
expect(m.format_args('<span>%s</span>')).to eq "I <span>ate</span> <span>æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ</span> <span>egg</span> this <span>morning</span>"
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it 'deals with Unicode both inside and outside arguments' do
|
|
43
|
-
expect("Jæ vø ålsker døtte løndet").to match(/Jæ (.+) ålsker (.+) løndet/)
|
|
44
|
-
|
|
45
|
-
m = step_match(/Jæ (#{WORD}+) ålsker (#{WORD}+) løndet/, "Jæ vø ålsker døtte løndet")
|
|
46
|
-
|
|
47
|
-
expect(m.format_args('<span>%s</span>')).to eq "Jæ <span>vø</span> ålsker <span>døtte</span> løndet"
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it 'formats groups with format string' do
|
|
51
|
-
m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, 'I ate 1 egg this morning')
|
|
52
|
-
|
|
53
|
-
expect(m.format_args('<span>%s</span>')).to eq 'I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>'
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it 'formats groups with format string when there are dupes' do
|
|
57
|
-
m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, 'I bob 1 bo this bobs')
|
|
58
|
-
|
|
59
|
-
expect(m.format_args('<span>%s</span>')).to eq 'I <span>bob</span> <span>1</span> <span>bo</span> this <span>bobs</span>'
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it 'formats groups with block' do
|
|
63
|
-
m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, 'I ate 1 egg this morning')
|
|
64
|
-
|
|
65
|
-
expect(m.format_args(&lambda{|m| "<span>#{m}</span>"})).to eq 'I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>'
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it 'formats groups with proc object' do
|
|
69
|
-
m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, 'I ate 1 egg this morning')
|
|
70
|
-
|
|
71
|
-
expect(m.format_args(lambda{|m| "<span>#{m}</span>"})).to eq 'I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>'
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it 'formats groups even when first group is optional and not matched' do
|
|
75
|
-
m = step_match(/should( not)? be flashed '([^']*?)'$/, "I should be flashed 'Login failed.'")
|
|
76
|
-
|
|
77
|
-
expect(m.format_args('<span>%s</span>')).to eq "I should be flashed '<span>Login failed.</span>'"
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
it 'formats embedded groups' do
|
|
81
|
-
m = step_match(/running( (\d+) times)? (\d+) meters/, 'running 5 times 10 meters')
|
|
82
|
-
|
|
83
|
-
expect(m.format_args('<span>%s</span>')).to eq 'running<span> 5 times</span> <span>10</span> meters'
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|