cucumber 1.3.10 → 2.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/.coveralls.yml +1 -0
- data/.rspec +1 -1
- data/.travis.yml +4 -3
- data/CONTRIBUTING.md +9 -0
- data/Gemfile +9 -2
- data/History.md +212 -22
- data/LICENSE +2 -2
- data/README.md +4 -4
- data/Rakefile +10 -1
- data/bin/cucumber +1 -5
- data/cucumber.gemspec +10 -13
- data/cucumber.yml +14 -24
- data/examples/{ramaze → i18n/el}/Rakefile +1 -1
- data/examples/i18n/el/features/addition.feature +17 -0
- data/examples/i18n/el/features/division.feature +10 -0
- data/examples/i18n/el/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/el/lib/calculator.rb +14 -0
- data/examples/i18n/fr/Rakefile +3 -1
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +2 -2
- data/examples/i18n/ht/Rakefile +6 -0
- data/examples/i18n/ht/features/adisyon.feature +17 -0
- data/examples/i18n/ht/features/divizyon.feature +10 -0
- data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +25 -0
- data/examples/i18n/ht/lib/kalkilatris.rb +14 -0
- data/examples/i18n/zh-CN/features/{step_definitons → step_definitions}/calculator_steps.rb +4 -4
- data/examples/tcl/features/step_definitions/fib_steps.rb +1 -1
- data/{legacy_features → features/docs}/api/list_step_defs_as_json.feature +14 -14
- data/{legacy_features → features/docs}/api/run_cli_main_with_existing_runtime.feature +5 -10
- data/features/{backtraces.feature → docs/cli/backtraces.feature} +2 -2
- data/features/docs/cli/dry_run.feature +73 -0
- data/features/docs/cli/exclude_files.feature +18 -0
- data/features/docs/cli/execute_with_tag_filter.feature +117 -0
- data/features/docs/cli/randomize.feature +46 -0
- data/features/docs/cli/require.feature +27 -0
- data/features/docs/cli/run_scenarios_matching_name.feature +104 -0
- data/features/docs/cli/run_specific_scenarios.feature +75 -0
- data/features/docs/cli/showing_differences.feature +43 -0
- data/features/docs/cli/specifying_multiple_formatters.feature +44 -0
- data/features/docs/cli/strict_mode.feature +64 -0
- data/features/{nested_steps.feature → docs/defining_steps/nested_steps.feature} +52 -6
- data/features/{nested_steps_i18n.feature → docs/defining_steps/nested_steps_i18n.feature} +0 -2
- data/features/{step_definitions.feature → docs/defining_steps/one_line_step_definitions.feature} +3 -3
- data/features/docs/defining_steps/printing_messages.feature +148 -0
- data/features/docs/defining_steps/skip_scenario.feature +62 -0
- data/features/docs/defining_steps/snippets.feature +56 -0
- data/{legacy_features → features/docs/defining_steps}/table_diffing.feature +21 -16
- data/features/{transforms.feature → docs/defining_steps/transforms.feature} +2 -2
- data/{legacy_features/exception_in_after_block.feature → features/docs/exception_in_after_hook.feature} +25 -26
- data/{legacy_features/exception_in_after_step_block.feature → features/docs/exception_in_after_step_hook.feature} +22 -24
- data/features/docs/exception_in_around_hook.feature +80 -0
- data/{legacy_features/exception_in_before_block.feature → features/docs/exception_in_before_hook.feature} +18 -20
- data/features/docs/extending_cucumber/custom_filter.feature +29 -0
- data/features/docs/extending_cucumber/custom_formatter.feature +94 -0
- data/features/docs/formatters/debug_formatter.feature +47 -0
- data/features/{formatter_step_file_colon_line.feature → docs/formatters/formatter_step_file_colon_line.feature} +2 -4
- data/features/{html_formatter.feature → docs/formatters/html_formatter.feature} +10 -14
- data/features/docs/formatters/json_formatter.feature +760 -0
- data/features/docs/formatters/junit_formatter.feature +316 -0
- data/features/docs/formatters/pretty_formatter.feature +73 -0
- data/features/{progress_formatter.feature → docs/formatters/progress_formatter.feature} +1 -1
- data/features/docs/formatters/rerun_formatter.feature +136 -0
- data/features/docs/formatters/usage_formatter.feature +102 -0
- data/features/docs/getting_started.feature +27 -0
- data/features/{background.feature → docs/gherkin/background.feature} +149 -91
- data/features/{doc_strings.feature → docs/gherkin/doc_strings.feature} +1 -0
- data/features/docs/gherkin/expand_option_for_outlines.feature +46 -0
- data/features/docs/gherkin/language_from_header.feature +32 -0
- data/features/docs/gherkin/outlines.feature +158 -0
- data/features/docs/gherkin/unicode_table.feature +32 -0
- data/features/docs/gherkin/using_descriptions.feature +88 -0
- data/features/docs/gherkin/using_star_notation.feature +37 -0
- data/{legacy_features → features/docs}/post_configuration_hook.feature +17 -18
- data/{legacy_features → features/docs}/profiles.feature +30 -36
- data/{legacy_features → features/docs}/rake_task.feature +30 -41
- data/features/{raketask.feature → docs/raketask.feature} +6 -13
- data/{legacy_features/wire_protocol_erb.feature → features/docs/wire_protocol/erb_configuration.feature} +7 -8
- data/features/docs/wire_protocol/handle_unexpected_response.feature +30 -0
- data/features/docs/wire_protocol/invoke_message.feature +216 -0
- data/features/docs/wire_protocol/readme.md +26 -0
- data/features/docs/wire_protocol/snippets_message.feature +51 -0
- data/features/docs/wire_protocol/step_matches_message.feature +81 -0
- data/{legacy_features/wire_protocol_table_diffing.feature → features/docs/wire_protocol/table_diffing.feature} +19 -12
- data/{legacy_features/wire_protocol_tags.feature → features/docs/wire_protocol/tags.feature} +7 -7
- data/{legacy_features/wire_protocol_timeouts.feature → features/docs/wire_protocol/timeouts.feature} +7 -6
- data/{legacy_features → features/docs}/work_in_progress.feature +52 -54
- data/features/docs/writing_support_code/after_hooks.feature +80 -0
- data/{legacy_features → features/docs/writing_support_code}/around_hooks.feature +56 -28
- data/features/docs/writing_support_code/before_hook.feature +65 -0
- data/features/docs/writing_support_code/hook_order.feature +61 -0
- data/features/{load_path.feature → docs/writing_support_code/load_path.feature} +3 -0
- data/features/docs/writing_support_code/state.feature +32 -0
- data/features/docs/writing_support_code/tagged_hooks.feature +95 -0
- data/features/lib/step_definitions/aruba_steps.rb +22 -0
- data/features/lib/step_definitions/cucumber_steps.rb +50 -0
- data/features/{step_definitions → lib/step_definitions}/iso-8859-1_steps.rb +3 -15
- data/features/lib/step_definitions/json_steps.rb +7 -0
- data/features/lib/step_definitions/junit_steps.rb +13 -0
- data/features/lib/step_definitions/language_steps.rb +4 -5
- data/features/lib/step_definitions/profile_steps.rb +15 -0
- data/features/lib/step_definitions/ruby_steps.rb +3 -0
- data/features/lib/step_definitions/wire_steps.rb +58 -0
- data/features/lib/support/env.rb +21 -0
- data/{legacy_features → features/lib}/support/fake_wire_server.rb +10 -7
- data/features/{support → lib/support}/feature_factory.rb +1 -1
- data/features/lib/support/normalise_output.rb +33 -0
- data/gem_tasks/cov.rake +5 -0
- data/gem_tasks/cucumber.rake +3 -8
- data/gem_tasks/rspec.rake +0 -2
- data/lib/cucumber/ast.rb +8 -25
- data/lib/cucumber/cli/configuration.rb +33 -37
- data/lib/cucumber/cli/main.rb +14 -27
- data/lib/cucumber/cli/options.rb +22 -60
- data/lib/cucumber/cli/profile_loader.rb +1 -1
- data/lib/cucumber/configuration.rb +4 -0
- data/lib/cucumber/constantize.rb +7 -6
- data/lib/cucumber/core_ext/instance_exec.rb +7 -38
- data/lib/cucumber/core_ext/proc.rb +1 -1
- data/lib/cucumber/encoding.rb +5 -0
- data/lib/cucumber/errors.rb +21 -10
- data/lib/cucumber/file_specs.rb +37 -0
- data/lib/cucumber/filters/activate_steps.rb +33 -0
- data/lib/cucumber/filters/apply_after_hooks.rb +9 -0
- data/lib/cucumber/filters/apply_after_step_hooks.rb +12 -0
- data/lib/cucumber/filters/apply_around_hooks.rb +12 -0
- data/lib/cucumber/filters/apply_before_hooks.rb +9 -0
- data/lib/cucumber/filters/gated_receiver.rb +25 -0
- data/lib/cucumber/filters/prepare_world.rb +45 -0
- data/lib/cucumber/filters/quit.rb +28 -0
- data/lib/cucumber/filters/randomizer.rb +40 -0
- data/lib/cucumber/filters/tag_limits/test_case_index.rb +31 -0
- data/lib/cucumber/filters/tag_limits/verifier.rb +59 -0
- data/lib/cucumber/filters/tag_limits.rb +45 -0
- data/lib/cucumber/filters.rb +9 -0
- data/lib/cucumber/formatter/ansicolor.rb +0 -8
- data/lib/cucumber/formatter/console.rb +66 -36
- data/lib/cucumber/formatter/debug.rb +10 -8
- data/lib/cucumber/formatter/fanout.rb +27 -0
- data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +122 -12
- data/lib/cucumber/formatter/html.rb +67 -18
- data/lib/cucumber/formatter/ignore_missing_messages.rb +20 -0
- data/lib/cucumber/formatter/interceptor.rb +17 -3
- data/lib/cucumber/formatter/json.rb +1 -1
- data/lib/cucumber/formatter/junit.rb +105 -5
- data/lib/cucumber/formatter/legacy_api/adapter.rb +1060 -0
- data/lib/cucumber/formatter/legacy_api/ast.rb +376 -0
- data/lib/cucumber/formatter/legacy_api/results.rb +51 -0
- data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +30 -0
- data/lib/cucumber/formatter/pretty.rb +16 -8
- data/lib/cucumber/formatter/progress.rb +10 -0
- data/lib/cucumber/formatter/rerun.rb +14 -71
- data/lib/cucumber/formatter/unicode.rb +8 -21
- data/lib/cucumber/formatter/usage.rb +7 -1
- data/lib/cucumber/hooks.rb +97 -0
- data/lib/cucumber/language_support/language_methods.rb +0 -54
- data/lib/cucumber/{ast/table.rb → multiline_argument/data_table.rb} +77 -84
- data/lib/cucumber/multiline_argument/doc_string.rb +10 -0
- data/lib/cucumber/multiline_argument.rb +74 -0
- data/lib/cucumber/platform.rb +21 -20
- data/lib/cucumber/project_initializer.rb +43 -0
- data/lib/cucumber/rake/task.rb +3 -54
- data/lib/cucumber/rb_support/rb_hook.rb +2 -2
- data/lib/cucumber/rb_support/rb_language.rb +4 -34
- data/lib/cucumber/rb_support/rb_step_definition.rb +11 -2
- data/lib/cucumber/rb_support/rb_transform.rb +3 -1
- data/lib/cucumber/rb_support/rb_world.rb +13 -20
- data/lib/cucumber/rb_support/snippet.rb +61 -20
- data/lib/cucumber/rspec/doubles.rb +9 -6
- data/lib/cucumber/running_test_case.rb +115 -0
- data/lib/cucumber/runtime/after_hooks.rb +24 -0
- data/lib/cucumber/runtime/before_hooks.rb +23 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +14 -10
- data/lib/cucumber/runtime/step_hooks.rb +22 -0
- data/lib/cucumber/runtime/support_code.rb +78 -21
- data/lib/cucumber/runtime/user_interface.rb +4 -0
- data/lib/cucumber/runtime.rb +153 -98
- data/lib/cucumber/step_match.rb +27 -3
- data/lib/cucumber/term/ansicolor.rb +1 -9
- data/lib/cucumber/wire_support/wire_language.rb +23 -9
- data/lib/cucumber/wire_support/wire_packet.rb +1 -1
- data/lib/cucumber/wire_support/wire_protocol/requests.rb +13 -5
- data/lib/cucumber/wire_support/wire_step_definition.rb +1 -8
- data/lib/cucumber.rb +8 -6
- data/spec/cucumber/cli/configuration_spec.rb +165 -134
- data/spec/cucumber/cli/main_spec.rb +36 -99
- data/spec/cucumber/cli/options_spec.rb +238 -272
- data/spec/cucumber/cli/profile_loader_spec.rb +18 -7
- data/spec/cucumber/configuration_spec.rb +3 -3
- data/spec/cucumber/constantize_spec.rb +2 -1
- data/spec/cucumber/core_ext/instance_exec_spec.rb +4 -0
- data/spec/cucumber/core_ext/proc_spec.rb +32 -43
- data/spec/cucumber/file_specs_spec.rb +60 -0
- data/spec/cucumber/filters/activate_steps_spec.rb +57 -0
- data/spec/cucumber/filters/gated_receiver_spec.rb +47 -0
- data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +38 -0
- data/spec/cucumber/filters/tag_limits/verifier_spec.rb +57 -0
- data/spec/cucumber/filters/tag_limits_spec.rb +59 -0
- data/spec/cucumber/formatter/ansicolor_spec.rb +11 -10
- data/spec/cucumber/formatter/debug_spec.rb +64 -0
- data/spec/cucumber/formatter/duration_spec.rb +6 -6
- data/spec/cucumber/formatter/html_spec.rb +233 -39
- data/spec/cucumber/formatter/interceptor_spec.rb +38 -31
- data/spec/cucumber/formatter/junit_spec.rb +213 -151
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +2090 -0
- data/spec/cucumber/formatter/pretty_spec.rb +481 -49
- data/spec/cucumber/formatter/progress_spec.rb +63 -16
- data/spec/cucumber/formatter/rerun_spec.rb +107 -0
- data/spec/cucumber/formatter/spec_helper.rb +32 -17
- data/spec/cucumber/hooks_spec.rb +30 -0
- data/spec/cucumber/{ast/table_spec.rb → multiline_argument/data_table_spec.rb} +128 -208
- data/spec/cucumber/project_initializer_spec.rb +87 -0
- data/spec/cucumber/rake/forked_spec.rb +13 -22
- data/spec/cucumber/rb_support/rb_language_spec.rb +78 -69
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +90 -44
- data/spec/cucumber/rb_support/rb_transform_spec.rb +24 -3
- data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +6 -4
- data/spec/cucumber/rb_support/snippet_spec.rb +47 -38
- data/spec/cucumber/running_test_case_spec.rb +83 -0
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +18 -13
- data/spec/cucumber/runtime/support_code_spec.rb +29 -29
- data/spec/cucumber/runtime_spec.rb +35 -34
- data/spec/cucumber/step_match_spec.rb +30 -20
- data/spec/cucumber/wire_support/configuration_spec.rb +8 -5
- data/spec/cucumber/wire_support/connection_spec.rb +12 -8
- data/spec/cucumber/wire_support/wire_exception_spec.rb +14 -8
- data/spec/cucumber/wire_support/wire_language_spec.rb +8 -9
- data/spec/cucumber/wire_support/wire_packet_spec.rb +17 -13
- data/spec/cucumber/world/pending_spec.rb +36 -36
- data/spec/simplecov_setup.rb +18 -0
- data/spec/spec_helper.rb +6 -13
- metadata +348 -350
- data/.gitattributes +0 -1
- data/.ruby-version +0 -1
- data/examples/python/README.textile +0 -8
- data/examples/python/Rakefile +0 -4
- data/examples/python/features/fibonacci.feature +0 -19
- data/examples/python/features/step_definitions/fib_steps.py +0 -11
- data/examples/python/lib/fib.py +0 -7
- data/examples/ramaze/README.textile +0 -7
- data/examples/ramaze/app.rb +0 -21
- data/examples/ramaze/features/add.feature +0 -11
- data/examples/ramaze/features/step_definitions/add_steps.rb +0 -15
- data/examples/ramaze/features/support/env.rb +0 -32
- data/examples/ramaze/layout/default.html.erb +0 -8
- data/examples/ramaze/view/index.html.erb +0 -5
- data/examples/ruby2python/README.textile +0 -8
- data/examples/ruby2python/Rakefile +0 -4
- data/examples/ruby2python/features/fibonacci.feature +0 -19
- data/examples/ruby2python/features/step_definitions/fib_steps.rb +0 -7
- data/examples/ruby2python/features/support/env.rb +0 -21
- data/examples/ruby2python/lib/fib.py +0 -7
- data/examples/v8/Rakefile +0 -6
- data/examples/v8/features/fibonacci.feature +0 -43
- data/examples/v8/features/step_definitions/fib_steps.js +0 -49
- data/examples/v8/features/support/env.js +0 -14
- data/examples/v8/lib/fibonacci.js +0 -19
- data/features/.cucumber/stepdefs.json +0 -627
- data/features/assertions.feature +0 -73
- data/features/autoformat_profile_output.feature +0 -23
- data/features/before_hook.feature +0 -43
- data/features/bootstrap.feature +0 -27
- data/features/custom_formatter.feature +0 -41
- data/features/drb_server_integration.feature +0 -63
- data/features/execute_with_tag_filter.feature +0 -63
- data/features/formatter_callbacks.feature +0 -189
- data/features/json_formatter.feature +0 -338
- data/features/parsing.feature +0 -18
- data/features/pretty_formatter.feature +0 -31
- data/features/rerun_formatter.feature +0 -35
- data/features/run_specific_scenarios.feature +0 -47
- data/features/stats_formatters.feature +0 -73
- data/features/step_definitions/cucumber-features/cucumber_ruby_mappings.rb +0 -197
- data/features/step_definitions/cucumber_steps.rb +0 -55
- data/features/step_definitions/drb_steps.rb +0 -3
- data/features/support/env.rb +0 -57
- data/features/tagged_hooks.feature +0 -59
- data/fixtures/json/features/background.feature +0 -7
- data/fixtures/json/features/embed.feature +0 -4
- data/fixtures/json/features/one_passing_one_failing.feature +0 -11
- data/fixtures/json/features/step_definitions/steps.rb +0 -32
- data/fixtures/json/features/tables.feature +0 -13
- data/fixtures/junit/features/one_passing_one_failing.feature +0 -8
- data/fixtures/junit/features/pending.feature +0 -7
- data/fixtures/junit/features/scenario_outline.feature +0 -9
- data/fixtures/junit/features/some_subdirectory/one_passing_one_failing.feature +0 -8
- data/fixtures/junit/features/step_definitions/steps.rb +0 -11
- data/fixtures/self_test/README.textile +0 -6
- data/fixtures/self_test/Rakefile +0 -6
- data/fixtures/self_test/features/call_undefined_step_from_step_def.feature +0 -7
- data/fixtures/self_test/features/failing_expectation.feature +0 -4
- data/fixtures/self_test/features/lots_of_undefined.feature +0 -8
- data/fixtures/self_test/features/multiline_name.feature +0 -27
- data/fixtures/self_test/features/outline_sample.feature +0 -15
- data/fixtures/self_test/features/sample.feature +0 -21
- data/fixtures/self_test/features/search_sample.feature +0 -32
- data/fixtures/self_test/features/step_definitions/sample_steps.rb +0 -84
- data/fixtures/self_test/features/support/bubble_256x256.png +0 -0
- data/fixtures/self_test/features/support/env.rb +0 -26
- data/fixtures/self_test/features/tags_sample.feature +0 -17
- data/fixtures/self_test/features/tons_of_cukes.feature +0 -52
- data/fixtures/self_test/features/undefined_multiline_args.feature +0 -12
- data/fixtures/self_test/list-of-features.txt +0 -1
- data/fixtures/steps_library/features/step_definitions/steps_lib1.rb +0 -8
- data/fixtures/steps_library/features/step_definitions/steps_lib2.rb +0 -8
- data/fixtures/tickets/Rakefile +0 -20
- data/fixtures/tickets/features/172.feature +0 -28
- data/fixtures/tickets/features/177/1.feature +0 -28
- data/fixtures/tickets/features/177/2.feature +0 -20
- data/fixtures/tickets/features/177/3.feature +0 -18
- data/fixtures/tickets/features/180.feature +0 -7
- data/fixtures/tickets/features/229/tagged_hooks.feature +0 -8
- data/fixtures/tickets/features/229/tagged_hooks.rb +0 -14
- data/fixtures/tickets/features/236.feature +0 -13
- data/fixtures/tickets/features/241.feature +0 -12
- data/fixtures/tickets/features/246.feature +0 -4
- data/fixtures/tickets/features/248.feature +0 -11
- data/fixtures/tickets/features/270/back.feature +0 -14
- data/fixtures/tickets/features/270/back.steps.rb +0 -14
- data/fixtures/tickets/features/272/hooks.feature +0 -26
- data/fixtures/tickets/features/272/hooks_steps.rb +0 -53
- data/fixtures/tickets/features/279/py_string_indent.feature +0 -25
- data/fixtures/tickets/features/279/py_string_indent.steps.rb +0 -12
- data/fixtures/tickets/features/279/wrong.feature_ +0 -11
- data/fixtures/tickets/features/301/filter_background_tagged_hooks.feature +0 -6
- data/fixtures/tickets/features/301/filter_background_tagged_hooks_steps.rb +0 -12
- data/fixtures/tickets/features/306/only_background.feature +0 -4
- data/fixtures/tickets/features/around_timeout.feature +0 -6
- data/fixtures/tickets/features/gherkin_67.feature +0 -12
- data/fixtures/tickets/features/gherkin_68.feature +0 -4
- data/fixtures/tickets/features/half_manual.feature +0 -11
- data/fixtures/tickets/features/lib/eatting_machine.rb +0 -18
- data/fixtures/tickets/features/lib/pantry.rb +0 -20
- data/fixtures/tickets/features/scenario_outline.feature +0 -95
- data/fixtures/tickets/features/step_definitons/246_steps.rb +0 -3
- data/fixtures/tickets/features/step_definitons/248_steps.rb +0 -15
- data/fixtures/tickets/features/step_definitons/around_timeout_steps.rb +0 -9
- data/fixtures/tickets/features/step_definitons/half_manual_steps.rb +0 -11
- data/fixtures/tickets/features/step_definitons/scenario_outline_steps.rb +0 -42
- data/fixtures/tickets/features/step_definitons/tickets_steps.rb +0 -88
- data/fixtures/tickets/features/table_diffing.feature +0 -13
- data/fixtures/tickets/features/tickets.feature +0 -28
- data/fixtures/tickets/features.html +0 -138
- data/gem_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
- data/gem_tasks/yard/default/layout/html/footer.erb +0 -5
- data/gem_tasks/yard/default/layout/html/index.erb +0 -1
- data/gem_tasks/yard/default/layout/html/layout.erb +0 -25
- data/gem_tasks/yard/default/layout/html/logo.erb +0 -1
- data/gem_tasks/yard/default/layout/html/setup.rb +0 -4
- data/gem_tasks/yard.rake +0 -40
- data/legacy_features/README.md +0 -14
- data/legacy_features/announce.feature +0 -152
- data/legacy_features/bug_371.feature +0 -32
- data/legacy_features/bug_464.feature +0 -16
- data/legacy_features/bug_475.feature +0 -42
- data/legacy_features/bug_585_tab_indentation.feature +0 -22
- data/legacy_features/bug_600.feature +0 -73
- data/legacy_features/cucumber_cli.feature +0 -584
- data/legacy_features/cucumber_cli_outlines.feature +0 -117
- data/legacy_features/default_snippets.feature +0 -43
- data/legacy_features/diffing.feature +0 -25
- data/legacy_features/drb_server_integration.feature +0 -174
- data/legacy_features/exclude_files.feature +0 -20
- data/legacy_features/expand.feature +0 -60
- data/legacy_features/junit_formatter.feature +0 -214
- data/legacy_features/language_from_header.feature +0 -30
- data/legacy_features/listener_debugger_formatter.feature +0 -42
- data/legacy_features/multiline_names.feature +0 -44
- data/legacy_features/report_called_undefined_steps.feature +0 -35
- data/legacy_features/rerun_formatter.feature +0 -52
- data/legacy_features/simplest.feature +0 -11
- data/legacy_features/snippet.feature +0 -23
- data/legacy_features/snippets_when_using_star_keyword.feature +0 -38
- data/legacy_features/step_definitions/cucumber_steps.rb +0 -179
- data/legacy_features/step_definitions/extra_steps.rb +0 -2
- data/legacy_features/step_definitions/simplest_steps.rb +0 -3
- data/legacy_features/step_definitions/wire_steps.rb +0 -34
- data/legacy_features/support/env.rb +0 -161
- data/legacy_features/support/env.rb.simplest +0 -7
- data/legacy_features/table_mapping.feature +0 -34
- data/legacy_features/transform.feature +0 -245
- data/legacy_features/unicode_table.feature +0 -35
- data/legacy_features/wire_protocol.feature +0 -332
- data/lib/README.rdoc +0 -12
- data/lib/cucumber/ast/background.rb +0 -116
- data/lib/cucumber/ast/comment.rb +0 -31
- data/lib/cucumber/ast/doc_string.rb +0 -61
- data/lib/cucumber/ast/empty_background.rb +0 -33
- data/lib/cucumber/ast/examples.rb +0 -49
- data/lib/cucumber/ast/feature.rb +0 -99
- data/lib/cucumber/ast/features.rb +0 -38
- data/lib/cucumber/ast/has_steps.rb +0 -74
- data/lib/cucumber/ast/location.rb +0 -41
- data/lib/cucumber/ast/multiline_argument.rb +0 -30
- data/lib/cucumber/ast/names.rb +0 -13
- data/lib/cucumber/ast/outline_table.rb +0 -194
- data/lib/cucumber/ast/scenario.rb +0 -103
- data/lib/cucumber/ast/scenario_outline.rb +0 -146
- data/lib/cucumber/ast/step.rb +0 -122
- data/lib/cucumber/ast/step_collection.rb +0 -92
- data/lib/cucumber/ast/step_invocation.rb +0 -196
- data/lib/cucumber/ast/tags.rb +0 -28
- data/lib/cucumber/ast/tree_walker.rb +0 -191
- data/lib/cucumber/ast/visitor.rb +0 -11
- data/lib/cucumber/broadcaster.rb +0 -13
- data/lib/cucumber/cli/drb_client.rb +0 -43
- data/lib/cucumber/feature_file.rb +0 -94
- data/lib/cucumber/formatter/ordered_xml_markup.rb +0 -24
- data/lib/cucumber/js_support/js_dsl.js +0 -57
- data/lib/cucumber/js_support/js_language.rb +0 -185
- data/lib/cucumber/js_support/js_snippets.rb +0 -27
- data/lib/cucumber/parser/gherkin_builder.rb +0 -284
- data/lib/cucumber/parser.rb +0 -2
- data/lib/cucumber/py_support/py_dsl.py +0 -10
- data/lib/cucumber/py_support/py_language.py +0 -10
- data/lib/cucumber/py_support/py_language.rb +0 -80
- data/lib/cucumber/runtime/features_loader.rb +0 -62
- data/lib/cucumber/runtime/results.rb +0 -64
- data/lib/cucumber/step_mother.rb +0 -10
- data/spec/cucumber/ast/background_spec.rb +0 -122
- data/spec/cucumber/ast/doc_string_spec.rb +0 -40
- data/spec/cucumber/ast/feature_factory.rb +0 -72
- data/spec/cucumber/ast/feature_spec.rb +0 -63
- data/spec/cucumber/ast/features_spec.rb +0 -51
- data/spec/cucumber/ast/outline_table_spec.rb +0 -21
- data/spec/cucumber/ast/scenario_outline_spec.rb +0 -74
- data/spec/cucumber/ast/step_spec.rb +0 -68
- data/spec/cucumber/ast/tree_walker_spec.rb +0 -19
- data/spec/cucumber/broadcaster_spec.rb +0 -15
- data/spec/cucumber/cli/drb_client_spec.rb +0 -76
- data/spec/cucumber/rake/rcov_spec.rb +0 -71
- data/spec/cucumber/runtime/results_spec.rb +0 -81
- data/spec/cucumber/wire_support/wire_step_definition_spec.rb +0 -20
- /data/examples/i18n/ar/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/bg/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/ca/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/cs/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/da/features/{step_definitons → step_definitions}/lommeregner_steps.rb +0 -0
- /data/examples/i18n/de/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/en/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/eo/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/es/features/{step_definitons → step_definitions}/calculador_steps.rb +0 -0
- /data/examples/i18n/fi/features/{step_definitons → step_definitions}/laskin_steps.rb +0 -0
- /data/examples/i18n/he/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/hi/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/hu/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/id/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/it/features/{step_definitons → step_definitions}/calcolatrice_steps.rb +0 -0
- /data/examples/i18n/ja/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/ko/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/lt/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/lv/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/no/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
- /data/examples/i18n/pl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/ro/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/ru/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/sk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/sr-Cyrl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/sr-Latn/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/sv/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
- /data/examples/i18n/tr/features/{step_definitons → step_definitions}/hesap_makinesi_adimlari.rb +0 -0
- /data/examples/i18n/uk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/uz/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/examples/i18n/zh-TW/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
- /data/features/{nested_steps_with_second_arg.feature → docs/defining_steps/nested_steps_with_second_arg.feature} +0 -0
- /data/features/{iso-8859-1.feature → docs/iso-8859-1.feature} +0 -0
|
@@ -13,7 +13,7 @@ module Cucumber
|
|
|
13
13
|
before(:each) do
|
|
14
14
|
Cucumber::Term::ANSIColor.coloring = false
|
|
15
15
|
@out = StringIO.new
|
|
16
|
-
@formatter = Pretty.new(
|
|
16
|
+
@formatter = Pretty.new(runtime, @out, {})
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
describe "given a single feature" do
|
|
@@ -21,21 +21,19 @@ module Cucumber
|
|
|
21
21
|
run_defined_feature
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
describe "
|
|
24
|
+
describe "with a scenario with no steps" do
|
|
25
25
|
define_feature <<-FEATURE
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
I must eat bananas
|
|
26
|
+
Feature: Banana party
|
|
27
|
+
|
|
28
|
+
Scenario: Monkey eats banana
|
|
30
29
|
FEATURE
|
|
31
30
|
|
|
32
|
-
it "
|
|
33
|
-
@out.string.
|
|
34
|
-
@out.string.should include "I must eat bananas"
|
|
31
|
+
it "outputs the scenario name" do
|
|
32
|
+
expect(@out.string).to include "Scenario: Monkey eats banana"
|
|
35
33
|
end
|
|
36
|
-
|
|
37
34
|
end
|
|
38
35
|
|
|
36
|
+
|
|
39
37
|
describe "with a scenario" do
|
|
40
38
|
define_feature <<-FEATURE
|
|
41
39
|
Feature: Banana party
|
|
@@ -45,10 +43,35 @@ module Cucumber
|
|
|
45
43
|
FEATURE
|
|
46
44
|
|
|
47
45
|
it "outputs the scenario name" do
|
|
48
|
-
@out.string.
|
|
46
|
+
expect(@out.string).to include "Scenario: Monkey eats banana"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "outputs the step" do
|
|
50
|
+
expect(@out.string).to include "Given there are bananas"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "with a background" do
|
|
55
|
+
define_feature <<-FEATURE
|
|
56
|
+
Feature: Banana party
|
|
57
|
+
|
|
58
|
+
Background:
|
|
59
|
+
Given a tree
|
|
60
|
+
|
|
61
|
+
Scenario: Monkey eats banana
|
|
62
|
+
Given there are bananas
|
|
63
|
+
FEATURE
|
|
64
|
+
|
|
65
|
+
it "outputs the gherkin" do
|
|
66
|
+
expect(@out.string).to include(self.class.feature_content)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "outputs the scenario name" do
|
|
70
|
+
expect(@out.string).to include "Scenario: Monkey eats banana"
|
|
49
71
|
end
|
|
72
|
+
|
|
50
73
|
it "outputs the step" do
|
|
51
|
-
@out.string.
|
|
74
|
+
expect(@out.string).to include "Given there are bananas"
|
|
52
75
|
end
|
|
53
76
|
end
|
|
54
77
|
|
|
@@ -81,16 +104,73 @@ module Cucumber
|
|
|
81
104
|
| carrots |
|
|
82
105
|
OUTPUT
|
|
83
106
|
lines.split("\n").each do |line|
|
|
84
|
-
@out.string.
|
|
107
|
+
expect(@out.string).to include line.strip
|
|
85
108
|
end
|
|
86
109
|
end
|
|
110
|
+
|
|
87
111
|
it "has 4 undefined scenarios" do
|
|
88
|
-
@out.string.
|
|
112
|
+
expect(@out.string).to include "4 scenarios (4 undefined)"
|
|
89
113
|
end
|
|
114
|
+
|
|
90
115
|
it "has 4 undefined steps" do
|
|
91
|
-
@out.string.
|
|
116
|
+
expect(@out.string).to include "4 steps (4 undefined)"
|
|
92
117
|
end
|
|
93
118
|
|
|
119
|
+
context 'when the examples table header is wider than the rows' do
|
|
120
|
+
define_feature <<-FEATURE
|
|
121
|
+
Feature: Monkey Business
|
|
122
|
+
|
|
123
|
+
Scenario Outline: Types of monkey
|
|
124
|
+
Given there are <Types of monkey>
|
|
125
|
+
|
|
126
|
+
Examples:
|
|
127
|
+
| Types of monkey |
|
|
128
|
+
| Hominidae |
|
|
129
|
+
FEATURE
|
|
130
|
+
|
|
131
|
+
it "outputs the scenario outline" do
|
|
132
|
+
lines = <<-OUTPUT
|
|
133
|
+
Examples:
|
|
134
|
+
| Types of monkey |
|
|
135
|
+
| Hominidae |
|
|
136
|
+
OUTPUT
|
|
137
|
+
lines.split("\n").each do |line|
|
|
138
|
+
expect(@out.string).to include line.strip
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# To ensure https://rspec.lighthouseapp.com/projects/16211/tickets/475 remains fixed.
|
|
145
|
+
describe "with a scenario outline with a pystring" do
|
|
146
|
+
define_feature <<-FEATURE
|
|
147
|
+
Feature:
|
|
148
|
+
Scenario Outline: Monkey eats a balanced diet
|
|
149
|
+
Given a multiline string:
|
|
150
|
+
"""
|
|
151
|
+
Monkeys eat <things>
|
|
152
|
+
"""
|
|
153
|
+
|
|
154
|
+
Examples:
|
|
155
|
+
| things |
|
|
156
|
+
| apples |
|
|
157
|
+
FEATURE
|
|
158
|
+
|
|
159
|
+
it "outputs the scenario outline" do
|
|
160
|
+
lines = <<-OUTPUT
|
|
161
|
+
Given a multiline string:
|
|
162
|
+
"""
|
|
163
|
+
Monkeys eat <things>
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
Examples:
|
|
167
|
+
| things |
|
|
168
|
+
| apples |
|
|
169
|
+
OUTPUT
|
|
170
|
+
lines.split("\n").each do |line|
|
|
171
|
+
expect(@out.string).to include line.strip
|
|
172
|
+
end
|
|
173
|
+
end
|
|
94
174
|
end
|
|
95
175
|
|
|
96
176
|
describe "with a step with a py string" do
|
|
@@ -105,7 +185,7 @@ module Cucumber
|
|
|
105
185
|
FEATURE
|
|
106
186
|
|
|
107
187
|
it "displays the pystring nested" do
|
|
108
|
-
@out.string.
|
|
188
|
+
expect(@out.string).to include <<OUTPUT
|
|
109
189
|
"""
|
|
110
190
|
foo
|
|
111
191
|
"""
|
|
@@ -125,7 +205,7 @@ OUTPUT
|
|
|
125
205
|
FEATURE
|
|
126
206
|
|
|
127
207
|
it "displays the multiline string" do
|
|
128
|
-
@out.string.
|
|
208
|
+
expect(@out.string).to include <<OUTPUT
|
|
129
209
|
Given there are monkeys:
|
|
130
210
|
| name |
|
|
131
211
|
| foo |
|
|
@@ -149,14 +229,15 @@ OUTPUT
|
|
|
149
229
|
FEATURE
|
|
150
230
|
|
|
151
231
|
it "displays the table for the background" do
|
|
152
|
-
@out.string.
|
|
232
|
+
expect(@out.string).to include <<OUTPUT
|
|
153
233
|
Given table:
|
|
154
234
|
| a | b |
|
|
155
235
|
| c | d |
|
|
156
236
|
OUTPUT
|
|
157
237
|
end
|
|
238
|
+
|
|
158
239
|
it "displays the table for the scenario" do
|
|
159
|
-
@out.string.
|
|
240
|
+
expect(@out.string).to include <<OUTPUT
|
|
160
241
|
Given another table:
|
|
161
242
|
| e | f |
|
|
162
243
|
| g | h |
|
|
@@ -181,19 +262,110 @@ OUTPUT
|
|
|
181
262
|
FEATURE
|
|
182
263
|
|
|
183
264
|
it "displays the background py string" do
|
|
184
|
-
@out.string.
|
|
265
|
+
expect(@out.string).to include <<OUTPUT
|
|
185
266
|
Given stuff:
|
|
186
267
|
"""
|
|
187
268
|
foo
|
|
188
269
|
"""
|
|
189
270
|
OUTPUT
|
|
190
271
|
end
|
|
272
|
+
|
|
191
273
|
it "displays the scenario py string" do
|
|
192
|
-
@out.string.
|
|
274
|
+
expect(@out.string).to include <<OUTPUT
|
|
193
275
|
Given more stuff:
|
|
194
276
|
"""
|
|
195
277
|
bar
|
|
196
278
|
"""
|
|
279
|
+
OUTPUT
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
describe "with output from hooks" do
|
|
284
|
+
define_feature <<-FEATURE
|
|
285
|
+
Feature:
|
|
286
|
+
Scenario:
|
|
287
|
+
Given this step passes
|
|
288
|
+
Scenario Outline:
|
|
289
|
+
Given this step <status>
|
|
290
|
+
Examples:
|
|
291
|
+
| status |
|
|
292
|
+
| passes |
|
|
293
|
+
FEATURE
|
|
294
|
+
|
|
295
|
+
define_steps do
|
|
296
|
+
Before do
|
|
297
|
+
puts "Before hook"
|
|
298
|
+
end
|
|
299
|
+
AfterStep do
|
|
300
|
+
puts "AfterStep hook"
|
|
301
|
+
end
|
|
302
|
+
After do
|
|
303
|
+
puts "After hook"
|
|
304
|
+
end
|
|
305
|
+
Given(/^this step passes$/) {}
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it "displays hook output appropriately " do
|
|
309
|
+
expect( @out.string ).to include <<OUTPUT
|
|
310
|
+
Feature:
|
|
311
|
+
|
|
312
|
+
Scenario:
|
|
313
|
+
Before hook
|
|
314
|
+
Given this step passes
|
|
315
|
+
AfterStep hook
|
|
316
|
+
After hook
|
|
317
|
+
|
|
318
|
+
Scenario Outline:
|
|
319
|
+
Given this step <status>
|
|
320
|
+
|
|
321
|
+
Examples:
|
|
322
|
+
| status |
|
|
323
|
+
| passes | Before hook, AfterStep hook, After hook
|
|
324
|
+
|
|
325
|
+
2 scenarios (2 passed)
|
|
326
|
+
2 steps (2 passed)
|
|
327
|
+
OUTPUT
|
|
328
|
+
end
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
describe "with background and output from hooks" do
|
|
332
|
+
define_feature <<-FEATURE
|
|
333
|
+
Feature:
|
|
334
|
+
Background:
|
|
335
|
+
Given this step passes
|
|
336
|
+
Scenario:
|
|
337
|
+
Given this step passes
|
|
338
|
+
FEATURE
|
|
339
|
+
|
|
340
|
+
define_steps do
|
|
341
|
+
Before do
|
|
342
|
+
puts "Before hook"
|
|
343
|
+
end
|
|
344
|
+
AfterStep do
|
|
345
|
+
puts "AfterStep hook"
|
|
346
|
+
end
|
|
347
|
+
After do
|
|
348
|
+
puts "After hook"
|
|
349
|
+
end
|
|
350
|
+
Given(/^this step passes$/) {}
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
it "displays hook output appropriately " do
|
|
354
|
+
expect( @out.string ).to include <<OUTPUT
|
|
355
|
+
Feature:
|
|
356
|
+
|
|
357
|
+
Background:
|
|
358
|
+
Before hook
|
|
359
|
+
Given this step passes
|
|
360
|
+
AfterStep hook
|
|
361
|
+
|
|
362
|
+
Scenario:
|
|
363
|
+
Given this step passes
|
|
364
|
+
AfterStep hook
|
|
365
|
+
After hook
|
|
366
|
+
|
|
367
|
+
1 scenario (1 passed)
|
|
368
|
+
2 steps (2 passed)
|
|
197
369
|
OUTPUT
|
|
198
370
|
end
|
|
199
371
|
end
|
|
@@ -204,7 +376,7 @@ OUTPUT
|
|
|
204
376
|
before(:each) do
|
|
205
377
|
Cucumber::Term::ANSIColor.coloring = false
|
|
206
378
|
@out = StringIO.new
|
|
207
|
-
@formatter = Pretty.new(
|
|
379
|
+
@formatter = Pretty.new(runtime, @out, {:no_multiline => true})
|
|
208
380
|
end
|
|
209
381
|
|
|
210
382
|
describe "given a single feature" do
|
|
@@ -212,21 +384,6 @@ OUTPUT
|
|
|
212
384
|
run_defined_feature
|
|
213
385
|
end
|
|
214
386
|
|
|
215
|
-
describe "basic feature" do
|
|
216
|
-
define_feature <<-FEATURE
|
|
217
|
-
Feature: Bananas
|
|
218
|
-
In order to find my inner monkey
|
|
219
|
-
As a human
|
|
220
|
-
I must eat bananas
|
|
221
|
-
FEATURE
|
|
222
|
-
|
|
223
|
-
it "prints out the feature description" do
|
|
224
|
-
@out.string.should include "Feature: Bananas"
|
|
225
|
-
@out.string.should include "I must eat bananas"
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
end
|
|
229
|
-
|
|
230
387
|
describe "with a scenario" do
|
|
231
388
|
define_feature <<-FEATURE
|
|
232
389
|
Feature: Banana party
|
|
@@ -236,10 +393,11 @@ OUTPUT
|
|
|
236
393
|
FEATURE
|
|
237
394
|
|
|
238
395
|
it "outputs the scenario name" do
|
|
239
|
-
@out.string.
|
|
396
|
+
expect(@out.string).to include "Scenario: Monkey eats banana"
|
|
240
397
|
end
|
|
398
|
+
|
|
241
399
|
it "outputs the step" do
|
|
242
|
-
@out.string.
|
|
400
|
+
expect(@out.string).to include "Given there are bananas"
|
|
243
401
|
end
|
|
244
402
|
end
|
|
245
403
|
|
|
@@ -272,16 +430,17 @@ OUTPUT
|
|
|
272
430
|
| carrots |
|
|
273
431
|
OUTPUT
|
|
274
432
|
lines.split("\n").each do |line|
|
|
275
|
-
@out.string.
|
|
433
|
+
expect(@out.string).to include line.strip
|
|
276
434
|
end
|
|
277
435
|
end
|
|
436
|
+
|
|
278
437
|
it "has 4 undefined scenarios" do
|
|
279
|
-
@out.string.
|
|
438
|
+
expect(@out.string).to include "4 scenarios (4 undefined)"
|
|
280
439
|
end
|
|
440
|
+
|
|
281
441
|
it "has 4 undefined steps" do
|
|
282
|
-
@out.string.
|
|
442
|
+
expect(@out.string).to include "4 steps (4 undefined)"
|
|
283
443
|
end
|
|
284
|
-
|
|
285
444
|
end
|
|
286
445
|
|
|
287
446
|
describe "with a step with a py string" do
|
|
@@ -296,7 +455,7 @@ OUTPUT
|
|
|
296
455
|
FEATURE
|
|
297
456
|
|
|
298
457
|
it "does not display the pystring" do
|
|
299
|
-
@out.string.
|
|
458
|
+
expect(@out.string).not_to include <<OUTPUT
|
|
300
459
|
"""
|
|
301
460
|
foo
|
|
302
461
|
"""
|
|
@@ -316,7 +475,7 @@ OUTPUT
|
|
|
316
475
|
FEATURE
|
|
317
476
|
|
|
318
477
|
it "does not display the multiline string" do
|
|
319
|
-
@out.string.
|
|
478
|
+
expect(@out.string).not_to include <<OUTPUT
|
|
320
479
|
| name |
|
|
321
480
|
| foo |
|
|
322
481
|
| bar |
|
|
@@ -339,13 +498,13 @@ OUTPUT
|
|
|
339
498
|
FEATURE
|
|
340
499
|
|
|
341
500
|
it "does not display the table for the background" do
|
|
342
|
-
@out.string.
|
|
501
|
+
expect(@out.string).not_to include <<OUTPUT
|
|
343
502
|
| a | b |
|
|
344
503
|
| c | d |
|
|
345
504
|
OUTPUT
|
|
346
505
|
end
|
|
347
506
|
it "does not display the table for the scenario" do
|
|
348
|
-
@out.string.
|
|
507
|
+
expect(@out.string).not_to include <<OUTPUT
|
|
349
508
|
| e | f |
|
|
350
509
|
| g | h |
|
|
351
510
|
OUTPUT
|
|
@@ -369,14 +528,14 @@ OUTPUT
|
|
|
369
528
|
FEATURE
|
|
370
529
|
|
|
371
530
|
it "does not display the background py string" do
|
|
372
|
-
@out.string.
|
|
531
|
+
expect(@out.string).not_to include <<OUTPUT
|
|
373
532
|
"""
|
|
374
533
|
foo
|
|
375
534
|
"""
|
|
376
535
|
OUTPUT
|
|
377
536
|
end
|
|
378
537
|
it "does not display the scenario py string" do
|
|
379
|
-
@out.string.
|
|
538
|
+
expect(@out.string).not_to include <<OUTPUT
|
|
380
539
|
"""
|
|
381
540
|
bar
|
|
382
541
|
"""
|
|
@@ -386,6 +545,279 @@ OUTPUT
|
|
|
386
545
|
end
|
|
387
546
|
end
|
|
388
547
|
|
|
548
|
+
context "In --expand mode" do
|
|
549
|
+
let(:runtime) { Runtime.new({:expand => true})}
|
|
550
|
+
before(:each) do
|
|
551
|
+
Cucumber::Term::ANSIColor.coloring = false
|
|
552
|
+
@out = StringIO.new
|
|
553
|
+
@formatter = Pretty.new(runtime, @out, {})
|
|
554
|
+
end
|
|
555
|
+
|
|
556
|
+
describe "given a single feature" do
|
|
557
|
+
before(:each) do
|
|
558
|
+
run_defined_feature
|
|
559
|
+
end
|
|
560
|
+
|
|
561
|
+
describe "with a scenario outline" do
|
|
562
|
+
define_feature <<-FEATURE
|
|
563
|
+
Feature: Fud Pyramid
|
|
564
|
+
|
|
565
|
+
Scenario Outline: Monkey eats a balanced diet
|
|
566
|
+
Given there are <Things>
|
|
567
|
+
|
|
568
|
+
Examples: Fruit
|
|
569
|
+
| Things |
|
|
570
|
+
| apples |
|
|
571
|
+
| bananas |
|
|
572
|
+
Examples: Vegetables
|
|
573
|
+
| Things |
|
|
574
|
+
| broccoli |
|
|
575
|
+
| carrots |
|
|
576
|
+
FEATURE
|
|
577
|
+
|
|
578
|
+
it "outputs the instantiated scenarios" do
|
|
579
|
+
lines = <<-OUTPUT
|
|
580
|
+
Examples: Fruit
|
|
581
|
+
Scenario: | apples |
|
|
582
|
+
Given there are apples
|
|
583
|
+
Scenario: | bananas |
|
|
584
|
+
Given there are bananas
|
|
585
|
+
Examples: Vegetables
|
|
586
|
+
Scenario: | broccoli |
|
|
587
|
+
Given there are broccoli
|
|
588
|
+
Scenario: | carrots |
|
|
589
|
+
Given there are carrots
|
|
590
|
+
OUTPUT
|
|
591
|
+
lines.split("\n").each do |line|
|
|
592
|
+
expect(@out.string).to include line.strip
|
|
593
|
+
end
|
|
594
|
+
end
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
describe "with a scenario outline in en-lol" do
|
|
598
|
+
define_feature <<-FEATURE
|
|
599
|
+
# language: en-lol
|
|
600
|
+
OH HAI: STUFFING
|
|
601
|
+
|
|
602
|
+
MISHUN SRSLY: CUCUMBR
|
|
603
|
+
I CAN HAZ IN TEH BEGINNIN <BEGINNIN> CUCUMBRZ
|
|
604
|
+
WEN I EAT <EAT> CUCUMBRZ
|
|
605
|
+
DEN I HAS <EAT> CUCUMBERZ IN MAH BELLY
|
|
606
|
+
AN IN TEH END <KTHXBAI> CUCUMBRZ KTHXBAI
|
|
607
|
+
|
|
608
|
+
EXAMPLZ:
|
|
609
|
+
| BEGINNIN | EAT | KTHXBAI |
|
|
610
|
+
| 3 | 2 | 1 |
|
|
611
|
+
FEATURE
|
|
612
|
+
|
|
613
|
+
it "outputs localized text" do
|
|
614
|
+
lines = <<-OUTPUT
|
|
615
|
+
OH HAI: STUFFING
|
|
616
|
+
|
|
617
|
+
MISHUN SRSLY: CUCUMBR
|
|
618
|
+
I CAN HAZ IN TEH BEGINNIN <BEGINNIN> CUCUMBRZ
|
|
619
|
+
WEN I EAT <EAT> CUCUMBRZ
|
|
620
|
+
DEN I HAS <EAT> CUCUMBERZ IN MAH BELLY
|
|
621
|
+
AN IN TEH END <KTHXBAI> CUCUMBRZ KTHXBAI
|
|
622
|
+
EXAMPLZ:
|
|
623
|
+
MISHUN: | 3 | 2 | 1 |
|
|
624
|
+
I CAN HAZ IN TEH BEGINNIN 3 CUCUMBRZ
|
|
625
|
+
WEN I EAT 2 CUCUMBRZ
|
|
626
|
+
DEN I HAS 2 CUCUMBERZ IN MAH BELLY
|
|
627
|
+
AN IN TEH END 1 CUCUMBRZ KTHXBAI
|
|
628
|
+
OUTPUT
|
|
629
|
+
lines.split("\n").each do |line|
|
|
630
|
+
expect(@out.string).to include line.strip
|
|
631
|
+
end
|
|
632
|
+
end
|
|
633
|
+
end
|
|
634
|
+
end
|
|
635
|
+
end
|
|
636
|
+
|
|
637
|
+
context "In --expand mode with --source as an option" do
|
|
638
|
+
let(:runtime) { Runtime.new({:expand => true})}
|
|
639
|
+
before(:each) do
|
|
640
|
+
Cucumber::Term::ANSIColor.coloring = false
|
|
641
|
+
@out = StringIO.new
|
|
642
|
+
@formatter = Pretty.new(runtime, @out, {:source => true})
|
|
643
|
+
end
|
|
644
|
+
|
|
645
|
+
describe "given a single feature" do
|
|
646
|
+
before(:each) do
|
|
647
|
+
run_defined_feature
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
describe "with a scenario outline" do
|
|
651
|
+
define_feature <<-FEATURE
|
|
652
|
+
Feature: Fud Pyramid
|
|
653
|
+
|
|
654
|
+
Scenario Outline: Monkey eats a balanced diet
|
|
655
|
+
Given there are <Things>
|
|
656
|
+
|
|
657
|
+
Examples: Fruit
|
|
658
|
+
| Things |
|
|
659
|
+
| apples |
|
|
660
|
+
| bananas |
|
|
661
|
+
Examples: Vegetables
|
|
662
|
+
| Things |
|
|
663
|
+
| broccoli |
|
|
664
|
+
| carrots |
|
|
665
|
+
FEATURE
|
|
666
|
+
|
|
667
|
+
it "includes the source in the output" do
|
|
668
|
+
lines = <<-OUTPUT
|
|
669
|
+
Scenario Outline: Monkey eats a balanced diet # spec.feature:3
|
|
670
|
+
Given there are <Things> # spec.feature:4
|
|
671
|
+
Examples: Fruit
|
|
672
|
+
Scenario: | apples | # spec.feature:8
|
|
673
|
+
Given there are apples # spec.feature:8
|
|
674
|
+
Scenario: | bananas | # spec.feature:9
|
|
675
|
+
Given there are bananas # spec.feature:9
|
|
676
|
+
Examples: Vegetables
|
|
677
|
+
Scenario: | broccoli | # spec.feature:12
|
|
678
|
+
Given there are broccoli # spec.feature:12
|
|
679
|
+
Scenario: | carrots | # spec.feature:13
|
|
680
|
+
Given there are carrots # spec.feature:13
|
|
681
|
+
OUTPUT
|
|
682
|
+
lines.split("\n").each do |line|
|
|
683
|
+
expect(@out.string).to include line.strip
|
|
684
|
+
end
|
|
685
|
+
end
|
|
686
|
+
|
|
687
|
+
context "With very wide cells" do
|
|
688
|
+
define_feature <<-FEATURE
|
|
689
|
+
Feature: Monkey Business
|
|
690
|
+
|
|
691
|
+
Scenario Outline: Types of monkey
|
|
692
|
+
Given there are <Types of monkey>
|
|
693
|
+
|
|
694
|
+
Examples:
|
|
695
|
+
| Types of monkey | Extra |
|
|
696
|
+
| Hominidae | Very long cell content |
|
|
697
|
+
FEATURE
|
|
698
|
+
|
|
699
|
+
it "the scenario line controls the source indentation" do
|
|
700
|
+
lines = <<-OUTPUT
|
|
701
|
+
Examples:
|
|
702
|
+
Scenario: | Hominidae | Very long cell content | # spec.feature:8
|
|
703
|
+
Given there are Hominidae # spec.feature:8
|
|
704
|
+
|
|
705
|
+
OUTPUT
|
|
706
|
+
lines.split("\n").each do |line|
|
|
707
|
+
expect(@out.string).to include line.strip
|
|
708
|
+
end
|
|
709
|
+
end
|
|
710
|
+
end
|
|
711
|
+
end
|
|
712
|
+
end
|
|
713
|
+
end
|
|
714
|
+
|
|
715
|
+
context "snippets contain relevant keyword replacements" do
|
|
716
|
+
|
|
717
|
+
before(:each) do
|
|
718
|
+
Cucumber::Term::ANSIColor.coloring = false
|
|
719
|
+
@out = StringIO.new
|
|
720
|
+
@formatter = Pretty.new(runtime, @out, {snippets: true})
|
|
721
|
+
run_defined_feature
|
|
722
|
+
end
|
|
723
|
+
|
|
724
|
+
describe "With a scenario that has undefined steps" do
|
|
725
|
+
define_feature <<-FEATURE
|
|
726
|
+
Feature: Banana party
|
|
727
|
+
|
|
728
|
+
Scenario: many monkeys eat many things
|
|
729
|
+
Given there are bananas and apples
|
|
730
|
+
And other monkeys are around
|
|
731
|
+
When one monkey eats a banana
|
|
732
|
+
And the other monkeys eat all the apples
|
|
733
|
+
Then bananas remain
|
|
734
|
+
But there are no apples left
|
|
735
|
+
FEATURE
|
|
736
|
+
|
|
737
|
+
it "containes snippets with 'And' or 'But' replaced by previous step name" do
|
|
738
|
+
expect(@out.string).to include("Given(/^there are bananas and apples$/)")
|
|
739
|
+
expect(@out.string).to include("Given(/^other monkeys are around$/)")
|
|
740
|
+
expect(@out.string).to include("When(/^one monkey eats a banana$/)")
|
|
741
|
+
expect(@out.string).to include("When(/^the other monkeys eat all the apples$/)")
|
|
742
|
+
expect(@out.string).to include("Then(/^bananas remain$/)")
|
|
743
|
+
expect(@out.string).to include("Then(/^there are no apples left$/)")
|
|
744
|
+
end
|
|
745
|
+
end
|
|
746
|
+
|
|
747
|
+
describe "With a scenario that uses * and 'But'" do
|
|
748
|
+
define_feature <<-FEATURE
|
|
749
|
+
Feature: Banana party
|
|
750
|
+
|
|
751
|
+
Scenario: many monkeys eat many things
|
|
752
|
+
* there are bananas and apples
|
|
753
|
+
* other monkeys are around
|
|
754
|
+
When one monkey eats a banana
|
|
755
|
+
* the other monkeys eat all the apples
|
|
756
|
+
Then bananas remain
|
|
757
|
+
* there are no apples left
|
|
758
|
+
FEATURE
|
|
759
|
+
it "replaces the first step with 'Given'" do
|
|
760
|
+
expect(@out.string).to include("Given(/^there are bananas and apples$/)")
|
|
761
|
+
end
|
|
762
|
+
it "uses actual keywords as the 'previous' keyword for future replacements" do
|
|
763
|
+
expect(@out.string).to include("Given(/^other monkeys are around$/)")
|
|
764
|
+
expect(@out.string).to include("When(/^the other monkeys eat all the apples$/)")
|
|
765
|
+
expect(@out.string).to include("Then(/^there are no apples left$/)")
|
|
766
|
+
end
|
|
767
|
+
end
|
|
768
|
+
|
|
769
|
+
describe "With a scenario where the only undefined step uses 'And'" do
|
|
770
|
+
define_feature <<-FEATURE
|
|
771
|
+
Feature:
|
|
772
|
+
|
|
773
|
+
Scenario:
|
|
774
|
+
Given this step passes
|
|
775
|
+
Then this step passes
|
|
776
|
+
And this step is undefined
|
|
777
|
+
FEATURE
|
|
778
|
+
define_steps do
|
|
779
|
+
Given(/^this step passes$/) {}
|
|
780
|
+
end
|
|
781
|
+
it "uses actual keyword of the previous passing step for the undefined step" do
|
|
782
|
+
expect(@out.string).to include("Then(/^this step is undefined$/)")
|
|
783
|
+
end
|
|
784
|
+
end
|
|
785
|
+
|
|
786
|
+
describe "With scenarios where the first step is undefined and uses '*'" do
|
|
787
|
+
define_feature <<-FEATURE
|
|
788
|
+
Feature:
|
|
789
|
+
|
|
790
|
+
Scenario:
|
|
791
|
+
* this step is undefined
|
|
792
|
+
Then this step passes
|
|
793
|
+
|
|
794
|
+
Scenario:
|
|
795
|
+
* this step is also undefined
|
|
796
|
+
Then this step passes
|
|
797
|
+
FEATURE
|
|
798
|
+
define_steps do
|
|
799
|
+
Given(/^this step passes$/) {}
|
|
800
|
+
end
|
|
801
|
+
it "uses 'Given' as actual keyword the step in each scenario" do
|
|
802
|
+
expect(@out.string).to include("Given(/^this step is undefined$/)")
|
|
803
|
+
expect(@out.string).to include("Given(/^this step is also undefined$/)")
|
|
804
|
+
end
|
|
805
|
+
end
|
|
806
|
+
|
|
807
|
+
describe "with a scenario in en-lol" do
|
|
808
|
+
define_feature <<-FEATURE
|
|
809
|
+
# language: en-lol
|
|
810
|
+
OH HAI: STUFFING
|
|
811
|
+
|
|
812
|
+
MISHUN: CUCUMBR
|
|
813
|
+
I CAN HAZ IN TEH BEGINNIN CUCUMBRZ
|
|
814
|
+
AN I EAT CUCUMBRZ
|
|
815
|
+
FEATURE
|
|
816
|
+
it "uses actual keyword of the previous passing step for the undefined step" do
|
|
817
|
+
expect(@out.string).to include("ICANHAZ(/^I EAT CUCUMBRZ$/)")
|
|
818
|
+
end
|
|
819
|
+
end
|
|
820
|
+
end
|
|
389
821
|
end
|
|
390
822
|
end
|
|
391
823
|
end
|