cucumber 3.0.0.pre.1 → 3.0.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cucumberproignore +6 -0
- data/.rubocop.yml +13 -0
- data/.rubocop_todo.yml +1075 -0
- data/.travis.yml +42 -8
- data/CONTRIBUTING.md +8 -1
- data/Gemfile +16 -10
- data/History.md +96 -36
- data/README.md +12 -3
- data/Rakefile +12 -2
- data/appveyor.yml +26 -0
- data/cucumber.gemspec +15 -10
- data/cucumber.yml +9 -10
- data/examples/i18n/Rakefile +1 -1
- data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +2 -2
- data/examples/i18n/ar/lib/calculator.rb +2 -2
- data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +6 -6
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/ca/lib/calculadora.rb +2 -2
- data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/cs/lib/calculator.rb +3 -3
- data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +4 -4
- data/examples/i18n/da/lib/lommeregner.rb +2 -2
- data/examples/i18n/de/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/de/lib/calculator.rb +2 -2
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/el/lib/calculator.rb +2 -2
- data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +4 -4
- data/examples/i18n/en-lol/lib/basket.rb +2 -2
- data/examples/i18n/en-lol/lib/belly.rb +2 -2
- data/examples/i18n/en/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/en/lib/calculator.rb +2 -2
- data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/eo/lib/calculator.rb +2 -2
- data/examples/i18n/es/features/step_definitions/calculador_steps.rb +5 -5
- data/examples/i18n/es/lib/calculador.rb +2 -2
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +4 -4
- data/examples/i18n/et/lib/kalkulaator.rb +3 -3
- data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +3 -3
- 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 +1 -1
- data/examples/i18n/fr/lib/calculatrice.rb +2 -2
- data/examples/i18n/he/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/he/lib/calculator.rb +1 -1
- data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +3 -3
- data/examples/i18n/hi/lib/calculator.rb +1 -1
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +4 -4
- data/examples/i18n/ht/lib/kalkilatris.rb +2 -2
- data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/hu/lib/calculator.rb +1 -1
- data/examples/i18n/id/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/id/lib/calculator.rb +2 -2
- data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +4 -4
- 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 +1 -1
- data/examples/i18n/ja/lib/calculator.rb +2 -2
- data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/ko/lib/calculator.rb +2 -2
- data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/lt/lib/calculator.rb +2 -2
- data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +4 -4
- 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 +1 -1
- data/examples/i18n/no/lib/kalkulator.rb +2 -2
- data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +4 -4
- 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 +1 -1
- data/examples/i18n/pt/lib/calculadora.rb +1 -1
- data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/ro/lib/calculator.rb +1 -1
- data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +4 -4
- 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 +1 -1
- data/examples/i18n/sr-Cyrl/lib/calculator.rb +2 -2
- data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/sr-Latn/lib/calculator.rb +2 -2
- data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +3 -3
- data/examples/i18n/sv/lib/kalkulator.rb +2 -2
- data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +4 -4
- 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/uz/features/step_definitions/calculator_steps.rb +4 -4
- data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +5 -5
- data/examples/i18n/zh-CN/lib/calculator.rb +2 -2
- data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +4 -4
- 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/tcl/features/step_definitions/fib_steps.rb +2 -2
- data/examples/test_unit/features/step_definitions/test_unit_steps.rb +4 -4
- data/examples/watir/features/step_definitions/search_steps.rb +3 -3
- 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 +1 -1
- 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 +4 -4
- data/features/docs/cli/fail_fast.feature +2 -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 +28 -3
- 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/nested_steps.feature +5 -1
- data/features/docs/defining_steps/nested_steps_i18n.feature +1 -0
- data/features/docs/defining_steps/nested_steps_with_second_arg.feature +2 -0
- data/features/docs/defining_steps/printing_messages.feature +1 -1
- data/features/docs/defining_steps/skip_scenario.feature +1 -0
- 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_starting_event.feature +54 -0
- data/features/docs/events/test_run_finished_event.feature +40 -0
- data/features/docs/events/test_run_starting_event.feature +41 -0
- data/features/docs/events/test_step_finished_event.feature +47 -0
- data/features/docs/events/test_step_starting_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 +21 -1
- 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 +1 -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 +4 -0
- data/features/docs/gherkin/unicode_table.feature +1 -0
- 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 -1
- 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 +75 -0
- data/features/docs/writing_support_code/tagged_hooks.feature +1 -1
- data/features/lib/step_definitions/aruba_steps.rb +4 -10
- data/features/lib/step_definitions/cli_steps.rb +2 -2
- data/features/lib/step_definitions/cucumber_steps.rb +8 -12
- data/features/lib/step_definitions/iso-8859-1_steps.rb +2 -2
- data/features/lib/step_definitions/json_steps.rb +1 -1
- data/features/lib/step_definitions/junit_steps.rb +1 -1
- data/features/lib/step_definitions/language_steps.rb +2 -2
- data/features/lib/step_definitions/profile_steps.rb +6 -6
- data/features/lib/step_definitions/retry_steps.rb +3 -3
- data/features/lib/step_definitions/ruby_steps.rb +1 -1
- data/features/lib/support/env.rb +1 -1
- data/features/lib/support/fake_wire_server.rb +7 -2
- data/features/lib/support/feature_factory.rb +1 -1
- data/features/lib/support/normalise_output.rb +13 -12
- data/features/lib/support/parameter_types.rb +8 -0
- data/gem_tasks/contributors.rake +9 -6
- data/gem_tasks/environment.rake +1 -5
- data/gem_tasks/examples.rake +1 -1
- data/gem_tasks/fix_cr_lf.rake +1 -1
- data/gem_tasks/flog.rake +2 -2
- data/gem_tasks/rspec.rake +1 -1
- data/lib/autotest/cucumber_mixin.rb +15 -15
- data/lib/autotest/discover.rb +2 -2
- data/lib/cucumber/cli/configuration.rb +7 -13
- data/lib/cucumber/cli/main.rb +6 -6
- data/lib/cucumber/cli/options.rb +163 -126
- data/lib/cucumber/cli/profile_loader.rb +24 -20
- data/lib/cucumber/configuration.rb +12 -17
- data/lib/cucumber/constantize.rb +1 -1
- data/lib/cucumber/core_ext/string.rb +1 -1
- data/lib/cucumber/deprecate.rb +1 -1
- data/lib/cucumber/events.rb +11 -1
- data/lib/cucumber/events/gherkin_source_read.rb +17 -0
- data/lib/cucumber/events/{step_match.rb → step_activated.rb} +2 -2
- data/lib/cucumber/events/step_definition_registered.rb +1 -1
- data/lib/cucumber/events/test_case_finished.rb +18 -0
- data/lib/cucumber/events/test_case_starting.rb +15 -0
- data/lib/cucumber/events/test_run_starting.rb +16 -0
- data/lib/cucumber/events/test_step_finished.rb +20 -0
- data/lib/cucumber/events/test_step_starting.rb +17 -0
- data/lib/cucumber/filters.rb +1 -0
- data/lib/cucumber/filters/activate_steps.rb +1 -1
- data/lib/cucumber/filters/broadcast_test_run_starting_event.rb +27 -0
- data/lib/cucumber/filters/retry.rb +1 -1
- data/lib/cucumber/filters/tag_limits.rb +3 -3
- data/lib/cucumber/filters/tag_limits/verifier.rb +1 -1
- data/lib/cucumber/formatter/ansicolor.rb +8 -11
- data/lib/cucumber/formatter/backtrace_filter.rb +19 -7
- data/lib/cucumber/formatter/console.rb +16 -19
- data/lib/cucumber/formatter/console_counts.rb +8 -21
- data/lib/cucumber/formatter/console_issues.rb +30 -9
- data/lib/cucumber/formatter/duration.rb +1 -1
- data/lib/cucumber/formatter/fail_fast.rb +1 -1
- data/lib/cucumber/formatter/html.rb +168 -242
- data/lib/cucumber/formatter/html_builder.rb +110 -0
- data/lib/cucumber/formatter/inline-js.js +30 -0
- data/lib/cucumber/formatter/interceptor.rb +2 -2
- data/lib/cucumber/formatter/json.rb +12 -12
- data/lib/cucumber/formatter/junit.rb +11 -11
- data/lib/cucumber/formatter/legacy_api/adapter.rb +27 -27
- data/lib/cucumber/formatter/legacy_api/ast.rb +16 -20
- data/lib/cucumber/formatter/legacy_api/results.rb +6 -8
- data/lib/cucumber/formatter/pretty.rb +17 -17
- data/lib/cucumber/formatter/progress.rb +11 -12
- data/lib/cucumber/formatter/rerun.rb +1 -1
- data/lib/cucumber/formatter/steps.rb +1 -1
- data/lib/cucumber/formatter/unicode.rb +1 -1
- data/lib/cucumber/formatter/usage.rb +12 -12
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +1 -1
- data/lib/cucumber/gherkin/formatter/escaping.rb +1 -1
- data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +44 -17
- 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 +225 -0
- data/lib/cucumber/{rb_support/rb_language.rb → glue/registry_and_more.rb} +45 -86
- data/lib/cucumber/{rb_support → glue}/snippet.rb +62 -25
- data/lib/cucumber/glue/step_definition.rb +143 -0
- data/lib/cucumber/glue/world_factory.rb +23 -0
- data/lib/cucumber/hooks.rb +4 -4
- data/lib/cucumber/multiline_argument.rb +2 -2
- data/lib/cucumber/multiline_argument/data_table.rb +40 -178
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +158 -0
- data/lib/cucumber/platform.rb +3 -5
- data/lib/cucumber/rake/task.rb +11 -11
- data/lib/cucumber/rspec/disable_option_parser.rb +1 -1
- data/lib/cucumber/rspec/doubles.rb +1 -1
- data/lib/cucumber/running_test_case.rb +2 -2
- data/lib/cucumber/runtime.rb +46 -34
- data/lib/cucumber/runtime/after_hooks.rb +1 -1
- data/lib/cucumber/runtime/for_programming_languages.rb +1 -36
- data/lib/cucumber/runtime/support_code.rb +19 -15
- data/lib/cucumber/runtime/user_interface.rb +4 -11
- data/lib/cucumber/step_argument.rb +0 -2
- data/lib/cucumber/step_definition_light.rb +1 -0
- data/lib/cucumber/step_match.rb +16 -15
- data/lib/cucumber/step_match_search.rb +2 -3
- data/lib/cucumber/term/ansicolor.rb +1 -1
- data/lib/cucumber/version +1 -1
- data/lib/simplecov_setup.rb +1 -1
- data/scripts/invite-collaborator +40 -0
- data/scripts/update-history +83 -0
- data/spec/cucumber/cli/configuration_spec.rb +95 -97
- data/spec/cucumber/cli/main_spec.rb +7 -7
- data/spec/cucumber/cli/options_spec.rb +112 -78
- data/spec/cucumber/cli/profile_loader_spec.rb +24 -5
- data/spec/cucumber/cli/rerun_spec.rb +20 -20
- data/spec/cucumber/configuration_spec.rb +47 -47
- data/spec/cucumber/constantize_spec.rb +2 -2
- data/spec/cucumber/events_spec.rb +9 -0
- data/spec/cucumber/file_specs_spec.rb +25 -25
- data/spec/cucumber/filters/activate_steps_spec.rb +16 -16
- data/spec/cucumber/filters/gated_receiver_spec.rb +6 -6
- data/spec/cucumber/filters/retry_spec.rb +22 -9
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +11 -11
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +14 -14
- data/spec/cucumber/filters/tag_limits_spec.rb +8 -8
- data/spec/cucumber/formatter/ansicolor_spec.rb +9 -9
- data/spec/cucumber/formatter/backtrace_filter_spec.rb +32 -0
- data/spec/cucumber/formatter/console_counts_spec.rb +1 -1
- data/spec/cucumber/formatter/duration_spec.rb +3 -3
- data/spec/cucumber/formatter/fail_fast_spec.rb +21 -21
- data/spec/cucumber/formatter/html_spec.rb +58 -58
- data/spec/cucumber/formatter/json_spec.rb +44 -46
- data/spec/cucumber/formatter/junit_spec.rb +43 -45
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +43 -43
- data/spec/cucumber/formatter/pretty_spec.rb +107 -107
- data/spec/cucumber/formatter/progress_spec.rb +20 -20
- data/spec/cucumber/formatter/rerun_spec.rb +1 -1
- data/spec/cucumber/formatter/spec_helper.rb +6 -5
- data/spec/cucumber/{rb_support/rb_world_spec.rb → glue/proto_world_spec.rb} +20 -5
- data/spec/cucumber/glue/registry_and_more_spec.rb +213 -0
- data/spec/cucumber/{rb_support → glue}/snippet_spec.rb +61 -25
- data/spec/cucumber/glue/step_definition_spec.rb +207 -0
- data/spec/cucumber/hooks_spec.rb +3 -3
- data/spec/cucumber/multiline_argument/data_table_spec.rb +177 -133
- data/spec/cucumber/project_initializer_spec.rb +10 -10
- data/spec/cucumber/rake/forked_spec.rb +10 -10
- data/spec/cucumber/rake/task_spec.rb +20 -20
- data/spec/cucumber/running_test_case_spec.rb +35 -35
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +1 -30
- data/spec/cucumber/runtime_spec.rb +2 -2
- data/spec/cucumber/step_argument_spec.rb +5 -5
- data/spec/cucumber/step_match_search_spec.rb +31 -41
- data/spec/cucumber/step_match_spec.rb +33 -33
- data/spec/cucumber/world/pending_spec.rb +10 -10
- metadata +117 -47
- data/features/docs/formatters/debug_formatter.feature +0 -47
- data/features/docs/writing_support_code/transforms.feature +0 -98
- data/features/lib/step_definitions/wire_steps.rb +0 -59
- data/gem_tasks/cucumber.rake +0 -26
- data/lib/cucumber/core_ext/instance_exec.rb +0 -71
- data/lib/cucumber/formatter/debug.rb +0 -36
- data/lib/cucumber/rb_support/rb_hook.rb +0 -20
- data/lib/cucumber/rb_support/rb_step_definition.rb +0 -132
- data/lib/cucumber/rb_support/rb_transform.rb +0 -60
- data/lib/cucumber/rb_support/rb_world.rb +0 -171
- data/spec/cucumber/core_ext/instance_exec_spec.rb +0 -5
- data/spec/cucumber/formatter/debug_spec.rb +0 -65
- data/spec/cucumber/rb_support/rb_language_spec.rb +0 -321
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -200
- data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -47
@@ -38,7 +38,7 @@ module Cli
|
|
38
38
|
|
39
39
|
attr_reader :out, :error
|
40
40
|
|
41
|
-
it
|
41
|
+
it 'uses the default profile when no profile is defined' do
|
42
42
|
given_cucumber_yml_defined_as({'default' => '--require some_file'})
|
43
43
|
|
44
44
|
config.parse!(%w{--format progress})
|
@@ -49,16 +49,16 @@ module Cli
|
|
49
49
|
context '--profile' do
|
50
50
|
include RSpec::WorkInProgress
|
51
51
|
|
52
|
-
it
|
52
|
+
it 'expands args from profiles in the cucumber.yml file' do
|
53
53
|
given_cucumber_yml_defined_as({'bongo' => '--require from/yml'})
|
54
54
|
|
55
55
|
config.parse!(%w{--format progress --profile bongo})
|
56
56
|
|
57
|
-
expect(config.options[:formats]).to eq [['progress', out]]
|
57
|
+
expect(config.options[:formats]).to eq [['progress', {}, out]]
|
58
58
|
expect(config.options[:require]).to eq ['from/yml']
|
59
59
|
end
|
60
60
|
|
61
|
-
it
|
61
|
+
it 'expands args from the default profile when no flags are provided' do
|
62
62
|
given_cucumber_yml_defined_as({'default' => '--require from/yml'})
|
63
63
|
|
64
64
|
config.parse!([])
|
@@ -66,7 +66,7 @@ module Cli
|
|
66
66
|
expect(config.options[:require]).to eq ['from/yml']
|
67
67
|
end
|
68
68
|
|
69
|
-
it
|
69
|
+
it 'allows --strict to be set by a profile' do
|
70
70
|
given_cucumber_yml_defined_as({'bongo' => '--strict'})
|
71
71
|
|
72
72
|
config.parse!(%w{--profile bongo})
|
@@ -74,7 +74,7 @@ module Cli
|
|
74
74
|
expect(config.options[:strict]).to be true
|
75
75
|
end
|
76
76
|
|
77
|
-
it
|
77
|
+
it 'parses ERB syntax in the cucumber.yml file' do
|
78
78
|
given_cucumber_yml_defined_as("---\ndefault: \"<%=\"--require some_file\"%>\"\n")
|
79
79
|
|
80
80
|
config.parse!([])
|
@@ -82,7 +82,7 @@ module Cli
|
|
82
82
|
expect(config.options[:require]).to include('some_file')
|
83
83
|
end
|
84
84
|
|
85
|
-
it
|
85
|
+
it 'parses ERB in cucumber.yml that makes uses nested ERB sessions' do
|
86
86
|
given_cucumber_yml_defined_as(<<ERB_YML)
|
87
87
|
<%= ERB.new({'standard' => '--require some_file'}.to_yaml).result %>
|
88
88
|
<%= ERB.new({'enhanced' => '--require other_file'}.to_yaml).result %>
|
@@ -93,7 +93,7 @@ ERB_YML
|
|
93
93
|
expect(config.options[:require]).to include('some_file')
|
94
94
|
end
|
95
95
|
|
96
|
-
it
|
96
|
+
it 'provides a helpful error message when a specified profile does not exists in cucumber.yml' do
|
97
97
|
given_cucumber_yml_defined_as({'default' => '--require from/yml', 'html_report' => '--format html'})
|
98
98
|
|
99
99
|
expected_message = <<-END_OF_MESSAGE
|
@@ -107,42 +107,42 @@ END_OF_MESSAGE
|
|
107
107
|
expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(ProfileNotFound, expected_message)
|
108
108
|
end
|
109
109
|
|
110
|
-
it
|
110
|
+
it 'allows profiles to be defined in arrays' do
|
111
111
|
given_cucumber_yml_defined_as({'foo' => ['-f','progress']})
|
112
112
|
|
113
113
|
config.parse!(%w{--profile foo})
|
114
114
|
|
115
|
-
expect(config.options[:formats]).to eq [['progress', out]]
|
115
|
+
expect(config.options[:formats]).to eq [['progress', {}, out]]
|
116
116
|
end
|
117
117
|
|
118
|
-
it
|
118
|
+
it 'disregards default STDOUT formatter defined in profile when another is passed in (via cmd line)' do
|
119
119
|
given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
|
120
120
|
config.parse!(%w{--format progress --profile foo})
|
121
121
|
|
122
|
-
expect(config.options[:formats]).to eq [['progress', out]]
|
122
|
+
expect(config.options[:formats]).to eq [['progress', {}, out]]
|
123
123
|
end
|
124
124
|
|
125
|
-
[
|
125
|
+
['--no-profile', '-P'].each do |flag|
|
126
126
|
context 'when none is specified with #{flag}' do
|
127
|
-
it
|
127
|
+
it 'disables profiles' do
|
128
128
|
given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
|
129
129
|
|
130
|
-
config.parse!("#{flag} --require some_file.rb".split(
|
130
|
+
config.parse!("#{flag} --require some_file.rb".split(' '))
|
131
131
|
|
132
132
|
expect(config.options[:require]).to eq ['some_file.rb']
|
133
133
|
end
|
134
134
|
|
135
|
-
it
|
135
|
+
it 'notifies the user that the profiles are being disabled' do
|
136
136
|
given_cucumber_yml_defined_as({'default' => '-v'})
|
137
137
|
|
138
|
-
config.parse!("#{flag} --require some_file.rb".split(
|
138
|
+
config.parse!("#{flag} --require some_file.rb".split(' '))
|
139
139
|
|
140
|
-
expect(out.string).to match
|
140
|
+
expect(out.string).to match(/Disabling profiles.../)
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
145
|
-
it
|
145
|
+
it 'issues a helpful error message when a specified profile exists but is nil or blank' do
|
146
146
|
[nil, ' '].each do |bad_input|
|
147
147
|
given_cucumber_yml_defined_as({'foo' => bad_input})
|
148
148
|
|
@@ -152,7 +152,7 @@ END_OF_MESSAGE
|
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
155
|
-
it
|
155
|
+
it 'issues a helpful error message when no YAML file exists and a profile is specified' do
|
156
156
|
expect(File).to receive(:exist?).with('cucumber.yml') { false }
|
157
157
|
|
158
158
|
expected_error = /cucumber\.yml was not found/
|
@@ -160,10 +160,10 @@ END_OF_MESSAGE
|
|
160
160
|
expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(expected_error)
|
161
161
|
end
|
162
162
|
|
163
|
-
it
|
163
|
+
it 'issues a helpful error message when cucumber.yml is blank or malformed' do
|
164
164
|
expected_error_message = /cucumber\.yml was found, but was blank or malformed. Please refer to cucumber's documentation on correct profile usage./
|
165
165
|
|
166
|
-
['', 'sfsadfs', "--- \n- an\n- array\n",
|
166
|
+
['', 'sfsadfs', "--- \n- an\n- array\n", '---dddfd'].each do |bad_input|
|
167
167
|
given_cucumber_yml_defined_as(bad_input)
|
168
168
|
|
169
169
|
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
@@ -172,149 +172,149 @@ END_OF_MESSAGE
|
|
172
172
|
end
|
173
173
|
end
|
174
174
|
|
175
|
-
it
|
175
|
+
it 'issues a helpful error message when cucumber.yml can not be parsed' do
|
176
176
|
expected_error_message = /cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentation on correct profile usage./
|
177
177
|
|
178
|
-
given_cucumber_yml_defined_as(
|
178
|
+
given_cucumber_yml_defined_as('input that causes an exception in YAML loading')
|
179
179
|
|
180
180
|
expect(YAML).to receive(:load).and_raise(ArgumentError)
|
181
181
|
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
182
182
|
end
|
183
183
|
|
184
|
-
it
|
184
|
+
it 'issues a helpful error message when cucumber.yml can not be parsed by ERB' do
|
185
185
|
expected_error_message = /cucumber.yml was found, but could not be parsed with ERB. Please refer to cucumber's documentation on correct profile usage./
|
186
|
-
given_cucumber_yml_defined_as(
|
186
|
+
given_cucumber_yml_defined_as('<% this_fails %>')
|
187
187
|
|
188
188
|
expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
192
|
-
it
|
192
|
+
it 'accepts --dry-run option' do
|
193
193
|
config.parse!(%w{--dry-run})
|
194
194
|
|
195
195
|
expect(config.options[:dry_run]).to be true
|
196
196
|
end
|
197
|
-
|
198
|
-
it
|
197
|
+
|
198
|
+
it 'implies --no-duration with --dry-run option' do
|
199
199
|
config.parse!(%w{--dry-run})
|
200
|
-
|
200
|
+
|
201
201
|
expect(config.options[:duration]).to be false
|
202
202
|
end
|
203
203
|
|
204
|
-
it
|
204
|
+
it 'accepts --no-source option' do
|
205
205
|
config.parse!(%w{--no-source})
|
206
206
|
|
207
207
|
expect(config.options[:source]).to be false
|
208
208
|
end
|
209
209
|
|
210
|
-
it
|
210
|
+
it 'accepts --no-snippets option' do
|
211
211
|
config.parse!(%w{--no-snippets})
|
212
212
|
|
213
213
|
expect(config.options[:snippets]).to be false
|
214
214
|
end
|
215
215
|
|
216
|
-
it
|
216
|
+
it 'sets snippets and source and duration to false with --quiet option' do
|
217
217
|
config.parse!(%w{--quiet})
|
218
218
|
|
219
219
|
expect(config.options[:snippets]).to be false
|
220
220
|
expect(config.options[:source]).to be false
|
221
221
|
expect(config.options[:duration]).to be false
|
222
222
|
end
|
223
|
-
|
224
|
-
it
|
223
|
+
|
224
|
+
it 'sets duration to false with --no-duration' do
|
225
225
|
config.parse!(%w{--no-duration})
|
226
|
-
|
226
|
+
|
227
227
|
expect(config.options[:duration]).to be false
|
228
228
|
end
|
229
229
|
|
230
|
-
it
|
230
|
+
it 'accepts --verbose option' do
|
231
231
|
config.parse!(%w{--verbose})
|
232
232
|
|
233
233
|
expect(config.options[:verbose]).to be true
|
234
234
|
end
|
235
235
|
|
236
|
-
it
|
236
|
+
it 'accepts --out option' do
|
237
237
|
config.parse!(%w{--out jalla.txt})
|
238
238
|
|
239
|
-
expect(config.formats).to eq [['pretty', 'jalla.txt']]
|
239
|
+
expect(config.formats).to eq [['pretty', {}, 'jalla.txt']]
|
240
240
|
end
|
241
241
|
|
242
|
-
it
|
242
|
+
it 'accepts multiple --out options' do
|
243
243
|
config.parse!(%w{--format progress --out file1 --out file2})
|
244
244
|
|
245
|
-
expect(config.formats).to eq [['progress', 'file2']]
|
245
|
+
expect(config.formats).to eq [['progress', {}, 'file2']]
|
246
246
|
end
|
247
247
|
|
248
|
-
it
|
248
|
+
it 'accepts multiple --format options and put the STDOUT one first so progress is seen' do
|
249
249
|
config.parse!(%w{--format pretty --out pretty.txt --format progress})
|
250
250
|
|
251
|
-
expect(config.formats).to eq [['progress', out], ['pretty', 'pretty.txt']]
|
251
|
+
expect(config.formats).to eq [['progress', {}, out], ['pretty', {}, 'pretty.txt']]
|
252
252
|
end
|
253
253
|
|
254
|
-
it
|
255
|
-
expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error(
|
254
|
+
it 'does not accept multiple --format options when both use implicit STDOUT' do
|
255
|
+
expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
|
256
256
|
end
|
257
257
|
|
258
|
-
it
|
258
|
+
it 'does not accept multiple --format options when both use implicit STDOUT (using profile with no formatters)' do
|
259
259
|
given_cucumber_yml_defined_as({'default' => ['-q']})
|
260
|
-
expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error(
|
260
|
+
expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
|
261
261
|
end
|
262
262
|
|
263
|
-
it
|
263
|
+
it 'accepts same --format options with implicit STDOUT, and keep only one' do
|
264
264
|
config.parse!(%w{--format pretty --format pretty})
|
265
265
|
|
266
|
-
expect(config.formats).to eq [[
|
266
|
+
expect(config.formats).to eq [['pretty', {}, out]]
|
267
267
|
end
|
268
268
|
|
269
|
-
it
|
270
|
-
expect(-> { config.parse!(%w{--format pretty --out file1 --format progress --out file1}) }).to raise_error(
|
269
|
+
it 'does not accept multiple --out streams pointing to the same place' do
|
270
|
+
expect(-> { config.parse!(%w{--format pretty --out file1 --format progress --out file1}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
|
271
271
|
end
|
272
272
|
|
273
|
-
it
|
273
|
+
it 'does not accept multiple --out streams pointing to the same place (one from profile, one from command line)' do
|
274
274
|
given_cucumber_yml_defined_as({'default' => ['-f','progress', '--out', 'file1']})
|
275
|
-
expect(-> { config.parse!(%w{--format pretty --out file1}) }).to raise_error(
|
275
|
+
expect(-> { config.parse!(%w{--format pretty --out file1}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
|
276
276
|
end
|
277
277
|
|
278
|
-
it
|
278
|
+
it 'associates --out to previous --format' do
|
279
279
|
config.parse!(%w{--format progress --out file1 --format profile --out file2})
|
280
280
|
|
281
|
-
expect(config.formats).to eq [[
|
281
|
+
expect(config.formats).to eq [['progress', {}, 'file1'], ['profile', {}, 'file2']]
|
282
282
|
end
|
283
283
|
|
284
|
-
it
|
284
|
+
it 'accepts same --format options with same --out streams and keep only one' do
|
285
285
|
config.parse!(%w{--format html --out file --format pretty --format html --out file})
|
286
286
|
|
287
|
-
expect(config.formats).to eq [[
|
287
|
+
expect(config.formats).to eq [['pretty', {}, out], ['html', {}, 'file']]
|
288
288
|
end
|
289
289
|
|
290
|
-
it
|
290
|
+
it 'accepts same --format options with different --out streams' do
|
291
291
|
config.parse!(%w{--format html --out file1 --format html --out file2})
|
292
292
|
|
293
|
-
expect(config.formats).to eq [[
|
293
|
+
expect(config.formats).to eq [['html', {}, 'file1'], ['html', {}, 'file2']]
|
294
294
|
end
|
295
295
|
|
296
|
-
it
|
296
|
+
it 'accepts --color option' do
|
297
297
|
expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(true)
|
298
298
|
|
299
299
|
config.parse!(['--color'])
|
300
300
|
end
|
301
301
|
|
302
|
-
it
|
302
|
+
it 'accepts --no-color option' do
|
303
303
|
expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(false)
|
304
304
|
|
305
305
|
config = Configuration.new(StringIO.new)
|
306
306
|
config.parse!(['--no-color'])
|
307
307
|
end
|
308
308
|
|
309
|
-
describe
|
309
|
+
describe '--backtrace' do
|
310
310
|
before do
|
311
311
|
Cucumber.use_full_backtrace = false
|
312
312
|
end
|
313
313
|
|
314
|
-
it
|
314
|
+
it 'shows full backtrace when --backtrace is present' do
|
315
315
|
Main.new(['--backtrace'])
|
316
316
|
begin
|
317
|
-
expect(
|
317
|
+
expect('x').to eq 'y'
|
318
318
|
rescue RSpec::Expectations::ExpectationNotMetError => e
|
319
319
|
expect(e.backtrace[0]).not_to eq "#{__FILE__}:#{__LINE__ - 2}"
|
320
320
|
end
|
@@ -325,108 +325,106 @@ END_OF_MESSAGE
|
|
325
325
|
end
|
326
326
|
end
|
327
327
|
|
328
|
-
it
|
329
|
-
config.parse!(['--name',
|
328
|
+
it 'accepts multiple --name options' do
|
329
|
+
config.parse!(['--name', 'User logs in', '--name', 'User signs up'])
|
330
330
|
|
331
331
|
expect(config.options[:name_regexps]).to include(/User logs in/)
|
332
332
|
expect(config.options[:name_regexps]).to include(/User signs up/)
|
333
333
|
end
|
334
334
|
|
335
|
-
it
|
336
|
-
config.parse!(['-n',
|
335
|
+
it 'accepts multiple -n options' do
|
336
|
+
config.parse!(['-n', 'User logs in', '-n', 'User signs up'])
|
337
337
|
|
338
338
|
expect(config.options[:name_regexps]).to include(/User logs in/)
|
339
339
|
expect(config.options[:name_regexps]).to include(/User signs up/)
|
340
340
|
end
|
341
341
|
|
342
|
-
it
|
343
|
-
config.parse!([
|
342
|
+
it 'should allow specifying environment variables on the command line' do
|
343
|
+
config.parse!(['foo=bar'])
|
344
344
|
|
345
|
-
expect(ENV[
|
345
|
+
expect(ENV['foo']).to eq 'bar'
|
346
346
|
expect(config.paths).not_to include('foo=bar')
|
347
347
|
end
|
348
348
|
|
349
|
-
it
|
349
|
+
it 'allows specifying environment variables in profiles' do
|
350
350
|
given_cucumber_yml_defined_as({'selenium' => 'RAILS_ENV=selenium'})
|
351
|
-
config.parse!([
|
351
|
+
config.parse!(['--profile', 'selenium'])
|
352
352
|
|
353
|
-
expect(ENV[
|
353
|
+
expect(ENV['RAILS_ENV']).to eq 'selenium'
|
354
354
|
expect(config.paths).not_to include('RAILS_ENV=selenium')
|
355
355
|
end
|
356
356
|
|
357
|
-
describe
|
358
|
-
|
359
|
-
|
360
|
-
it "returns an empty expression when no tags are specified" do
|
357
|
+
describe '#tag_expressions' do
|
358
|
+
it 'returns an empty expression when no tags are specified' do
|
361
359
|
config.parse!([])
|
362
360
|
|
363
|
-
expect(config.
|
361
|
+
expect(config.tag_expressions).to be_empty
|
364
362
|
end
|
365
363
|
|
366
|
-
it
|
364
|
+
it 'returns an expression when tags are specified' do
|
367
365
|
config.parse!(['--tags','@foo'])
|
368
366
|
|
369
|
-
expect(config.
|
367
|
+
expect(config.tag_expressions).not_to be_empty
|
370
368
|
end
|
371
369
|
end
|
372
370
|
|
373
371
|
describe '#tag_limits' do
|
374
|
-
it
|
372
|
+
it 'returns an empty hash when no limits are specified' do
|
375
373
|
config.parse!([])
|
376
374
|
|
377
375
|
expect(config.tag_limits).to eq({ })
|
378
376
|
end
|
379
377
|
|
380
|
-
it
|
378
|
+
it 'returns a hash of limits when limits are specified' do
|
381
379
|
config.parse!(['--tags','@foo:1'])
|
382
380
|
|
383
|
-
expect(config.tag_limits).to eq({
|
381
|
+
expect(config.tag_limits).to eq({ '@foo' => 1 })
|
384
382
|
end
|
385
383
|
end
|
386
384
|
|
387
|
-
describe
|
388
|
-
it
|
385
|
+
describe '#dry_run?' do
|
386
|
+
it 'returns true when --dry-run was specified on in the arguments' do
|
389
387
|
config.parse!(['--dry-run'])
|
390
388
|
|
391
389
|
expect(config.dry_run?).to be true
|
392
390
|
end
|
393
391
|
|
394
|
-
it
|
392
|
+
it 'returns true when --dry-run was specified in yaml file' do
|
395
393
|
given_cucumber_yml_defined_as({'default' => '--dry-run'})
|
396
394
|
config.parse!([])
|
397
395
|
|
398
396
|
expect(config.dry_run?).to be true
|
399
397
|
end
|
400
398
|
|
401
|
-
it
|
399
|
+
it 'returns false by default' do
|
402
400
|
config.parse!([])
|
403
401
|
|
404
402
|
expect(config.dry_run?).to be false
|
405
403
|
end
|
406
404
|
end
|
407
405
|
|
408
|
-
describe
|
409
|
-
it
|
410
|
-
config.parse!([
|
406
|
+
describe '#snippet_type' do
|
407
|
+
it 'returns the snippet type when it was set' do
|
408
|
+
config.parse!(['--snippet-type', 'classic'])
|
411
409
|
|
412
410
|
expect(config.snippet_type).to eq :classic
|
413
411
|
end
|
414
412
|
|
415
|
-
it
|
416
|
-
config.parse!([
|
413
|
+
it 'returns the snippet type when it was set with shorthand option' do
|
414
|
+
config.parse!(['-I', 'classic'])
|
417
415
|
|
418
416
|
expect(config.snippet_type).to eq :classic
|
419
417
|
end
|
420
418
|
|
421
|
-
it
|
419
|
+
it 'returns the default snippet type if it was not set' do
|
422
420
|
config.parse!([])
|
423
421
|
|
424
|
-
expect(config.snippet_type).to eq :
|
422
|
+
expect(config.snippet_type).to eq :cucumber_expression
|
425
423
|
end
|
426
424
|
end
|
427
425
|
|
428
|
-
describe
|
429
|
-
it
|
426
|
+
describe '#retry_attempts' do
|
427
|
+
it 'returns the specified number of retries' do
|
430
428
|
config.parse!(['--retry=3'])
|
431
429
|
expect(config.retry_attempts).to eql 3
|
432
430
|
end
|