cucumber 2.99.0 → 3.0.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/.cucumberproignore +6 -0
- data/.gitattributes +32 -0
- data/.github/ISSUE_TEMPLATE.md +1 -1
- data/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- data/.rubocop.yml +13 -0
- data/.rubocop_todo.yml +991 -0
- data/.travis.yml +56 -10
- data/{History.md → CHANGELOG.md} +166 -32
- data/CONTRIBUTING.md +21 -1
- data/Gemfile +18 -5
- data/README.md +13 -4
- data/Rakefile +12 -2
- data/appveyor.yml +27 -0
- data/bin/cucumber +2 -1
- data/cucumber.gemspec +15 -10
- data/cucumber.yml +10 -11
- data/examples/i18n/Rakefile +1 -1
- data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +8 -3
- data/examples/i18n/ar/lib/calculator.rb +2 -2
- data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +6 -6
- data/examples/i18n/bg/features/support/env.rb +6 -1
- data/examples/i18n/bg/lib/calculator.rb +2 -1
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/ca/lib/calculadora.rb +2 -2
- data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/cs/lib/calculator.rb +3 -3
- data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +10 -5
- data/examples/i18n/da/lib/lommeregner.rb +2 -2
- data/examples/i18n/de/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/de/lib/calculator.rb +2 -2
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/el/lib/calculator.rb +2 -2
- data/examples/i18n/en/features/step_definitions/calculator_steps.rb +9 -4
- data/examples/i18n/en/lib/calculator.rb +2 -2
- data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +4 -4
- data/examples/i18n/en-lol/features/support/env.rb +6 -2
- data/examples/i18n/en-lol/lib/basket.rb +2 -2
- data/examples/i18n/en-lol/lib/belly.rb +2 -2
- data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +9 -4
- data/examples/i18n/eo/lib/calculator.rb +2 -2
- data/examples/i18n/es/features/step_definitions/calculador_steps.rb +10 -5
- data/examples/i18n/es/lib/calculador.rb +2 -2
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +10 -5
- data/examples/i18n/et/lib/kalkulaator.rb +3 -3
- data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +9 -4
- data/examples/i18n/fi/lib/laskin.rb +1 -1
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +8 -8
- data/examples/i18n/fr/features/support/env.rb +7 -2
- data/examples/i18n/fr/lib/calculatrice.rb +2 -2
- data/examples/i18n/he/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/he/lib/calculator.rb +1 -1
- data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +9 -4
- data/examples/i18n/hi/lib/calculator.rb +1 -1
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +9 -5
- data/examples/i18n/ht/lib/kalkilatris.rb +2 -2
- data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/hu/lib/calculator.rb +1 -1
- data/examples/i18n/id/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/id/lib/calculator.rb +2 -2
- data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +10 -5
- data/examples/i18n/it/lib/calcolatrice.rb +3 -3
- data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +3 -3
- data/examples/i18n/ja/features/support/env.rb +7 -2
- data/examples/i18n/ja/lib/calculator.rb +2 -2
- data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/ko/lib/calculator.rb +2 -2
- data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/lt/lib/calculator.rb +2 -2
- data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/lv/lib/calculator.rb +2 -2
- data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +3 -3
- data/examples/i18n/no/features/support/env.rb +7 -2
- data/examples/i18n/no/lib/kalkulator.rb +2 -2
- data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/pl/features/support/env.rb +6 -1
- data/examples/i18n/pl/lib/calculator.rb +2 -2
- data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +3 -3
- data/examples/i18n/pt/features/support/env.rb +7 -2
- data/examples/i18n/pt/lib/calculadora.rb +1 -1
- data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +11 -6
- data/examples/i18n/ro/lib/calculator.rb +1 -1
- data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/ru/features/support/env.rb +6 -1
- data/examples/i18n/ru/lib/calculator.rb +2 -1
- data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/sk/lib/calculator.rb +2 -2
- data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +3 -3
- data/examples/i18n/sr-Cyrl/features/support/env.rb +7 -2
- data/examples/i18n/sr-Cyrl/lib/calculator.rb +2 -2
- data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/sr-Latn/lib/calculator.rb +2 -2
- data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +9 -4
- data/examples/i18n/sv/lib/kalkulator.rb +2 -2
- data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +10 -5
- data/examples/i18n/tr/lib/hesap_makinesi.rb +2 -2
- data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/uk/features/support/env.rb +6 -1
- data/examples/i18n/uk/lib/calculator.rb +2 -1
- data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/uz/features/support/env.rb +6 -1
- data/examples/i18n/uz/lib/calculator.rb +2 -1
- data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +11 -6
- data/examples/i18n/zh-CN/lib/calculator.rb +2 -2
- data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +10 -5
- data/examples/i18n/zh-TW/lib/calculator.rb +2 -2
- data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +3 -3
- data/examples/sinatra/features/step_definitions/add_steps.rb +4 -4
- data/examples/sinatra/features/support/env.rb +6 -1
- data/examples/tcl/features/step_definitions/fib_steps.rb +2 -2
- data/examples/tcl/features/support/env.rb +2 -1
- data/examples/test_unit/features/step_definitions/test_unit_steps.rb +4 -4
- data/examples/watir/features/step_definitions/search_steps.rb +6 -5
- data/examples/watir/features/support/env.rb +5 -1
- data/examples/watir/features/support/screenshots.rb +5 -5
- data/features/docs/api/list_step_defs_as_json.feature +21 -7
- data/features/docs/api/listen_for_events.feature +9 -8
- data/features/docs/api/run_cli_main_with_existing_runtime.feature +1 -0
- data/features/docs/cli/dry_run.feature +3 -0
- data/features/docs/cli/execute_with_tag_filter.feature +8 -6
- data/features/docs/cli/fail_fast.feature +2 -0
- data/features/docs/cli/help.feature +8 -0
- data/features/docs/{gherkin/language_help.feature → cli/i18n.feature} +6 -6
- data/features/docs/cli/randomize.feature +2 -2
- data/features/docs/cli/retry_failing_tests.feature +75 -15
- data/features/docs/cli/run_scenarios_matching_name.feature +1 -0
- data/features/docs/cli/specifying_multiple_formatters.feature +3 -0
- data/features/docs/cli/strict_mode.feature +6 -0
- data/features/docs/defining_steps/ambiguous_steps.feature +89 -0
- data/features/docs/defining_steps/nested_steps.feature +5 -1
- data/features/docs/defining_steps/nested_steps_i18n.feature +3 -0
- data/features/docs/defining_steps/nested_steps_with_second_arg.feature +2 -0
- data/features/docs/defining_steps/printing_messages.feature +1 -2
- data/features/docs/defining_steps/skip_scenario.feature +1 -34
- data/features/docs/defining_steps/snippets.feature +18 -18
- data/features/docs/events/gherkin_source_read_event.feature +43 -0
- data/features/docs/events/step_activated_event.feature +36 -0
- data/features/docs/events/step_definition_registered_event.feature +29 -0
- data/features/docs/events/test_case_finished_event.feature +35 -0
- data/features/docs/events/test_case_started_event.feature +54 -0
- data/features/docs/events/test_run_finished_event.feature +40 -0
- data/features/docs/events/test_run_started_event.feature +41 -0
- data/features/docs/events/test_step_finished_event.feature +47 -0
- data/features/docs/events/test_step_started_event.feature +43 -0
- data/features/docs/exception_in_after_hook.feature +3 -2
- data/features/docs/exception_in_after_step_hook.feature +2 -0
- data/features/docs/exception_in_around_hook.feature +2 -0
- data/features/docs/exception_in_before_hook.feature +3 -1
- data/features/docs/extending_cucumber/custom_formatter.feature +12 -48
- data/features/docs/formatters/json_formatter.feature +4 -4
- data/features/docs/formatters/junit_formatter.feature +7 -6
- data/features/docs/formatters/pretty_formatter.feature +1 -0
- data/features/docs/formatters/progress_formatter.feature +1 -0
- data/features/docs/formatters/rerun_formatter.feature +2 -0
- data/features/docs/formatters/summary_formatter.feature +35 -0
- data/features/docs/formatters/usage_formatter.feature +3 -0
- data/features/docs/getting_started.feature +2 -1
- data/features/docs/gherkin/background.feature +5 -5
- data/features/docs/gherkin/doc_strings.feature +2 -0
- data/features/docs/gherkin/expand_option_for_outlines.feature +1 -0
- data/features/docs/gherkin/outlines.feature +6 -4
- data/features/docs/gherkin/unicode_table.feature +2 -1
- data/features/docs/gherkin/using_descriptions.feature +1 -0
- data/features/docs/gherkin/using_star_notation.feature +1 -1
- data/features/docs/post_configuration_hook.feature +1 -17
- data/features/docs/rake_task.feature +5 -0
- data/features/docs/raketask.feature +3 -1
- data/features/docs/work_in_progress.feature +5 -2
- data/features/docs/writing_support_code/after_step_hooks.feature +3 -1
- data/features/docs/writing_support_code/around_hooks.feature +6 -0
- data/features/docs/writing_support_code/before_hook.feature +1 -0
- data/features/docs/writing_support_code/hook_order.feature +3 -1
- data/features/docs/writing_support_code/parameter_types.feature +53 -0
- data/features/docs/writing_support_code/tagged_hooks.feature +1 -1
- data/features/docs/writing_support_code/world.feature +129 -0
- data/features/lib/step_definitions/aruba_steps.rb +5 -10
- data/features/lib/step_definitions/cli_steps.rb +4 -0
- data/features/lib/step_definitions/cucumber_steps.rb +9 -12
- data/features/lib/step_definitions/iso-8859-1_steps.rb +9 -5
- data/features/lib/step_definitions/json_steps.rb +2 -1
- data/features/lib/step_definitions/junit_steps.rb +2 -1
- data/features/lib/step_definitions/language_steps.rb +3 -2
- data/features/lib/step_definitions/profile_steps.rb +7 -6
- data/features/lib/step_definitions/retry_steps.rb +33 -13
- data/features/lib/step_definitions/ruby_steps.rb +2 -1
- data/features/lib/support/env.rb +3 -2
- data/features/lib/support/fake_wire_server.rb +17 -3
- data/features/lib/support/feature_factory.rb +2 -1
- data/features/lib/support/normalise_output.rb +14 -12
- data/features/lib/support/parameter_types.rb +5 -0
- data/gem_tasks/contributors.rake +10 -6
- data/gem_tasks/cov.rake +1 -0
- data/gem_tasks/downloads.rb +1 -0
- data/gem_tasks/environment.rake +2 -5
- data/gem_tasks/examples.rake +3 -2
- data/gem_tasks/fix_cr_lf.rake +19 -7
- data/gem_tasks/flog.rake +4 -3
- data/gem_tasks/rspec.rake +2 -1
- data/gem_tasks/sass.rake +2 -1
- data/lib/autotest/cucumber.rb +1 -0
- data/lib/autotest/cucumber_mixin.rb +17 -16
- data/lib/autotest/cucumber_rails.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec.rb +1 -0
- data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
- data/lib/autotest/cucumber_rspec.rb +1 -0
- data/lib/autotest/cucumber_rspec2.rb +1 -0
- data/lib/autotest/discover.rb +3 -2
- data/lib/cucumber/cli/configuration.rb +12 -21
- data/lib/cucumber/cli/main.rb +8 -7
- data/lib/cucumber/cli/options.rb +341 -217
- data/lib/cucumber/cli/profile_loader.rb +26 -21
- data/lib/cucumber/cli/rerun_file.rb +1 -0
- data/lib/cucumber/configuration.rb +54 -37
- data/lib/cucumber/constantize.rb +2 -1
- data/lib/cucumber/core_ext/string.rb +2 -1
- data/lib/cucumber/deprecate.rb +4 -3
- data/lib/cucumber/encoding.rb +1 -0
- data/lib/cucumber/errors.rb +3 -1
- data/lib/cucumber/events/gherkin_source_read.rb +17 -0
- data/lib/cucumber/events/{step_match.rb → step_activated.rb} +5 -2
- data/lib/cucumber/events/step_definition_registered.rb +24 -0
- data/lib/cucumber/events/test_case_finished.rb +18 -0
- data/lib/cucumber/events/test_case_started.rb +15 -0
- data/lib/cucumber/events/test_run_finished.rb +12 -0
- data/lib/cucumber/events/test_run_started.rb +16 -0
- data/lib/cucumber/events/test_step_finished.rb +20 -0
- data/lib/cucumber/events/test_step_started.rb +17 -0
- data/lib/cucumber/events.rb +23 -3
- data/lib/cucumber/file_specs.rb +1 -0
- data/lib/cucumber/filters/activate_steps.rb +8 -3
- data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
- data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
- data/lib/cucumber/filters/broadcast_test_run_started_event.rb +27 -0
- data/lib/cucumber/filters/gated_receiver.rb +1 -0
- data/lib/cucumber/filters/prepare_world.rb +1 -0
- data/lib/cucumber/filters/quit.rb +1 -0
- data/lib/cucumber/filters/randomizer.rb +1 -0
- data/lib/cucumber/filters/retry.rb +4 -4
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -0
- data/lib/cucumber/filters/tag_limits/verifier.rb +2 -1
- data/lib/cucumber/filters/tag_limits.rb +4 -3
- data/lib/cucumber/filters.rb +3 -0
- data/lib/cucumber/formatter/ansicolor.rb +9 -11
- data/lib/cucumber/formatter/backtrace_filter.rb +21 -8
- data/lib/cucumber/formatter/console.rb +72 -66
- data/lib/cucumber/formatter/console_counts.rb +44 -0
- data/lib/cucumber/formatter/console_issues.rb +58 -0
- data/lib/cucumber/formatter/duration.rb +2 -1
- data/lib/cucumber/formatter/duration_extractor.rb +1 -0
- data/lib/cucumber/formatter/fail_fast.rb +4 -2
- data/lib/cucumber/formatter/fanout.rb +1 -0
- data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
- data/lib/cucumber/formatter/html.rb +175 -249
- data/lib/cucumber/formatter/html_builder.rb +120 -0
- data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -0
- data/lib/cucumber/formatter/inline-js.js +30 -0
- data/lib/cucumber/formatter/interceptor.rb +3 -2
- data/lib/cucumber/formatter/io.rb +2 -1
- data/lib/cucumber/formatter/json.rb +33 -30
- data/lib/cucumber/formatter/json_pretty.rb +1 -0
- data/lib/cucumber/formatter/junit.rb +26 -24
- data/lib/cucumber/formatter/legacy_api/adapter.rb +81 -69
- data/lib/cucumber/formatter/legacy_api/ast.rb +27 -22
- data/lib/cucumber/formatter/legacy_api/results.rb +7 -8
- data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +1 -0
- data/lib/cucumber/formatter/pretty.rb +24 -18
- data/lib/cucumber/formatter/progress.rb +55 -13
- data/lib/cucumber/formatter/rerun.rb +15 -18
- data/lib/cucumber/formatter/stepdefs.rb +1 -0
- data/lib/cucumber/formatter/steps.rb +2 -1
- data/lib/cucumber/formatter/summary.rb +43 -20
- data/lib/cucumber/formatter/unicode.rb +2 -1
- data/lib/cucumber/formatter/usage.rb +33 -28
- data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +2 -1
- data/lib/cucumber/gherkin/formatter/escaping.rb +2 -1
- data/lib/cucumber/gherkin/i18n.rb +1 -0
- data/lib/cucumber/gherkin/steps_parser.rb +1 -0
- data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +41 -30
- data/lib/cucumber/glue/hook.rb +43 -0
- data/lib/cucumber/glue/invoke_in_world.rb +70 -0
- data/lib/cucumber/glue/proto_world.rb +220 -0
- data/lib/cucumber/{rb_support/rb_language.rb → glue/registry_and_more.rb} +60 -90
- data/lib/cucumber/{rb_support → glue}/snippet.rb +64 -26
- data/lib/cucumber/glue/step_definition.rb +143 -0
- data/lib/cucumber/glue/world_factory.rb +23 -0
- data/lib/cucumber/hooks.rb +9 -8
- data/lib/cucumber/load_path.rb +1 -0
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +158 -0
- data/lib/cucumber/multiline_argument/data_table.rb +47 -181
- data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
- data/lib/cucumber/multiline_argument.rb +6 -15
- data/lib/cucumber/platform.rb +4 -5
- data/lib/cucumber/project_initializer.rb +3 -2
- data/lib/cucumber/rake/task.rb +19 -14
- data/lib/cucumber/rspec/disable_option_parser.rb +2 -1
- data/lib/cucumber/rspec/doubles.rb +2 -1
- data/lib/cucumber/running_test_case.rb +3 -27
- data/lib/cucumber/runtime/after_hooks.rb +2 -1
- data/lib/cucumber/runtime/before_hooks.rb +1 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +2 -36
- data/lib/cucumber/runtime/step_hooks.rb +1 -0
- data/lib/cucumber/runtime/support_code.rb +21 -16
- data/lib/cucumber/runtime/user_interface.rb +10 -16
- data/lib/cucumber/runtime.rb +49 -32
- data/lib/cucumber/step_argument.rb +1 -2
- data/lib/cucumber/step_definition_light.rb +2 -0
- data/lib/cucumber/step_definitions.rb +1 -0
- data/lib/cucumber/step_match.rb +30 -15
- data/lib/cucumber/step_match_search.rb +3 -3
- data/lib/cucumber/term/ansicolor.rb +2 -1
- data/lib/cucumber/unit.rb +1 -0
- data/lib/cucumber/version +1 -1
- data/lib/cucumber.rb +1 -13
- data/lib/simplecov_setup.rb +2 -1
- data/scripts/invite-collaborator +40 -0
- data/scripts/update-changelog +86 -0
- data/spec/cucumber/cli/configuration_spec.rb +109 -98
- data/spec/cucumber/cli/main_spec.rb +8 -7
- data/spec/cucumber/cli/options_spec.rb +114 -79
- data/spec/cucumber/cli/profile_loader_spec.rb +25 -5
- data/spec/cucumber/cli/rerun_spec.rb +21 -20
- data/spec/cucumber/configuration_spec.rb +48 -47
- data/spec/cucumber/constantize_spec.rb +3 -2
- data/spec/cucumber/events_spec.rb +9 -0
- data/spec/cucumber/file_specs_spec.rb +26 -25
- data/spec/cucumber/filters/activate_steps_spec.rb +25 -22
- data/spec/cucumber/filters/gated_receiver_spec.rb +7 -6
- data/spec/cucumber/filters/retry_spec.rb +42 -23
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +12 -11
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +15 -14
- data/spec/cucumber/filters/tag_limits_spec.rb +9 -8
- data/spec/cucumber/formatter/ansicolor_spec.rb +10 -9
- data/spec/cucumber/formatter/backtrace_filter_spec.rb +32 -0
- data/spec/cucumber/formatter/console_counts_spec.rb +14 -0
- data/spec/cucumber/formatter/duration_spec.rb +4 -3
- data/spec/cucumber/formatter/fail_fast_spec.rb +27 -27
- data/spec/cucumber/formatter/html_spec.rb +65 -60
- data/spec/cucumber/formatter/interceptor_spec.rb +1 -0
- data/spec/cucumber/formatter/json_spec.rb +71 -97
- data/spec/cucumber/formatter/junit_spec.rb +46 -47
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +134 -141
- data/spec/cucumber/formatter/pretty_spec.rb +105 -117
- data/spec/cucumber/formatter/progress_spec.rb +22 -21
- data/spec/cucumber/formatter/rerun_spec.rb +70 -64
- data/spec/cucumber/formatter/spec_helper.rb +14 -12
- data/spec/cucumber/{rb_support/rb_world_spec.rb → glue/proto_world_spec.rb} +22 -6
- data/spec/cucumber/glue/registry_and_more_spec.rb +213 -0
- data/spec/cucumber/{rb_support → glue}/snippet_spec.rb +62 -25
- data/spec/cucumber/glue/step_definition_spec.rb +207 -0
- data/spec/cucumber/hooks_spec.rb +5 -4
- data/spec/cucumber/multiline_argument/data_table_spec.rb +179 -129
- data/spec/cucumber/project_initializer_spec.rb +12 -11
- data/spec/cucumber/rake/forked_spec.rb +22 -17
- data/spec/cucumber/rake/task_spec.rb +21 -20
- data/spec/cucumber/running_test_case_spec.rb +36 -35
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +2 -30
- data/spec/cucumber/runtime/support_code_spec.rb +1 -0
- data/spec/cucumber/runtime_spec.rb +3 -2
- data/spec/cucumber/step_argument_spec.rb +6 -5
- data/spec/cucumber/step_match_search_spec.rb +32 -41
- data/spec/cucumber/step_match_spec.rb +34 -33
- data/spec/cucumber/world/pending_spec.rb +12 -11
- data/spec/spec_helper.rb +1 -0
- data/spec/support/standard_step_actions.rb +2 -1
- metadata +132 -61
- data/features/docs/formatters/debug_formatter.feature +0 -47
- data/features/docs/formatters/formatter_step_file_colon_line.feature +0 -44
- data/features/docs/writing_support_code/transforms.feature +0 -98
- data/features/lib/step_definitions/wire_steps.rb +0 -58
- data/gem_tasks/cucumber.rake +0 -25
- data/lib/cucumber/ast.rb +0 -13
- data/lib/cucumber/core_ext/instance_exec.rb +0 -70
- data/lib/cucumber/events/after_test_case.rb +0 -25
- data/lib/cucumber/events/after_test_step.rb +0 -30
- data/lib/cucumber/events/before_test_case.rb +0 -18
- data/lib/cucumber/events/before_test_step.rb +0 -23
- data/lib/cucumber/events/bus.rb +0 -86
- data/lib/cucumber/events/finished_testing.rb +0 -9
- data/lib/cucumber/formatter/debug.rb +0 -35
- data/lib/cucumber/formatter/event_bus_report.rb +0 -38
- data/lib/cucumber/rb_support/rb_hook.rb +0 -19
- data/lib/cucumber/rb_support/rb_step_definition.rb +0 -131
- data/lib/cucumber/rb_support/rb_transform.rb +0 -59
- data/lib/cucumber/rb_support/rb_world.rb +0 -149
- data/spec/cucumber/core_ext/instance_exec_spec.rb +0 -4
- data/spec/cucumber/events/bus_spec.rb +0 -94
- data/spec/cucumber/formatter/debug_spec.rb +0 -64
- data/spec/cucumber/formatter/event_bus_report_spec.rb +0 -88
- data/spec/cucumber/rb_support/rb_language_spec.rb +0 -243
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -199
- data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -46
- data/spec/cucumber_spec.rb +0 -39
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'spec_helper'
|
|
2
3
|
require 'cucumber/formatter/spec_helper'
|
|
3
4
|
require 'cucumber/formatter/json'
|
|
@@ -10,39 +11,14 @@ module Cucumber
|
|
|
10
11
|
extend SpecHelperDsl
|
|
11
12
|
include SpecHelper
|
|
12
13
|
|
|
13
|
-
context
|
|
14
|
+
context 'Given a single feature' do
|
|
14
15
|
before(:each) do
|
|
15
16
|
@out = StringIO.new
|
|
16
17
|
@formatter = Json.new(actual_runtime.configuration.with_options(out_stream: @out))
|
|
17
18
|
run_defined_feature
|
|
18
19
|
end
|
|
19
20
|
|
|
20
|
-
describe
|
|
21
|
-
define_feature <<-FEATURE
|
|
22
|
-
Feature: Banana party
|
|
23
|
-
|
|
24
|
-
Scenario: Monkey eats bananas
|
|
25
|
-
FEATURE
|
|
26
|
-
|
|
27
|
-
it "outputs the json data" do
|
|
28
|
-
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
29
|
-
[{"id": "banana-party",
|
|
30
|
-
"uri": "spec.feature",
|
|
31
|
-
"keyword": "Feature",
|
|
32
|
-
"name": "Banana party",
|
|
33
|
-
"line": 1,
|
|
34
|
-
"description": "",
|
|
35
|
-
"elements":
|
|
36
|
-
[{"id": "banana-party;monkey-eats-bananas",
|
|
37
|
-
"keyword": "Scenario",
|
|
38
|
-
"name": "Monkey eats bananas",
|
|
39
|
-
"line": 3,
|
|
40
|
-
"description": "",
|
|
41
|
-
"type": "scenario"}]}]})
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
describe "with a scenario with an undefined step" do
|
|
21
|
+
describe 'with a scenario with an undefined step' do
|
|
46
22
|
define_feature <<-FEATURE
|
|
47
23
|
Feature: Banana party
|
|
48
24
|
|
|
@@ -50,7 +26,7 @@ module Cucumber
|
|
|
50
26
|
Given there are bananas
|
|
51
27
|
FEATURE
|
|
52
28
|
|
|
53
|
-
it
|
|
29
|
+
it 'outputs the json data' do
|
|
54
30
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
55
31
|
[{"id": "banana-party",
|
|
56
32
|
"uri": "spec.feature",
|
|
@@ -74,7 +50,7 @@ module Cucumber
|
|
|
74
50
|
end
|
|
75
51
|
end
|
|
76
52
|
|
|
77
|
-
describe
|
|
53
|
+
describe 'with a scenario with a passed step' do
|
|
78
54
|
define_feature <<-FEATURE
|
|
79
55
|
Feature: Banana party
|
|
80
56
|
|
|
@@ -86,7 +62,7 @@ module Cucumber
|
|
|
86
62
|
Given(/^there are bananas$/) {}
|
|
87
63
|
end
|
|
88
64
|
|
|
89
|
-
it
|
|
65
|
+
it 'outputs the json data' do
|
|
90
66
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
91
67
|
[{"id": "banana-party",
|
|
92
68
|
"uri": "spec.feature",
|
|
@@ -105,13 +81,13 @@ module Cucumber
|
|
|
105
81
|
[{"keyword": "Given ",
|
|
106
82
|
"name": "there are bananas",
|
|
107
83
|
"line": 4,
|
|
108
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
84
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:62"},
|
|
109
85
|
"result": {"status": "passed",
|
|
110
86
|
"duration": 1}}]}]}]})
|
|
111
87
|
end
|
|
112
88
|
end
|
|
113
89
|
|
|
114
|
-
describe
|
|
90
|
+
describe 'with a scenario with a failed step' do
|
|
115
91
|
define_feature <<-FEATURE
|
|
116
92
|
Feature: Banana party
|
|
117
93
|
|
|
@@ -120,10 +96,10 @@ module Cucumber
|
|
|
120
96
|
FEATURE
|
|
121
97
|
|
|
122
98
|
define_steps do
|
|
123
|
-
Given(/^there are bananas$/) { raise
|
|
99
|
+
Given(/^there are bananas$/) { raise 'no bananas' }
|
|
124
100
|
end
|
|
125
101
|
|
|
126
|
-
it
|
|
102
|
+
it 'outputs the json data' do
|
|
127
103
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
128
104
|
[{"id": "banana-party",
|
|
129
105
|
"uri": "spec.feature",
|
|
@@ -142,14 +118,14 @@ module Cucumber
|
|
|
142
118
|
[{"keyword": "Given ",
|
|
143
119
|
"name": "there are bananas",
|
|
144
120
|
"line": 4,
|
|
145
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
121
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:99"},
|
|
146
122
|
"result": {"status": "failed",
|
|
147
|
-
"error_message": "no bananas (RuntimeError)\\n./spec/cucumber/formatter/json_spec.rb:
|
|
123
|
+
"error_message": "no bananas (RuntimeError)\\n./spec/cucumber/formatter/json_spec.rb:99:in `/^there are bananas$/'\\nspec.feature:4:in `Given there are bananas'",
|
|
148
124
|
"duration": 1}}]}]}]})
|
|
149
125
|
end
|
|
150
126
|
end
|
|
151
127
|
|
|
152
|
-
describe
|
|
128
|
+
describe 'with a scenario with a pending step' do
|
|
153
129
|
define_feature <<-FEATURE
|
|
154
130
|
Feature: Banana party
|
|
155
131
|
|
|
@@ -161,7 +137,7 @@ module Cucumber
|
|
|
161
137
|
Given(/^there are bananas$/) { pending }
|
|
162
138
|
end
|
|
163
139
|
|
|
164
|
-
it
|
|
140
|
+
it 'outputs the json data' do
|
|
165
141
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
166
142
|
[{"id": "banana-party",
|
|
167
143
|
"uri": "spec.feature",
|
|
@@ -180,14 +156,14 @@ module Cucumber
|
|
|
180
156
|
[{"keyword": "Given ",
|
|
181
157
|
"name": "there are bananas",
|
|
182
158
|
"line": 4,
|
|
183
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
159
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:137"},
|
|
184
160
|
"result": {"status": "pending",
|
|
185
|
-
"error_message": "TODO (Cucumber::Pending)\\n./spec/cucumber/formatter/json_spec.rb:
|
|
161
|
+
"error_message": "TODO (Cucumber::Pending)\\n./spec/cucumber/formatter/json_spec.rb:137:in `/^there are bananas$/'\\nspec.feature:4:in `Given there are bananas'",
|
|
186
162
|
"duration": 1}}]}]}]})
|
|
187
163
|
end
|
|
188
164
|
end
|
|
189
165
|
|
|
190
|
-
describe
|
|
166
|
+
describe 'with a scenario outline with one example' do
|
|
191
167
|
define_feature <<-FEATURE
|
|
192
168
|
Feature: Banana party
|
|
193
169
|
|
|
@@ -203,7 +179,7 @@ module Cucumber
|
|
|
203
179
|
Given(/^there are bananas$/) {}
|
|
204
180
|
end
|
|
205
181
|
|
|
206
|
-
it
|
|
182
|
+
it 'outputs the json data' do
|
|
207
183
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
208
184
|
[{"id": "banana-party",
|
|
209
185
|
"uri": "spec.feature",
|
|
@@ -222,13 +198,13 @@ module Cucumber
|
|
|
222
198
|
[{"keyword": "Given ",
|
|
223
199
|
"name": "there are bananas",
|
|
224
200
|
"line": 8,
|
|
225
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
201
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:179"},
|
|
226
202
|
"result": {"status": "passed",
|
|
227
203
|
"duration": 1}}]}]}]})
|
|
228
204
|
end
|
|
229
205
|
end
|
|
230
206
|
|
|
231
|
-
describe
|
|
207
|
+
describe 'with tags in the feature file' do
|
|
232
208
|
define_feature <<-FEATURE
|
|
233
209
|
@f
|
|
234
210
|
Feature: Banana party
|
|
@@ -251,7 +227,7 @@ module Cucumber
|
|
|
251
227
|
Given(/^there are bananas$/) {}
|
|
252
228
|
end
|
|
253
229
|
|
|
254
|
-
it
|
|
230
|
+
it 'the tags are included in the json data' do
|
|
255
231
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
256
232
|
[{"id": "banana-party",
|
|
257
233
|
"uri": "spec.feature",
|
|
@@ -276,7 +252,7 @@ module Cucumber
|
|
|
276
252
|
[{"keyword": "Given ",
|
|
277
253
|
"name": "there are bananas",
|
|
278
254
|
"line": 6,
|
|
279
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
255
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:227"},
|
|
280
256
|
"result": {"status": "passed",
|
|
281
257
|
"duration": 1}}]},
|
|
282
258
|
{"id": "banana-party;monkey-eats-bananas;fruit-table;2",
|
|
@@ -295,13 +271,13 @@ module Cucumber
|
|
|
295
271
|
[{"keyword": "Given ",
|
|
296
272
|
"name": "there are bananas",
|
|
297
273
|
"line": 15,
|
|
298
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
274
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:227"},
|
|
299
275
|
"result": {"status": "passed",
|
|
300
276
|
"duration": 1}}]}]}]})
|
|
301
277
|
end
|
|
302
278
|
end
|
|
303
279
|
|
|
304
|
-
describe
|
|
280
|
+
describe 'with comments in the feature file' do
|
|
305
281
|
define_feature <<-FEATURE
|
|
306
282
|
#feature comment
|
|
307
283
|
Feature: Banana party
|
|
@@ -332,7 +308,7 @@ module Cucumber
|
|
|
332
308
|
Then(/^the monkey eats bananas$/) {}
|
|
333
309
|
end
|
|
334
310
|
|
|
335
|
-
it
|
|
311
|
+
it 'the comments are included in the json data' do
|
|
336
312
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
337
313
|
[{"id": "banana-party",
|
|
338
314
|
"uri": "spec.feature",
|
|
@@ -354,7 +330,7 @@ module Cucumber
|
|
|
354
330
|
[{"keyword": "Given ",
|
|
355
331
|
"name": "there are bananas",
|
|
356
332
|
"line": 6,
|
|
357
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
333
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:307"},
|
|
358
334
|
"result": {"status": "passed",
|
|
359
335
|
"duration": 1}}]},
|
|
360
336
|
{"id": "banana-party;monkey-eats-bananas",
|
|
@@ -371,7 +347,7 @@ module Cucumber
|
|
|
371
347
|
"line": 11,
|
|
372
348
|
"comments": [{"value": "#step comment1",
|
|
373
349
|
"line": 10}],
|
|
374
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
350
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:308"},
|
|
375
351
|
"result": {"status": "passed",
|
|
376
352
|
"duration": 1}}]},
|
|
377
353
|
{"keyword": "Background",
|
|
@@ -385,7 +361,7 @@ module Cucumber
|
|
|
385
361
|
[{"keyword": "Given ",
|
|
386
362
|
"name": "there are bananas",
|
|
387
363
|
"line": 6,
|
|
388
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
364
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:307"},
|
|
389
365
|
"result": {"status": "passed",
|
|
390
366
|
"duration": 1}}]},
|
|
391
367
|
{"id": "banana-party;monkey-eats-bananas;fruit-table;2",
|
|
@@ -406,13 +382,13 @@ module Cucumber
|
|
|
406
382
|
"line": 22,
|
|
407
383
|
"comments": [{"value": "#step comment2",
|
|
408
384
|
"line": 15}],
|
|
409
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
385
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:308"},
|
|
410
386
|
"result": {"status": "passed",
|
|
411
387
|
"duration": 1}}]}]}]})
|
|
412
388
|
end
|
|
413
389
|
end
|
|
414
390
|
|
|
415
|
-
describe
|
|
391
|
+
describe 'with a scenario with a step with a doc string' do
|
|
416
392
|
define_feature <<-FEATURE
|
|
417
393
|
Feature: Banana party
|
|
418
394
|
|
|
@@ -427,7 +403,7 @@ module Cucumber
|
|
|
427
403
|
Given(/^there are bananas$/) { |s| s }
|
|
428
404
|
end
|
|
429
405
|
|
|
430
|
-
it
|
|
406
|
+
it 'includes the doc string in the json data' do
|
|
431
407
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
432
408
|
[{"id": "banana-party",
|
|
433
409
|
"uri": "spec.feature",
|
|
@@ -449,13 +425,13 @@ module Cucumber
|
|
|
449
425
|
"doc_string": {"value": "the doc string",
|
|
450
426
|
"content_type": "",
|
|
451
427
|
"line": 5},
|
|
452
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
428
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:403"},
|
|
453
429
|
"result": {"status": "passed",
|
|
454
430
|
"duration": 1}}]}]}]})
|
|
455
431
|
end
|
|
456
432
|
end
|
|
457
433
|
|
|
458
|
-
describe
|
|
434
|
+
describe 'with a scenario with a step that use puts' do
|
|
459
435
|
define_feature <<-FEATURE
|
|
460
436
|
Feature: Banana party
|
|
461
437
|
|
|
@@ -464,10 +440,10 @@ module Cucumber
|
|
|
464
440
|
FEATURE
|
|
465
441
|
|
|
466
442
|
define_steps do
|
|
467
|
-
Given(/^there are bananas$/) { puts
|
|
443
|
+
Given(/^there are bananas$/) { puts 'from step' }
|
|
468
444
|
end
|
|
469
445
|
|
|
470
|
-
it
|
|
446
|
+
it 'includes the output from the step in the json data' do
|
|
471
447
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
472
448
|
[{"id": "banana-party",
|
|
473
449
|
"uri": "spec.feature",
|
|
@@ -487,13 +463,13 @@ module Cucumber
|
|
|
487
463
|
"name": "there are bananas",
|
|
488
464
|
"line": 4,
|
|
489
465
|
"output": ["from step"],
|
|
490
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
466
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:443"},
|
|
491
467
|
"result": {"status": "passed",
|
|
492
468
|
"duration": 1}}]}]}]})
|
|
493
469
|
end
|
|
494
470
|
end
|
|
495
471
|
|
|
496
|
-
describe
|
|
472
|
+
describe 'with a background' do
|
|
497
473
|
define_feature <<-FEATURE
|
|
498
474
|
Feature: Banana party
|
|
499
475
|
|
|
@@ -507,7 +483,7 @@ module Cucumber
|
|
|
507
483
|
Then the monkey eats more bananas
|
|
508
484
|
FEATURE
|
|
509
485
|
|
|
510
|
-
it
|
|
486
|
+
it 'includes the background in the json data each time it is executed' do
|
|
511
487
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
512
488
|
[{"id": "banana-party",
|
|
513
489
|
"uri": "spec.feature",
|
|
@@ -565,7 +541,7 @@ module Cucumber
|
|
|
565
541
|
end
|
|
566
542
|
end
|
|
567
543
|
|
|
568
|
-
describe
|
|
544
|
+
describe 'with a scenario with a step that embeds data directly' do
|
|
569
545
|
define_feature <<-FEATURE
|
|
570
546
|
Feature: Banana party
|
|
571
547
|
|
|
@@ -574,11 +550,11 @@ module Cucumber
|
|
|
574
550
|
FEATURE
|
|
575
551
|
|
|
576
552
|
define_steps do
|
|
577
|
-
Given(/^there are bananas$/) { data =
|
|
578
|
-
embed data,
|
|
553
|
+
Given(/^there are bananas$/) { data = 'YWJj'
|
|
554
|
+
embed data, 'mime-type;base64' }
|
|
579
555
|
end
|
|
580
556
|
|
|
581
|
-
it
|
|
557
|
+
it 'includes the data from the step in the json data' do
|
|
582
558
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
583
559
|
[{"id": "banana-party",
|
|
584
560
|
"uri": "spec.feature",
|
|
@@ -599,13 +575,13 @@ module Cucumber
|
|
|
599
575
|
"line": 4,
|
|
600
576
|
"embeddings": [{"mime_type": "mime-type",
|
|
601
577
|
"data": "YWJj"}],
|
|
602
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
578
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:553"},
|
|
603
579
|
"result": {"status": "passed",
|
|
604
580
|
"duration": 1}}]}]}]})
|
|
605
581
|
end
|
|
606
582
|
end
|
|
607
583
|
|
|
608
|
-
describe
|
|
584
|
+
describe 'with a scenario with a step that embeds a file' do
|
|
609
585
|
define_feature <<-FEATURE
|
|
610
586
|
Feature: Banana party
|
|
611
587
|
|
|
@@ -618,12 +594,12 @@ module Cucumber
|
|
|
618
594
|
RSpec::Mocks.allow_message(File, :file?) { true }
|
|
619
595
|
f1 = RSpec::Mocks::Double.new
|
|
620
596
|
RSpec::Mocks.allow_message(File, :open) { |&block| block.call(f1) }
|
|
621
|
-
RSpec::Mocks.allow_message(f1, :read) {
|
|
597
|
+
RSpec::Mocks.allow_message(f1, :read) { 'foo' }
|
|
622
598
|
embed('out/snapshot.jpeg', 'image/png')
|
|
623
599
|
}
|
|
624
600
|
end
|
|
625
601
|
|
|
626
|
-
it
|
|
602
|
+
it 'includes the file content in the json data' do
|
|
627
603
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
628
604
|
[{"id": "banana-party",
|
|
629
605
|
"uri": "spec.feature",
|
|
@@ -644,13 +620,13 @@ module Cucumber
|
|
|
644
620
|
"line": 4,
|
|
645
621
|
"embeddings": [{"mime_type": "image/png",
|
|
646
622
|
"data": "Zm9v"}],
|
|
647
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
623
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:593"},
|
|
648
624
|
"result": {"status": "passed",
|
|
649
625
|
"duration": 1}}]}]}]})
|
|
650
626
|
end
|
|
651
627
|
end
|
|
652
628
|
|
|
653
|
-
describe
|
|
629
|
+
describe 'with a scenario with hooks' do
|
|
654
630
|
define_feature <<-FEATURE
|
|
655
631
|
Feature: Banana party
|
|
656
632
|
|
|
@@ -669,7 +645,7 @@ module Cucumber
|
|
|
669
645
|
Given(/^there are bananas$/) {}
|
|
670
646
|
end
|
|
671
647
|
|
|
672
|
-
it
|
|
648
|
+
it 'includes all hooks except the around hook in the json data' do
|
|
673
649
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
674
650
|
[{"id": "banana-party",
|
|
675
651
|
"uri": "spec.feature",
|
|
@@ -685,37 +661,37 @@ module Cucumber
|
|
|
685
661
|
"description": "",
|
|
686
662
|
"type": "scenario",
|
|
687
663
|
"before":
|
|
688
|
-
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
664
|
+
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:638"},
|
|
689
665
|
"result": {"status": "passed",
|
|
690
666
|
"duration": 1}},
|
|
691
|
-
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
667
|
+
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:639"},
|
|
692
668
|
"result": {"status": "passed",
|
|
693
669
|
"duration": 1}}],
|
|
694
670
|
"steps":
|
|
695
671
|
[{"keyword": "Given ",
|
|
696
672
|
"name": "there are bananas",
|
|
697
673
|
"line": 4,
|
|
698
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
674
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:645"},
|
|
699
675
|
"result": {"status": "passed",
|
|
700
676
|
"duration": 1},
|
|
701
677
|
"after":
|
|
702
|
-
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
678
|
+
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:642"},
|
|
703
679
|
"result": {"status": "passed",
|
|
704
680
|
"duration": 1}},
|
|
705
|
-
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
681
|
+
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:643"},
|
|
706
682
|
"result": {"status": "passed",
|
|
707
683
|
"duration": 1}}]}],
|
|
708
684
|
"after":
|
|
709
|
-
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
685
|
+
[{"match": {"location": "spec/cucumber/formatter/json_spec.rb:641"},
|
|
710
686
|
"result": {"status": "passed",
|
|
711
687
|
"duration": 1}},
|
|
712
|
-
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
688
|
+
{"match": {"location": "spec/cucumber/formatter/json_spec.rb:640"},
|
|
713
689
|
"result": {"status": "passed",
|
|
714
690
|
"duration": 1}}]}]}]})
|
|
715
691
|
end
|
|
716
692
|
end
|
|
717
693
|
|
|
718
|
-
describe
|
|
694
|
+
describe 'with a scenario when only an around hook is failing' do
|
|
719
695
|
define_feature <<-FEATURE
|
|
720
696
|
Feature: Banana party
|
|
721
697
|
|
|
@@ -724,11 +700,11 @@ module Cucumber
|
|
|
724
700
|
FEATURE
|
|
725
701
|
|
|
726
702
|
define_steps do
|
|
727
|
-
Around() { |scenario, block| block.call; raise RuntimeError,
|
|
703
|
+
Around() { |scenario, block| block.call; raise RuntimeError, 'error' }
|
|
728
704
|
Given(/^there are bananas$/) {}
|
|
729
705
|
end
|
|
730
706
|
|
|
731
|
-
it
|
|
707
|
+
it 'includes the around hook result in the json data' do
|
|
732
708
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
733
709
|
[{"id": "banana-party",
|
|
734
710
|
"uri": "spec.feature",
|
|
@@ -747,18 +723,18 @@ module Cucumber
|
|
|
747
723
|
[{"keyword": "Given ",
|
|
748
724
|
"name": "there are bananas",
|
|
749
725
|
"line": 4,
|
|
750
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
726
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:704"},
|
|
751
727
|
"result": {"status": "passed",
|
|
752
728
|
"duration": 1}}],
|
|
753
729
|
"around":
|
|
754
730
|
[{"match": {"location": "unknown_hook_location:1"},
|
|
755
731
|
"result": {"status": "failed",
|
|
756
|
-
"error_message": "error (RuntimeError)\\n./spec/cucumber/formatter/json_spec.rb:
|
|
732
|
+
"error_message": "error (RuntimeError)\\n./spec/cucumber/formatter/json_spec.rb:703:in `Around'",
|
|
757
733
|
"duration": 1}}]}]}]})
|
|
758
734
|
end
|
|
759
735
|
end
|
|
760
736
|
|
|
761
|
-
describe
|
|
737
|
+
describe 'with a scenario with a step with a data table' do
|
|
762
738
|
define_feature <<-FEATURE
|
|
763
739
|
Feature: Banana party
|
|
764
740
|
|
|
@@ -772,7 +748,7 @@ module Cucumber
|
|
|
772
748
|
Given(/^there are bananas$/) { |s| s }
|
|
773
749
|
end
|
|
774
750
|
|
|
775
|
-
it
|
|
751
|
+
it 'includes the doc string in the json data' do
|
|
776
752
|
expect(load_normalised_json(@out)).to eq MultiJson.load(%{
|
|
777
753
|
[{"id": "banana-party",
|
|
778
754
|
"uri": "spec.feature",
|
|
@@ -791,10 +767,10 @@ module Cucumber
|
|
|
791
767
|
[{"keyword": "Given ",
|
|
792
768
|
"name": "there are bananas",
|
|
793
769
|
"line": 4,
|
|
794
|
-
"rows":
|
|
795
|
-
[{"cells": ["aa", "bb"]},
|
|
770
|
+
"rows":
|
|
771
|
+
[{"cells": ["aa", "bb"]},
|
|
796
772
|
{"cells": ["cc", "dd"]}],
|
|
797
|
-
"match": {"location": "spec/cucumber/formatter/json_spec.rb:
|
|
773
|
+
"match": {"location": "spec/cucumber/formatter/json_spec.rb:748"},
|
|
798
774
|
"result": {"status": "passed",
|
|
799
775
|
"duration": 1}}]}]}]})
|
|
800
776
|
end
|
|
@@ -811,7 +787,7 @@ module Cucumber
|
|
|
811
787
|
json.each do |feature|
|
|
812
788
|
elements = feature.fetch('elements') { [] }
|
|
813
789
|
elements.each do |scenario|
|
|
814
|
-
|
|
790
|
+
%w(steps before after around).each do |type|
|
|
815
791
|
if scenario[type]
|
|
816
792
|
scenario[type].each do |step_or_hook|
|
|
817
793
|
normalise_json_step_or_hook(step_or_hook)
|
|
@@ -828,12 +804,10 @@ module Cucumber
|
|
|
828
804
|
end
|
|
829
805
|
|
|
830
806
|
def normalise_json_step_or_hook(step_or_hook)
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
end
|
|
836
|
-
end
|
|
807
|
+
return unless step_or_hook['result'] && step_or_hook['result']['duration']
|
|
808
|
+
|
|
809
|
+
expect(step_or_hook['result']['duration']).to be >= 0
|
|
810
|
+
step_or_hook['result']['duration'] = 1
|
|
837
811
|
end
|
|
838
812
|
|
|
839
813
|
end
|