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,17 +0,0 @@
|
|
|
1
|
-
Feature: Set up a default load path
|
|
2
|
-
|
|
3
|
-
When you're developing a gem, it's convenient if your project's `lib` directory
|
|
4
|
-
is already in the load path. Cucumber does this for you.
|
|
5
|
-
|
|
6
|
-
Scenario: ./lib is included in the $LOAD_PATH
|
|
7
|
-
Given a file named "features/support/env.rb" with:
|
|
8
|
-
"""
|
|
9
|
-
require 'something'
|
|
10
|
-
"""
|
|
11
|
-
And a file named "lib/something.rb" with:
|
|
12
|
-
"""
|
|
13
|
-
class Something
|
|
14
|
-
end
|
|
15
|
-
"""
|
|
16
|
-
When I run `cucumber`
|
|
17
|
-
Then it should pass
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
Feature: Parameter Types
|
|
2
|
-
|
|
3
|
-
Parameter Types allow you to convert primitive string arguments captured in step definitions
|
|
4
|
-
into more meaningful data types.
|
|
5
|
-
|
|
6
|
-
Background:
|
|
7
|
-
Let's just create a simple feature for testing out parameter types.
|
|
8
|
-
We also have a Person class that we need to be able to build.
|
|
9
|
-
|
|
10
|
-
Given a file named "features/foo.feature" with:
|
|
11
|
-
"""
|
|
12
|
-
Feature:
|
|
13
|
-
Scenario:
|
|
14
|
-
Given Joe has gone home
|
|
15
|
-
When Sally contacts Joe
|
|
16
|
-
"""
|
|
17
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
18
|
-
"""
|
|
19
|
-
# It works with Regular Expressions
|
|
20
|
-
Given /([A-Z]\w+) has gone home/ do |person|
|
|
21
|
-
expect(person.name).to eq 'Joe'
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# It works with Cucumber Expressions too
|
|
25
|
-
When "{person} contacts {person}" do |contacter, contactee|
|
|
26
|
-
expect(contacter.name).to eq 'Sally'
|
|
27
|
-
expect(contactee.name).to eq 'Joe'
|
|
28
|
-
end
|
|
29
|
-
"""
|
|
30
|
-
And a file named "features/support/env.rb" with:
|
|
31
|
-
"""
|
|
32
|
-
class Person
|
|
33
|
-
attr_reader :name
|
|
34
|
-
|
|
35
|
-
def initialize(name)
|
|
36
|
-
@name = name
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
Scenario: Parameter type defined with ParameterType method
|
|
42
|
-
This is the most basic way to use a parameter type.
|
|
43
|
-
|
|
44
|
-
Given a file named "features/support/parameter_types.rb" with:
|
|
45
|
-
"""
|
|
46
|
-
ParameterType(
|
|
47
|
-
name: 'person',
|
|
48
|
-
regexp: /[A-Z]\w+/,
|
|
49
|
-
transformer: -> (name) { Person.new(name) }
|
|
50
|
-
)
|
|
51
|
-
"""
|
|
52
|
-
When I run `cucumber features/foo.feature`
|
|
53
|
-
Then it should pass
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
Feature: State
|
|
2
|
-
|
|
3
|
-
You can pass state between step by setting instance variables,
|
|
4
|
-
but those instance variables will be gone when the next scenario runs.
|
|
5
|
-
|
|
6
|
-
Scenario: Set an ivar in one scenario, use it in the next step
|
|
7
|
-
Given a file named "features/test.feature" with:
|
|
8
|
-
"""
|
|
9
|
-
Feature:
|
|
10
|
-
Scenario:
|
|
11
|
-
Given I have set @flag = true
|
|
12
|
-
Then @flag should be true
|
|
13
|
-
|
|
14
|
-
Scenario:
|
|
15
|
-
Then @flag should be nil
|
|
16
|
-
"""
|
|
17
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
18
|
-
"""
|
|
19
|
-
Given /set @flag/ do
|
|
20
|
-
@flag = true
|
|
21
|
-
end
|
|
22
|
-
Then /flag should be true/ do
|
|
23
|
-
expect(@flag).to be_truthy
|
|
24
|
-
end
|
|
25
|
-
Then /flag should be nil/ do
|
|
26
|
-
expect(@flag).to be_nil
|
|
27
|
-
end
|
|
28
|
-
"""
|
|
29
|
-
When I run `cucumber`
|
|
30
|
-
Then it should pass
|
|
31
|
-
|
|
32
|
-
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
Feature: Tagged hooks
|
|
2
|
-
|
|
3
|
-
Background:
|
|
4
|
-
Given the standard step definitions
|
|
5
|
-
And a file named "features/support/hooks.rb" with:
|
|
6
|
-
"""
|
|
7
|
-
Before('not @no-boom') do
|
|
8
|
-
raise 'boom'
|
|
9
|
-
end
|
|
10
|
-
"""
|
|
11
|
-
And a file named "features/f.feature" with:
|
|
12
|
-
"""
|
|
13
|
-
Feature: With and without hooks
|
|
14
|
-
Scenario: using hook
|
|
15
|
-
Given this step passes
|
|
16
|
-
|
|
17
|
-
@no-boom
|
|
18
|
-
Scenario: omitting hook
|
|
19
|
-
Given this step passes
|
|
20
|
-
|
|
21
|
-
Scenario Outline: omitting hook on specified examples
|
|
22
|
-
Given this step passes
|
|
23
|
-
|
|
24
|
-
Examples:
|
|
25
|
-
| Value |
|
|
26
|
-
| Irrelevant |
|
|
27
|
-
|
|
28
|
-
@no-boom
|
|
29
|
-
Examples:
|
|
30
|
-
| Value |
|
|
31
|
-
| Also Irrelevant |
|
|
32
|
-
"""
|
|
33
|
-
|
|
34
|
-
Scenario: omit tagged hook
|
|
35
|
-
When I run `cucumber features/f.feature:2`
|
|
36
|
-
Then it should fail with exactly:
|
|
37
|
-
"""
|
|
38
|
-
Feature: With and without hooks
|
|
39
|
-
|
|
40
|
-
Scenario: using hook # features/f.feature:2
|
|
41
|
-
boom (RuntimeError)
|
|
42
|
-
./features/support/hooks.rb:2:in `Before'
|
|
43
|
-
Given this step passes # features/step_definitions/steps.rb:1
|
|
44
|
-
|
|
45
|
-
Failing Scenarios:
|
|
46
|
-
cucumber features/f.feature:2 # Scenario: using hook
|
|
47
|
-
|
|
48
|
-
1 scenario (1 failed)
|
|
49
|
-
1 step (1 skipped)
|
|
50
|
-
0m0.012s
|
|
51
|
-
|
|
52
|
-
"""
|
|
53
|
-
|
|
54
|
-
Scenario: omit tagged hook
|
|
55
|
-
When I run `cucumber features/f.feature:6`
|
|
56
|
-
Then it should pass with exactly:
|
|
57
|
-
"""
|
|
58
|
-
Feature: With and without hooks
|
|
59
|
-
|
|
60
|
-
@no-boom
|
|
61
|
-
Scenario: omitting hook # features/f.feature:6
|
|
62
|
-
Given this step passes # features/step_definitions/steps.rb:1
|
|
63
|
-
|
|
64
|
-
1 scenario (1 passed)
|
|
65
|
-
1 step (1 passed)
|
|
66
|
-
0m0.012s
|
|
67
|
-
|
|
68
|
-
"""
|
|
69
|
-
Scenario: Omit example hook
|
|
70
|
-
When I run `cucumber features/f.feature:12`
|
|
71
|
-
Then it should fail with exactly:
|
|
72
|
-
"""
|
|
73
|
-
Feature: With and without hooks
|
|
74
|
-
|
|
75
|
-
Scenario Outline: omitting hook on specified examples # features/f.feature:9
|
|
76
|
-
Given this step passes # features/f.feature:10
|
|
77
|
-
|
|
78
|
-
Examples:
|
|
79
|
-
| Value |
|
|
80
|
-
boom (RuntimeError)
|
|
81
|
-
./features/support/hooks.rb:2:in `Before'
|
|
82
|
-
| Irrelevant |
|
|
83
|
-
|
|
84
|
-
Failing Scenarios:
|
|
85
|
-
cucumber features/f.feature:14 # Scenario Outline: omitting hook on specified examples, Examples (#1)
|
|
86
|
-
|
|
87
|
-
1 scenario (1 failed)
|
|
88
|
-
1 step (1 skipped)
|
|
89
|
-
0m0.012s
|
|
90
|
-
|
|
91
|
-
"""
|
|
92
|
-
Scenario:
|
|
93
|
-
When I run `cucumber features/f.feature:17`
|
|
94
|
-
Then it should pass
|
|
95
|
-
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
Feature: World
|
|
2
|
-
|
|
3
|
-
In order to isolate each test scenario, the steps definitions belonging to the
|
|
4
|
-
same scenario will run in a isolated context, called 'world'. A world also
|
|
5
|
-
contains the helpers methods that will be used in the step definitions.
|
|
6
|
-
|
|
7
|
-
It is possible to add helpers methods to a world in three different ways:
|
|
8
|
-
|
|
9
|
-
1. Passing a module. In this case its methods will be added directly to the
|
|
10
|
-
world and be usable in the step definitions.
|
|
11
|
-
|
|
12
|
-
2. Passing a block, where the return value is the world object.
|
|
13
|
-
|
|
14
|
-
3. Passing a hash, where the keys are namespaces and the values are
|
|
15
|
-
modules. In this case, the methods of each module will be accessible using
|
|
16
|
-
the key as prefix.
|
|
17
|
-
|
|
18
|
-
Scenario: A world is extended using a module
|
|
19
|
-
Given a file named "features/support/helpers.rb" with:
|
|
20
|
-
"""
|
|
21
|
-
module Helpers
|
|
22
|
-
def helper_method
|
|
23
|
-
42
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
World(Helpers)
|
|
28
|
-
"""
|
|
29
|
-
And a file named "features/step_definitions/step.rb" with:
|
|
30
|
-
"""
|
|
31
|
-
Then /^the helper method is called$/ do
|
|
32
|
-
expect(helper_method).to eql(42)
|
|
33
|
-
end
|
|
34
|
-
"""
|
|
35
|
-
And a file named "features/f.feature" with:
|
|
36
|
-
"""
|
|
37
|
-
Feature: Calling a method
|
|
38
|
-
Scenario: I call a method without namespaces
|
|
39
|
-
Then the helper method is called
|
|
40
|
-
"""
|
|
41
|
-
When I run `cucumber features/f.feature`
|
|
42
|
-
Then it should pass
|
|
43
|
-
|
|
44
|
-
Scenario: A world is created using a block
|
|
45
|
-
Given a file named "features/support/helpers.rb" with:
|
|
46
|
-
"""
|
|
47
|
-
class Helper
|
|
48
|
-
def helper_method
|
|
49
|
-
42
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
World do
|
|
54
|
-
Helper.new
|
|
55
|
-
end
|
|
56
|
-
"""
|
|
57
|
-
And a file named "features/step_definitions/step.rb" with:
|
|
58
|
-
"""
|
|
59
|
-
Then /^the helper method is called$/ do
|
|
60
|
-
expect(helper_method).to eql(42)
|
|
61
|
-
end
|
|
62
|
-
"""
|
|
63
|
-
And a file named "features/f.feature" with:
|
|
64
|
-
"""
|
|
65
|
-
Feature: Calling a method
|
|
66
|
-
Scenario: I call a method from a namespace
|
|
67
|
-
Then the helper method is called
|
|
68
|
-
"""
|
|
69
|
-
When I run `cucumber features/f.feature`
|
|
70
|
-
Then it should pass
|
|
71
|
-
|
|
72
|
-
Scenario: A world is extended using a module with namespace
|
|
73
|
-
Given a file named "features/support/helpers.rb" with:
|
|
74
|
-
"""
|
|
75
|
-
module Helpers
|
|
76
|
-
def helper_method
|
|
77
|
-
42
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
World(my_namespace: Helpers)
|
|
82
|
-
"""
|
|
83
|
-
And a file named "features/step_definitions/step.rb" with:
|
|
84
|
-
"""
|
|
85
|
-
Then /^the helper method is called$/ do
|
|
86
|
-
expect(my_namespace.helper_method).to eql(42)
|
|
87
|
-
end
|
|
88
|
-
"""
|
|
89
|
-
And a file named "features/f.feature" with:
|
|
90
|
-
"""
|
|
91
|
-
Feature: Calling a method
|
|
92
|
-
Scenario: I call a method from a namespace
|
|
93
|
-
Then the helper method is called
|
|
94
|
-
"""
|
|
95
|
-
When I run `cucumber features/f.feature`
|
|
96
|
-
Then it should pass
|
|
97
|
-
|
|
98
|
-
Scenario: A world is extended using multiple modules with different namespaces
|
|
99
|
-
Given a file named "features/support/helpers.rb" with:
|
|
100
|
-
"""
|
|
101
|
-
module ModuleOne
|
|
102
|
-
def forty_one
|
|
103
|
-
41
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
module ModuleTwo
|
|
108
|
-
def forty_two
|
|
109
|
-
42
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
World(module_one: ModuleOne, module_two: ModuleTwo)
|
|
114
|
-
"""
|
|
115
|
-
And a file named "features/step_definitions/step.rb" with:
|
|
116
|
-
"""
|
|
117
|
-
Then /^the helper method is called$/ do
|
|
118
|
-
expect(module_one.forty_one).to eql(41)
|
|
119
|
-
expect(module_two.forty_two).to eql(42)
|
|
120
|
-
end
|
|
121
|
-
"""
|
|
122
|
-
And a file named "features/f.feature" with:
|
|
123
|
-
"""
|
|
124
|
-
Feature: Calling a method
|
|
125
|
-
Scenario: I call a method from two namespaces
|
|
126
|
-
Then the helper method is called
|
|
127
|
-
"""
|
|
128
|
-
When I run `cucumber features/f.feature`
|
|
129
|
-
Then it should pass
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
Then(/^it should (pass|fail)$/) do |result|
|
|
3
|
-
assert_success result == 'pass'
|
|
4
|
-
end
|
|
5
|
-
|
|
6
|
-
Then('{string} should not be required') do |file_name|
|
|
7
|
-
expect(all_output).not_to include("* #{file_name}")
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
Then('{string} should be required') do |file_name|
|
|
11
|
-
expect(all_output).to include("* #{file_name}")
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
Then('it fails before running features with:') do |expected|
|
|
15
|
-
assert_matching_output("\\A#{expected}", all_output)
|
|
16
|
-
assert_success(false)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
Then('the output includes the message {string}') do |message|
|
|
20
|
-
expect(all_output).to include(message)
|
|
21
|
-
end
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
Given('a directory without standard Cucumber project directory structure') do
|
|
3
|
-
in_current_dir do
|
|
4
|
-
FileUtils.rm_rf 'features' if File.directory?('features')
|
|
5
|
-
end
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
Given('a scenario with a step that looks like this:') do |string|
|
|
9
|
-
create_feature do
|
|
10
|
-
create_scenario { string }
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
Given('a scenario with a step that looks like this in japanese:') do |string|
|
|
15
|
-
create_feature_ja do
|
|
16
|
-
create_scenario_ja { string }
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
Given('the standard step definitions') do
|
|
21
|
-
write_file 'features/step_definitions/steps.rb',
|
|
22
|
-
|
|
23
|
-
<<-STEPS
|
|
24
|
-
Given(/^this step passes$/) { }
|
|
25
|
-
Given(/^this step raises an error$/) { raise 'error' }
|
|
26
|
-
Given(/^this step is pending$/) { pending }
|
|
27
|
-
Given(/^this step fails$/) { fail }
|
|
28
|
-
Given(/^this step is a table step$/) {|t| }
|
|
29
|
-
STEPS
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
Given('a step definition that looks like this:') do |string|
|
|
33
|
-
create_step_definition { string }
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
Given('a scenario {string} that passes') do |name|
|
|
37
|
-
write_file "features/#{name}.feature",
|
|
38
|
-
<<-FEATURE
|
|
39
|
-
Feature: #{name}
|
|
40
|
-
Scenario: #{name}
|
|
41
|
-
Given it passes
|
|
42
|
-
FEATURE
|
|
43
|
-
|
|
44
|
-
write_file "features/step_definitions/#{name}_steps.rb",
|
|
45
|
-
<<-STEPS
|
|
46
|
-
Given(/^it passes$/) { expect(true).to be true }
|
|
47
|
-
STEPS
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
Given('a scenario {string} that fails') do |name|
|
|
51
|
-
write_file "features/#{name}.feature",
|
|
52
|
-
<<-FEATURE
|
|
53
|
-
Feature: #{name}
|
|
54
|
-
Scenario: #{name}
|
|
55
|
-
Given it fails
|
|
56
|
-
FEATURE
|
|
57
|
-
|
|
58
|
-
write_file "features/step_definitions/#{name}_steps.rb",
|
|
59
|
-
<<-STEPS
|
|
60
|
-
Given(/^it fails$/) { expect(false).to be true }
|
|
61
|
-
STEPS
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
When(/^I run the feature with the (\w+) formatter$/) do |formatter|
|
|
65
|
-
expect(features.length).to eq 1
|
|
66
|
-
run_feature features.first, formatter
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
module CucumberHelper
|
|
70
|
-
def run_feature(filename = 'features/a_feature.feature', formatter = 'progress')
|
|
71
|
-
run_simple "#{Cucumber::BINARY} #{filename} --format #{formatter}", false
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
World(CucumberHelper)
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# encoding: iso-8859-1
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
# Ideally we would use Norwegian keywords here, but that won't work unless this
|
|
4
|
-
# file is UTF-8 encoded.
|
|
5
|
-
# Alternatively, it would be possible to use Norwegian keywords and encode the
|
|
6
|
-
# file as UTF-8.
|
|
7
|
-
#
|
|
8
|
-
# In both cases, stepdef arguments will be sent in as UTF-8, regardless of what
|
|
9
|
-
# encoding is used.
|
|
10
|
-
Given(/^jeg drikker en "([^"]*)"$/) do |drink|
|
|
11
|
-
expect(drink).to eq '�l'.encode('UTF-8')
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
When(/^skal de andre si "([^"]*)"$/) do |greeting|
|
|
15
|
-
expect(greeting).to eq 'sk�l'.encode('UTF-8')
|
|
16
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
Then('the junit output file {string} should contain:') do |actual_file, text|
|
|
3
|
-
actual = IO.read(current_dir + '/' + actual_file)
|
|
4
|
-
actual = replace_junit_time(actual)
|
|
5
|
-
expect(actual).to eq text
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
module JUnitHelper
|
|
9
|
-
def replace_junit_time(s)
|
|
10
|
-
s.gsub(/\d+\.\d\d+/m, '0.05')
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
World(JUnitHelper)
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
Then('cucumber lists all the supported languages') do
|
|
5
|
-
sample_languages = %w(Arabic български Pirate English 日本語)
|
|
6
|
-
sample_languages.each do |language|
|
|
7
|
-
expect(all_output.force_encoding('utf-8')).to include(language)
|
|
8
|
-
end
|
|
9
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
Given('the following profile(s) are/is defined:') do |profiles|
|
|
3
|
-
write_file 'cucumber.yml', profiles
|
|
4
|
-
end
|
|
5
|
-
|
|
6
|
-
Then('the {word} profile should be used') do |profile|
|
|
7
|
-
step 'the stdout should contain:', profile
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
Then('exactly these files should be loaded: {list}') do |files|
|
|
11
|
-
expect(all_stdout.scan(/^ \* (.*\.rb)$/).flatten).to eq files
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
Then('exactly these features should be run: {list}') do |files|
|
|
15
|
-
expect(all_stdout.scan(/^ \* (.*\.feature)$/).flatten).to eq files
|
|
16
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
Given('a scenario {string} that fails once, then passes') do |full_name|
|
|
3
|
-
name = snake_case(full_name)
|
|
4
|
-
write_file "features/#{name}.feature",
|
|
5
|
-
<<-FEATURE
|
|
6
|
-
Feature: #{full_name} feature
|
|
7
|
-
Scenario: #{full_name}
|
|
8
|
-
Given it fails once, then passes
|
|
9
|
-
FEATURE
|
|
10
|
-
|
|
11
|
-
write_file "features/step_definitions/#{name}_steps.rb",
|
|
12
|
-
<<-STEPS
|
|
13
|
-
Given(/^it fails once, then passes$/) do
|
|
14
|
-
$#{name} += 1
|
|
15
|
-
expect($#{name}).to be > 1
|
|
16
|
-
end
|
|
17
|
-
STEPS
|
|
18
|
-
|
|
19
|
-
write_file "features/support/#{name}_init.rb",
|
|
20
|
-
<<-INIT
|
|
21
|
-
$#{name} = 0
|
|
22
|
-
INIT
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
Given('a scenario {string} that fails twice, then passes') do |full_name|
|
|
26
|
-
name = snake_case(full_name)
|
|
27
|
-
write_file "features/#{name}.feature",
|
|
28
|
-
<<-FEATURE
|
|
29
|
-
Feature: #{full_name} feature
|
|
30
|
-
Scenario: #{full_name}
|
|
31
|
-
Given it fails twice, then passes
|
|
32
|
-
FEATURE
|
|
33
|
-
|
|
34
|
-
write_file "features/step_definitions/#{name}_steps.rb",
|
|
35
|
-
<<-STEPS
|
|
36
|
-
Given(/^it fails twice, then passes$/) do
|
|
37
|
-
$#{name} ||= 0
|
|
38
|
-
$#{name} += 1
|
|
39
|
-
expect($#{name}).to be > 2
|
|
40
|
-
end
|
|
41
|
-
STEPS
|
|
42
|
-
|
|
43
|
-
write_file "features/support/#{name}_init.rb",
|
|
44
|
-
<<-INIT
|
|
45
|
-
$#{name} = 0
|
|
46
|
-
INIT
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
module SnakeCase
|
|
50
|
-
def snake_case(name)
|
|
51
|
-
name.downcase.gsub(/\W/, '_')
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
World(SnakeCase)
|
data/features/lib/support/env.rb
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'aruba/cucumber'
|
|
3
|
-
require 'aruba/in_process'
|
|
4
|
-
require 'aruba/spawn_process'
|
|
5
|
-
require 'cucumber/cli/main'
|
|
6
|
-
|
|
7
|
-
Before('@spawn') do
|
|
8
|
-
Aruba.process = Aruba::SpawnProcess
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
Before('not @spawn') do
|
|
12
|
-
Aruba::InProcess.main_class = Cucumber::Cli::Main
|
|
13
|
-
Aruba.process = Aruba::InProcess
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
Before do
|
|
17
|
-
# Make sure bin/cucumber runs with SimpleCov enabled
|
|
18
|
-
# set_env('SIMPLECOV', 'true')
|
|
19
|
-
|
|
20
|
-
# Set a longer timeout for aruba, and a really long one if running on JRuby
|
|
21
|
-
@aruba_timeout_seconds = Cucumber::JRUBY ? 60 : 15
|
|
22
|
-
end
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'multi_json'
|
|
3
|
-
require 'socket'
|
|
4
|
-
|
|
5
|
-
class FakeWireServer
|
|
6
|
-
def initialize(port, protocol_table)
|
|
7
|
-
@port, @protocol_table = port, protocol_table
|
|
8
|
-
@delays = {}
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def run(io)
|
|
12
|
-
@server = TCPServer.open(@port)
|
|
13
|
-
loop { handle_connections(io) }
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def delay_response(message, delay)
|
|
17
|
-
@delays[message] = delay
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
def handle_connections(io)
|
|
23
|
-
Thread.start(@server.accept) { |socket| open_session_on socket, io }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def open_session_on(socket, io)
|
|
27
|
-
begin
|
|
28
|
-
on_message = lambda { |message| io.puts message }
|
|
29
|
-
SocketSession.new(socket, @protocol_table, @delays, on_message).start
|
|
30
|
-
rescue Exception => e
|
|
31
|
-
raise e
|
|
32
|
-
ensure
|
|
33
|
-
socket.close
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
class SocketSession
|
|
38
|
-
def initialize(socket, protocol, delays, on_message)
|
|
39
|
-
@socket = socket
|
|
40
|
-
@protocol = protocol
|
|
41
|
-
@delays = delays
|
|
42
|
-
@on_message = on_message
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def start
|
|
46
|
-
message = @socket.gets
|
|
47
|
-
|
|
48
|
-
while message
|
|
49
|
-
handle(message)
|
|
50
|
-
message = @socket.gets
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
private
|
|
55
|
-
|
|
56
|
-
def handle(data)
|
|
57
|
-
protocol_entry = response_to(data.strip)
|
|
58
|
-
|
|
59
|
-
if protocol_entry
|
|
60
|
-
sleep delay(data)
|
|
61
|
-
@on_message.call(MultiJson.load(protocol_entry['request'])[0])
|
|
62
|
-
send_response(protocol_entry['response'])
|
|
63
|
-
else
|
|
64
|
-
serialized_exception = { :message => "Not understood: #{data}", :backtrace => [] }
|
|
65
|
-
send_response(['fail', serialized_exception ].to_json)
|
|
66
|
-
end
|
|
67
|
-
rescue => e
|
|
68
|
-
response = [
|
|
69
|
-
'fail',
|
|
70
|
-
{
|
|
71
|
-
:message => e.message,
|
|
72
|
-
:backtrace => e.backtrace,
|
|
73
|
-
:exception => e.class
|
|
74
|
-
}
|
|
75
|
-
].to_json
|
|
76
|
-
send_response(response)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def response_to(data)
|
|
80
|
-
@protocol.detect do |entry|
|
|
81
|
-
MultiJson.load(entry['request']) == MultiJson.load(data)
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def send_response(response)
|
|
86
|
-
@socket.puts response + "\n"
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def delay(data)
|
|
90
|
-
message = MultiJson.load(data.strip)[0]
|
|
91
|
-
@delays[message.to_sym] || 0
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|