mobiusloop 0.1.2
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 +7 -0
- data/.coveralls.yml +1 -0
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.travis.yml +22 -0
- data/.yardopts +1 -0
- data/CONTRIBUTING.md +68 -0
- data/Gemfile +5 -0
- data/History.md +2280 -0
- data/LICENSE +22 -0
- data/README.md +373 -0
- data/Rakefile +22 -0
- data/bin/mobiusloop +8 -0
- data/cucumber.gemspec +47 -0
- data/cucumber.yml +20 -0
- data/examples/i18n/README.textile +3 -0
- data/examples/i18n/Rakefile +33 -0
- data/examples/i18n/ar/Rakefile +6 -0
- data/examples/i18n/ar/features/addition.feature +17 -0
- data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/ar/lib/calculator.rb +11 -0
- data/examples/i18n/bg/Rakefile +6 -0
- data/examples/i18n/bg/features/addition.feature +12 -0
- data/examples/i18n/bg/features/consecutive_calculations.feature +19 -0
- data/examples/i18n/bg/features/division.feature +17 -0
- data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/bg/features/support/env.rb +5 -0
- data/examples/i18n/bg/features/support/world.rb +8 -0
- data/examples/i18n/bg/lib/calculator.rb +24 -0
- data/examples/i18n/ca/Rakefile +6 -0
- data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +21 -0
- data/examples/i18n/ca/features/suma.feature +17 -0
- data/examples/i18n/ca/lib/calculadora.rb +16 -0
- data/examples/i18n/cs/Rakefile +6 -0
- data/examples/i18n/cs/features/addition.feature +17 -0
- data/examples/i18n/cs/features/division.feature +11 -0
- data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/cs/lib/calculator.rb +14 -0
- data/examples/i18n/da/Rakefile +6 -0
- data/examples/i18n/da/features/sammenlaegning.feature +18 -0
- data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +24 -0
- data/examples/i18n/da/lib/lommeregner.rb +11 -0
- data/examples/i18n/de/Rakefile +6 -0
- data/examples/i18n/de/features/addition.feature +17 -0
- data/examples/i18n/de/features/division.feature +10 -0
- data/examples/i18n/de/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/de/lib/calculator.rb +14 -0
- data/examples/i18n/el/Rakefile +6 -0
- 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/en-lol/Rakefile +4 -0
- data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
- data/examples/i18n/en-lol/features/stuffing.feature +8 -0
- data/examples/i18n/en-lol/features/support/env.rb +7 -0
- data/examples/i18n/en-lol/lib/basket.rb +12 -0
- data/examples/i18n/en-lol/lib/belly.rb +11 -0
- data/examples/i18n/en/Rakefile +6 -0
- data/examples/i18n/en/features/addition.feature +17 -0
- data/examples/i18n/en/features/division.feature +10 -0
- data/examples/i18n/en/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/en/lib/calculator.rb +14 -0
- data/examples/i18n/eo/Rakefile +6 -0
- data/examples/i18n/eo/features/adicio.feature +17 -0
- data/examples/i18n/eo/features/divido.feature +10 -0
- data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/eo/lib/calculator.rb +14 -0
- data/examples/i18n/es/Rakefile +6 -0
- data/examples/i18n/es/features/adicion.feature +17 -0
- data/examples/i18n/es/features/step_definitions/calculador_steps.rb +21 -0
- data/examples/i18n/es/lib/calculador.rb +14 -0
- data/examples/i18n/et/Rakefile +6 -0
- data/examples/i18n/et/features/jagamine.feature +10 -0
- data/examples/i18n/et/features/liitmine.feature +17 -0
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +24 -0
- data/examples/i18n/et/lib/kalkulaator.rb +14 -0
- data/examples/i18n/fi/Rakefile +6 -0
- data/examples/i18n/fi/features/jakolasku.feature +10 -0
- data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +24 -0
- data/examples/i18n/fi/features/yhteenlasku.feature +17 -0
- data/examples/i18n/fi/lib/laskin.rb +14 -0
- data/examples/i18n/fr/Rakefile +8 -0
- data/examples/i18n/fr/features/addition.feature +18 -0
- data/examples/i18n/fr/features/addition2.feature +17 -0
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +32 -0
- data/examples/i18n/fr/features/support/env.rb +5 -0
- data/examples/i18n/fr/lib/calculatrice.rb +10 -0
- data/examples/i18n/he/Rakefile +6 -0
- data/examples/i18n/he/features/addition.feature +17 -0
- data/examples/i18n/he/features/division.feature +10 -0
- data/examples/i18n/he/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/he/lib/calculator.rb +15 -0
- data/examples/i18n/hi/Rakefile +6 -0
- data/examples/i18n/hi/features/addition.feature +16 -0
- data/examples/i18n/hi/features/division.feature +10 -0
- data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/hi/lib/calculator.rb +15 -0
- 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/hu/Rakefile +6 -0
- data/examples/i18n/hu/features/osszeadas.feature +17 -0
- data/examples/i18n/hu/features/osztas.feature +10 -0
- data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +25 -0
- data/examples/i18n/hu/lib/calculator.rb +14 -0
- data/examples/i18n/id/Rakefile +6 -0
- data/examples/i18n/id/features/addition.feature +17 -0
- data/examples/i18n/id/features/division.feature +10 -0
- data/examples/i18n/id/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/id/lib/calculator.rb +14 -0
- data/examples/i18n/it/Rakefile +6 -0
- data/examples/i18n/it/features/somma.feature +11 -0
- data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +24 -0
- data/examples/i18n/it/lib/calcolatrice.rb +11 -0
- data/examples/i18n/ja/Rakefile +6 -0
- data/examples/i18n/ja/features/addition.feature +17 -0
- data/examples/i18n/ja/features/division.feature +10 -0
- data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +19 -0
- data/examples/i18n/ja/features/support/env.rb +5 -0
- data/examples/i18n/ja/lib/calculator.rb +14 -0
- data/examples/i18n/ko/Rakefile +6 -0
- data/examples/i18n/ko/features/addition.feature +17 -0
- data/examples/i18n/ko/features/division.feature +11 -0
- data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/ko/lib/calculator.rb +14 -0
- data/examples/i18n/lt/Rakefile +6 -0
- data/examples/i18n/lt/features/addition.feature +17 -0
- data/examples/i18n/lt/features/division.feature +10 -0
- data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/lt/lib/calculator.rb +14 -0
- data/examples/i18n/lv/Rakefile +6 -0
- data/examples/i18n/lv/features/addition.feature +17 -0
- data/examples/i18n/lv/features/division.feature +10 -0
- data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/lv/lib/calculator.rb +14 -0
- data/examples/i18n/no/Rakefile +6 -0
- data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +17 -0
- data/examples/i18n/no/features/summering.feature +19 -0
- data/examples/i18n/no/features/support/env.rb +6 -0
- data/examples/i18n/no/lib/kalkulator.rb +11 -0
- data/examples/i18n/pl/Rakefile +6 -0
- data/examples/i18n/pl/features/addition.feature +17 -0
- data/examples/i18n/pl/features/division.feature +10 -0
- data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/pl/features/support/env.rb +5 -0
- data/examples/i18n/pl/lib/calculator.rb +14 -0
- data/examples/i18n/pt/Rakefile +6 -0
- data/examples/i18n/pt/features/adicao.feature +11 -0
- data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +20 -0
- data/examples/i18n/pt/features/support/env.rb +5 -0
- data/examples/i18n/pt/lib/calculadora.rb +10 -0
- data/examples/i18n/ro/Rakefile +6 -0
- data/examples/i18n/ro/features/adunare.feature +12 -0
- data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +21 -0
- data/examples/i18n/ro/lib/calculator.rb +11 -0
- data/examples/i18n/ru/Rakefile +6 -0
- data/examples/i18n/ru/features/addition.feature +11 -0
- data/examples/i18n/ru/features/consecutive_calculations.feature +17 -0
- data/examples/i18n/ru/features/division.feature +16 -0
- data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +19 -0
- data/examples/i18n/ru/features/support/env.rb +5 -0
- data/examples/i18n/ru/features/support/world.rb +8 -0
- data/examples/i18n/ru/lib/calculator.rb +24 -0
- data/examples/i18n/sk/Rakefile +6 -0
- data/examples/i18n/sk/features/addition.feature +17 -0
- data/examples/i18n/sk/features/division.feature +10 -0
- data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/sk/lib/calculator.rb +14 -0
- data/examples/i18n/sr-Cyrl/Rakefile +6 -0
- data/examples/i18n/sr-Cyrl/features/sabiranje.feature +18 -0
- data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +20 -0
- data/examples/i18n/sr-Cyrl/features/support/env.rb +5 -0
- data/examples/i18n/sr-Cyrl/lib/calculator.rb +12 -0
- data/examples/i18n/sr-Latn/Rakefile +6 -0
- data/examples/i18n/sr-Latn/features/sabiranje.feature +18 -0
- data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/sr-Latn/lib/calculator.rb +12 -0
- data/examples/i18n/sv/Rakefile +6 -0
- data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +24 -0
- data/examples/i18n/sv/features/summering.feature +18 -0
- data/examples/i18n/sv/lib/kalkulator.rb +11 -0
- data/examples/i18n/tr/Rakefile +6 -0
- data/examples/i18n/tr/features/bolme.feature +10 -0
- data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +24 -0
- data/examples/i18n/tr/features/toplama.feature +18 -0
- data/examples/i18n/tr/lib/hesap_makinesi.rb +15 -0
- data/examples/i18n/uk/Rakefile +6 -0
- data/examples/i18n/uk/features/addition.feature +11 -0
- data/examples/i18n/uk/features/consecutive_calculations.feature +17 -0
- data/examples/i18n/uk/features/division.feature +16 -0
- data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +19 -0
- data/examples/i18n/uk/features/support/env.rb +5 -0
- data/examples/i18n/uk/features/support/world.rb +8 -0
- data/examples/i18n/uk/lib/calculator.rb +24 -0
- data/examples/i18n/uz/Rakefile +6 -0
- data/examples/i18n/uz/features/addition.feature +10 -0
- data/examples/i18n/uz/features/consecutive_calculations.feature +17 -0
- data/examples/i18n/uz/features/division.feature +17 -0
- data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +19 -0
- data/examples/i18n/uz/features/support/env.rb +5 -0
- data/examples/i18n/uz/features/support/world.rb +8 -0
- data/examples/i18n/uz/lib/calculator.rb +24 -0
- data/examples/i18n/zh-CN/Rakefile +4 -0
- data/examples/i18n/zh-CN/features/addition.feature +18 -0
- data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +26 -0
- data/examples/i18n/zh-CN/lib/calculator.rb +10 -0
- data/examples/i18n/zh-TW/Rakefile +4 -0
- data/examples/i18n/zh-TW/features/addition.feature +17 -0
- data/examples/i18n/zh-TW/features/division.feature +11 -0
- data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +24 -0
- data/examples/i18n/zh-TW/lib/calculator.rb +14 -0
- data/examples/mobiusloop/increase_readers.goal +13 -0
- data/examples/mobiusloop/scale_page_response.rb +20 -0
- data/examples/mobiusloop/total_articles_scale.rb +10 -0
- data/examples/mobiusloop/total_readers_scale.rb +10 -0
- data/examples/rspec_doubles/Rakefile +4 -0
- data/examples/rspec_doubles/features/mocking.feature +9 -0
- data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +19 -0
- data/examples/rspec_doubles/features/support/env.rb +12 -0
- data/examples/sinatra/README.textile +13 -0
- data/examples/sinatra/Rakefile +6 -0
- data/examples/sinatra/app.rb +14 -0
- data/examples/sinatra/features/add.feature +11 -0
- data/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
- data/examples/sinatra/features/support/env.rb +10 -0
- data/examples/sinatra/views/add.erb +7 -0
- data/examples/sinatra/views/layout.erb +8 -0
- data/examples/tcl/README.textile +11 -0
- data/examples/tcl/Rakefile +6 -0
- data/examples/tcl/features/fibonnacci.feature +17 -0
- data/examples/tcl/features/step_definitions/fib_steps.rb +7 -0
- data/examples/tcl/features/support/env.rb +6 -0
- data/examples/tcl/src/fib.tcl +3 -0
- data/examples/test_unit/Gemfile +4 -0
- data/examples/test_unit/Rakefile +6 -0
- data/examples/test_unit/features/step_definitions/test_unit_steps.rb +20 -0
- data/examples/test_unit/features/test_unit.feature +9 -0
- data/examples/watir/README.textile +16 -0
- data/examples/watir/Rakefile +12 -0
- data/examples/watir/cucumber.yml +1 -0
- data/examples/watir/features/search.feature +12 -0
- data/examples/watir/features/step_definitions/search_steps.rb +26 -0
- data/examples/watir/features/support/env.rb +35 -0
- data/examples/watir/features/support/screenshots.rb +47 -0
- data/features/docs/api/list_step_defs_as_json.feature +50 -0
- data/features/docs/api/listen_for_events.feature +58 -0
- data/features/docs/api/run_cli_main_with_existing_runtime.feature +26 -0
- data/features/docs/cli/backtraces.feature +36 -0
- data/features/docs/cli/dry_run.feature +70 -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/fail_fast.feature +46 -0
- data/features/docs/cli/finding_steps.feature +28 -0
- data/features/docs/cli/randomize.feature +140 -0
- data/features/docs/cli/require.feature +27 -0
- data/features/docs/cli/retry_failing_tests.feature +32 -0
- data/features/docs/cli/run_scenarios_matching_name.feature +104 -0
- data/features/docs/cli/run_specific_scenarios.feature +77 -0
- data/features/docs/cli/showing_differences.feature +43 -0
- data/features/docs/cli/specifying_multiple_formatters.feature +65 -0
- data/features/docs/cli/strict_mode.feature +64 -0
- data/features/docs/defining_steps/nested_steps.feature +177 -0
- data/features/docs/defining_steps/nested_steps_i18n.feature +34 -0
- data/features/docs/defining_steps/nested_steps_with_second_arg.feature +54 -0
- data/features/docs/defining_steps/one_line_step_definitions.feature +65 -0
- data/features/docs/defining_steps/printing_messages.feature +148 -0
- data/features/docs/defining_steps/skip_scenario.feature +64 -0
- data/features/docs/defining_steps/snippets.feature +56 -0
- data/features/docs/defining_steps/table_diffing.feature +50 -0
- data/features/docs/exception_in_after_hook.feature +126 -0
- data/features/docs/exception_in_after_step_hook.feature +102 -0
- data/features/docs/exception_in_around_hook.feature +78 -0
- data/features/docs/exception_in_before_hook.feature +96 -0
- data/features/docs/extending_cucumber/custom_filter.feature +29 -0
- data/features/docs/extending_cucumber/custom_formatter.feature +130 -0
- data/features/docs/formatters/api_methods.feature +37 -0
- data/features/docs/formatters/debug_formatter.feature +47 -0
- data/features/docs/formatters/formatter_step_file_colon_line.feature +44 -0
- data/features/docs/formatters/html_formatter.feature +91 -0
- data/features/docs/formatters/json_formatter.feature +767 -0
- data/features/docs/formatters/junit_formatter.feature +454 -0
- data/features/docs/formatters/pretty_formatter.feature +73 -0
- data/features/docs/formatters/progress_formatter.feature +31 -0
- data/features/docs/formatters/rerun_formatter.feature +188 -0
- data/features/docs/formatters/usage_formatter.feature +98 -0
- data/features/docs/getting_started.feature +27 -0
- data/features/docs/gherkin/background.feature +548 -0
- data/features/docs/gherkin/doc_strings.feature +74 -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/language_help.feature +42 -0
- data/features/docs/gherkin/outlines.feature +156 -0
- data/features/docs/gherkin/unicode_table.feature +32 -0
- data/features/docs/gherkin/using_descriptions.feature +82 -0
- data/features/docs/gherkin/using_star_notation.feature +37 -0
- data/features/docs/iso-8859-1.feature +6 -0
- data/features/docs/post_configuration_hook.feature +49 -0
- data/features/docs/profiles.feature +120 -0
- data/features/docs/rake_task.feature +141 -0
- data/features/docs/raketask.feature +44 -0
- data/features/docs/work_in_progress.feature +154 -0
- data/features/docs/writing_support_code/after_hooks.feature +102 -0
- data/features/docs/writing_support_code/after_step_hooks.feature +53 -0
- data/features/docs/writing_support_code/around_hooks.feature +260 -0
- data/features/docs/writing_support_code/before_hook.feature +65 -0
- data/features/docs/writing_support_code/hook_order.feature +61 -0
- data/features/docs/writing_support_code/load_path.feature +17 -0
- data/features/docs/writing_support_code/state.feature +32 -0
- data/features/docs/writing_support_code/tagged_hooks.feature +95 -0
- data/features/docs/writing_support_code/transforms.feature +98 -0
- data/features/lib/step_definitions/aruba_steps.rb +26 -0
- data/features/lib/step_definitions/cucumber_steps.rb +78 -0
- data/features/lib/step_definitions/iso-8859-1_steps.rb +12 -0
- 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 +8 -0
- data/features/lib/step_definitions/profile_steps.rb +15 -0
- data/features/lib/step_definitions/retry_steps.rb +35 -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/features/lib/support/fake_wire_server.rb +80 -0
- data/features/lib/support/feature_factory.rb +67 -0
- data/features/lib/support/normalise_output.rb +50 -0
- data/gem_tasks/contributors.rake +15 -0
- data/gem_tasks/cov.rake +5 -0
- data/gem_tasks/cucumber.rake +25 -0
- data/gem_tasks/downloads.rb +7 -0
- data/gem_tasks/environment.rake +7 -0
- data/gem_tasks/examples.rake +11 -0
- data/gem_tasks/fix_cr_lf.rake +10 -0
- data/gem_tasks/flog.rake +4 -0
- data/gem_tasks/rspec.rake +6 -0
- data/gem_tasks/sass.rake +4 -0
- data/gem_tasks/stats +16 -0
- data/gem_tasks/versions.txt +74 -0
- data/gherkin-languages.json +2972 -0
- data/lib/autotest/cucumber.rb +6 -0
- data/lib/autotest/cucumber_mixin.rb +135 -0
- data/lib/autotest/cucumber_rails.rb +6 -0
- data/lib/autotest/cucumber_rails_rspec.rb +6 -0
- data/lib/autotest/cucumber_rails_rspec2.rb +6 -0
- data/lib/autotest/cucumber_rspec.rb +6 -0
- data/lib/autotest/cucumber_rspec2.rb +6 -0
- data/lib/autotest/discover.rb +11 -0
- data/lib/cucumber.rb +37 -0
- data/lib/cucumber/ast.rb +13 -0
- data/lib/cucumber/cli/configuration.rb +146 -0
- data/lib/cucumber/cli/main.rb +99 -0
- data/lib/cucumber/cli/options.rb +465 -0
- data/lib/cucumber/cli/profile_loader.rb +91 -0
- data/lib/cucumber/cli/rerun_file.rb +29 -0
- data/lib/cucumber/configuration.rb +268 -0
- data/lib/cucumber/constantize.rb +45 -0
- data/lib/cucumber/core_ext/instance_exec.rb +70 -0
- data/lib/cucumber/core_ext/string.rb +9 -0
- data/lib/cucumber/deprecate.rb +29 -0
- data/lib/cucumber/encoding.rb +5 -0
- data/lib/cucumber/errors.rb +51 -0
- data/lib/cucumber/events.rb +20 -0
- data/lib/cucumber/events/after_test_case.rb +25 -0
- data/lib/cucumber/events/after_test_step.rb +30 -0
- data/lib/cucumber/events/before_test_case.rb +18 -0
- data/lib/cucumber/events/before_test_step.rb +23 -0
- data/lib/cucumber/events/bus.rb +86 -0
- data/lib/cucumber/events/finished_testing.rb +9 -0
- data/lib/cucumber/events/step_match.rb +23 -0
- data/lib/cucumber/file_specs.rb +37 -0
- data/lib/cucumber/filters.rb +9 -0
- data/lib/cucumber/filters/activate_steps.rb +67 -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 +45 -0
- data/lib/cucumber/filters/retry.rb +32 -0
- data/lib/cucumber/filters/tag_limits.rb +45 -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/formatter/ansicolor.rb +160 -0
- data/lib/cucumber/formatter/backtrace_filter.rb +41 -0
- data/lib/cucumber/formatter/console.rb +252 -0
- data/lib/cucumber/formatter/cucumber.css +286 -0
- data/lib/cucumber/formatter/cucumber.sass +247 -0
- data/lib/cucumber/formatter/debug.rb +35 -0
- data/lib/cucumber/formatter/duration.rb +13 -0
- data/lib/cucumber/formatter/duration_extractor.rb +28 -0
- data/lib/cucumber/formatter/event_bus_report.rb +38 -0
- data/lib/cucumber/formatter/fail_fast.rb +18 -0
- data/lib/cucumber/formatter/fanout.rb +27 -0
- data/lib/cucumber/formatter/hook_query_visitor.rb +40 -0
- data/lib/cucumber/formatter/html.rb +689 -0
- data/lib/cucumber/formatter/ignore_missing_messages.rb +20 -0
- data/lib/cucumber/formatter/interceptor.rb +80 -0
- data/lib/cucumber/formatter/io.rb +34 -0
- data/lib/cucumber/formatter/jquery-min.js +154 -0
- data/lib/cucumber/formatter/json.rb +334 -0
- data/lib/cucumber/formatter/json_pretty.rb +10 -0
- data/lib/cucumber/formatter/junit.rb +238 -0
- data/lib/cucumber/formatter/legacy_api/adapter.rb +1016 -0
- data/lib/cucumber/formatter/legacy_api/ast.rb +389 -0
- data/lib/cucumber/formatter/legacy_api/results.rb +51 -0
- data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +31 -0
- data/lib/cucumber/formatter/pretty.rb +247 -0
- data/lib/cucumber/formatter/progress.rb +73 -0
- data/lib/cucumber/formatter/rerun.rb +35 -0
- data/lib/cucumber/formatter/stepdefs.rb +14 -0
- data/lib/cucumber/formatter/steps.rb +49 -0
- data/lib/cucumber/formatter/summary.rb +35 -0
- data/lib/cucumber/formatter/unicode.rb +53 -0
- data/lib/cucumber/formatter/usage.rb +136 -0
- data/lib/cucumber/gherkin/data_table_parser.rb +31 -0
- data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +99 -0
- data/lib/cucumber/gherkin/formatter/escaping.rb +17 -0
- data/lib/cucumber/gherkin/i18n.rb +15 -0
- data/lib/cucumber/gherkin/steps_parser.rb +31 -0
- data/lib/cucumber/hooks.rb +99 -0
- data/lib/cucumber/load_path.rb +13 -0
- data/lib/cucumber/multiline_argument.rb +71 -0
- data/lib/cucumber/multiline_argument/data_table.rb +744 -0
- data/lib/cucumber/multiline_argument/doc_string.rb +9 -0
- data/lib/cucumber/platform.rb +27 -0
- data/lib/cucumber/project_initializer.rb +82 -0
- data/lib/cucumber/rake/task.rb +168 -0
- data/lib/cucumber/rb_support/rb_dsl.rb +119 -0
- data/lib/cucumber/rb_support/rb_hook.rb +19 -0
- data/lib/cucumber/rb_support/rb_language.rb +216 -0
- data/lib/cucumber/rb_support/rb_step_definition.rb +131 -0
- data/lib/cucumber/rb_support/rb_transform.rb +59 -0
- data/lib/cucumber/rb_support/rb_world.rb +149 -0
- data/lib/cucumber/rb_support/snippet.rb +170 -0
- data/lib/cucumber/rspec/disable_option_parser.rb +23 -0
- data/lib/cucumber/rspec/doubles.rb +19 -0
- data/lib/cucumber/running_test_case.rb +134 -0
- data/lib/cucumber/runtime.rb +266 -0
- data/lib/cucumber/runtime/after_hooks.rb +25 -0
- data/lib/cucumber/runtime/before_hooks.rb +27 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +66 -0
- data/lib/cucumber/runtime/step_hooks.rb +23 -0
- data/lib/cucumber/runtime/support_code.rb +151 -0
- data/lib/cucumber/runtime/user_interface.rb +85 -0
- data/lib/cucumber/step_argument.rb +25 -0
- data/lib/cucumber/step_definition_light.rb +20 -0
- data/lib/cucumber/step_definitions.rb +13 -0
- data/lib/cucumber/step_match.rb +141 -0
- data/lib/cucumber/step_match_search.rb +67 -0
- data/lib/cucumber/term/ansicolor.rb +110 -0
- data/lib/cucumber/unit.rb +11 -0
- data/lib/cucumber/version +1 -0
- data/lib/mobiusloop/measure.rb +19 -0
- data/lib/mobiusloop/mobius_steps.rb +36 -0
- data/lib/mobiusloop/objective.rb +10 -0
- data/lib/mobiusloop/outcome.rb +99 -0
- data/lib/mobiusloop/scale.rb +32 -0
- data/lib/simplecov_setup.rb +18 -0
- data/major_changes_to_cucumber.md +45 -0
- data/mobiusloop.gemspec +47 -0
- data/spec/cucumber/cli/configuration_spec.rb +435 -0
- data/spec/cucumber/cli/main_spec.rb +83 -0
- data/spec/cucumber/cli/options_spec.rb +410 -0
- data/spec/cucumber/cli/profile_loader_spec.rb +46 -0
- data/spec/cucumber/cli/rerun_spec.rb +85 -0
- data/spec/cucumber/configuration_spec.rb +147 -0
- data/spec/cucumber/constantize_spec.rb +19 -0
- data/spec/cucumber/core_ext/instance_exec_spec.rb +4 -0
- data/spec/cucumber/events/bus_spec.rb +94 -0
- data/spec/cucumber/file_specs_spec.rb +60 -0
- data/spec/cucumber/filters/activate_steps_spec.rb +149 -0
- data/spec/cucumber/filters/gated_receiver_spec.rb +47 -0
- data/spec/cucumber/filters/retry_spec.rb +79 -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 +32 -0
- data/spec/cucumber/formatter/debug_spec.rb +64 -0
- data/spec/cucumber/formatter/duration_spec.rb +22 -0
- data/spec/cucumber/formatter/event_bus_report_spec.rb +88 -0
- data/spec/cucumber/formatter/fail_fast_spec.rb +88 -0
- data/spec/cucumber/formatter/html_spec.rb +538 -0
- data/spec/cucumber/formatter/interceptor_spec.rb +136 -0
- data/spec/cucumber/formatter/json_spec.rb +841 -0
- data/spec/cucumber/formatter/junit_spec.rb +252 -0
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +2182 -0
- data/spec/cucumber/formatter/pretty_spec.rb +919 -0
- data/spec/cucumber/formatter/progress_spec.rb +169 -0
- data/spec/cucumber/formatter/rerun_spec.rb +91 -0
- data/spec/cucumber/formatter/spec_helper.rb +82 -0
- data/spec/cucumber/hooks_spec.rb +30 -0
- data/spec/cucumber/multiline_argument/data_table_spec.rb +603 -0
- data/spec/cucumber/project_initializer_spec.rb +87 -0
- data/spec/cucumber/rake/forked_spec.rb +53 -0
- data/spec/cucumber/rake/task_spec.rb +85 -0
- data/spec/cucumber/rb_support/rb_language_spec.rb +243 -0
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +199 -0
- data/spec/cucumber/rb_support/rb_transform_spec.rb +46 -0
- data/spec/cucumber/rb_support/rb_world_spec.rb +47 -0
- data/spec/cucumber/rb_support/snippet_spec.rb +137 -0
- data/spec/cucumber/running_test_case_spec.rb +139 -0
- data/spec/cucumber/runtime/for_programming_languages_spec.rb +36 -0
- data/spec/cucumber/runtime/support_code_spec.rb +16 -0
- data/spec/cucumber/runtime_spec.rb +20 -0
- data/spec/cucumber/sell_cucumbers.feature +19 -0
- data/spec/cucumber/step_argument_spec.rb +18 -0
- data/spec/cucumber/step_match_search_spec.rb +122 -0
- data/spec/cucumber/step_match_spec.rb +85 -0
- data/spec/cucumber/world/pending_spec.rb +47 -0
- data/spec/cucumber_spec.rb +39 -0
- data/spec/spec_helper.rb +29 -0
- data/spec/support/standard_step_actions.rb +18 -0
- metadata +1007 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Feature: Requiring extra step files
|
|
2
|
+
|
|
3
|
+
Cucumber allows you to require extra files using the `-r` option.
|
|
4
|
+
|
|
5
|
+
Scenario:
|
|
6
|
+
Given a file named "features/test.feature" with:
|
|
7
|
+
"""
|
|
8
|
+
Feature: Sample
|
|
9
|
+
Scenario: Sample
|
|
10
|
+
Given found in extra file
|
|
11
|
+
"""
|
|
12
|
+
And a file named "tmp/extras.rb" with:
|
|
13
|
+
"""
|
|
14
|
+
Given(/^found in extra file$/) { }
|
|
15
|
+
"""
|
|
16
|
+
When I run `cucumber -q -r tmp/extras.rb features/test.feature`
|
|
17
|
+
Then it should pass with:
|
|
18
|
+
"""
|
|
19
|
+
Feature: Sample
|
|
20
|
+
|
|
21
|
+
Scenario: Sample
|
|
22
|
+
Given found in extra file
|
|
23
|
+
|
|
24
|
+
1 scenario (1 passed)
|
|
25
|
+
1 step (1 passed)
|
|
26
|
+
"""
|
|
27
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
@wip
|
|
2
|
+
Feature: Retry failing tests
|
|
3
|
+
|
|
4
|
+
Retry gives you a way to get through flaky tests that usually pass after a few runs.
|
|
5
|
+
This gives a development team a way forward other than disabling a valuable test.
|
|
6
|
+
|
|
7
|
+
- Specify max retry count in option
|
|
8
|
+
- Output information to the screen
|
|
9
|
+
- Output retry information in test report
|
|
10
|
+
|
|
11
|
+
Questions:
|
|
12
|
+
use a tag for flaky tests? Global option to retry any test that fails?
|
|
13
|
+
|
|
14
|
+
Background:
|
|
15
|
+
Given a scenario "Flakey" that fails once, then passes
|
|
16
|
+
And a scenario "Shakey" that fails twice, then passes
|
|
17
|
+
And a scenario "Solid" that passes
|
|
18
|
+
And a scenario "No Dice" that fails
|
|
19
|
+
|
|
20
|
+
Scenario:
|
|
21
|
+
When I run `cucumber -q --retry 1`
|
|
22
|
+
Then it should fail with:
|
|
23
|
+
"""
|
|
24
|
+
4 scenarios (2 passed, 2 failed)
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
Scenario:
|
|
28
|
+
When I run `cucumber -q --retry 2`
|
|
29
|
+
Then it should pass with:
|
|
30
|
+
"""
|
|
31
|
+
4 scenarios (3 passed, 1 failed)
|
|
32
|
+
"""
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
Feature: Run feature elements matching a name with --name/-n
|
|
2
|
+
|
|
3
|
+
The `--name NAME` option runs only scenarios which match a certain
|
|
4
|
+
name. The NAME can be a substring of the names of Features, Scenarios,
|
|
5
|
+
Scenario Outlines or Example blocks.
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given a file named "features/first.feature" with:
|
|
9
|
+
"""
|
|
10
|
+
Feature: first feature
|
|
11
|
+
Scenario: foo first
|
|
12
|
+
Given missing
|
|
13
|
+
Scenario: bar first
|
|
14
|
+
Given missing
|
|
15
|
+
"""
|
|
16
|
+
Given a file named "features/second.feature" with:
|
|
17
|
+
"""
|
|
18
|
+
Feature: second
|
|
19
|
+
Scenario: foo second
|
|
20
|
+
Given missing
|
|
21
|
+
Scenario: bar second
|
|
22
|
+
Given missing
|
|
23
|
+
"""
|
|
24
|
+
Given a file named "features/outline.feature" with:
|
|
25
|
+
"""
|
|
26
|
+
Feature: outline
|
|
27
|
+
Scenario Outline: baz outline
|
|
28
|
+
Given outline step <name>
|
|
29
|
+
|
|
30
|
+
Examples: quux example
|
|
31
|
+
| name |
|
|
32
|
+
| a |
|
|
33
|
+
| b |
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
Scenario: Matching Feature names
|
|
37
|
+
When I run `cucumber -q --name feature`
|
|
38
|
+
Then it should pass with:
|
|
39
|
+
"""
|
|
40
|
+
Feature: first feature
|
|
41
|
+
|
|
42
|
+
Scenario: foo first
|
|
43
|
+
Given missing
|
|
44
|
+
|
|
45
|
+
Scenario: bar first
|
|
46
|
+
Given missing
|
|
47
|
+
|
|
48
|
+
2 scenarios (2 undefined)
|
|
49
|
+
2 steps (2 undefined)
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
Scenario: Matching Scenario names
|
|
53
|
+
When I run `cucumber -q --name foo`
|
|
54
|
+
Then it should pass with:
|
|
55
|
+
"""
|
|
56
|
+
Feature: first feature
|
|
57
|
+
|
|
58
|
+
Scenario: foo first
|
|
59
|
+
Given missing
|
|
60
|
+
|
|
61
|
+
Feature: second
|
|
62
|
+
|
|
63
|
+
Scenario: foo second
|
|
64
|
+
Given missing
|
|
65
|
+
|
|
66
|
+
2 scenarios (2 undefined)
|
|
67
|
+
2 steps (2 undefined)
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
Scenario: Matching Scenario Outline names
|
|
71
|
+
When I run `cucumber -q --name baz`
|
|
72
|
+
Then it should pass with:
|
|
73
|
+
"""
|
|
74
|
+
Feature: outline
|
|
75
|
+
|
|
76
|
+
Scenario Outline: baz outline
|
|
77
|
+
Given outline step <name>
|
|
78
|
+
|
|
79
|
+
Examples: quux example
|
|
80
|
+
| name |
|
|
81
|
+
| a |
|
|
82
|
+
| b |
|
|
83
|
+
|
|
84
|
+
2 scenarios (2 undefined)
|
|
85
|
+
2 steps (2 undefined)
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
Scenario: Matching Example block names
|
|
89
|
+
When I run `cucumber -q --name quux`
|
|
90
|
+
Then it should pass with:
|
|
91
|
+
"""
|
|
92
|
+
Feature: outline
|
|
93
|
+
|
|
94
|
+
Scenario Outline: baz outline
|
|
95
|
+
Given outline step <name>
|
|
96
|
+
|
|
97
|
+
Examples: quux example
|
|
98
|
+
| name |
|
|
99
|
+
| a |
|
|
100
|
+
| b |
|
|
101
|
+
|
|
102
|
+
2 scenarios (2 undefined)
|
|
103
|
+
2 steps (2 undefined)
|
|
104
|
+
"""
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
Feature: Run specific scenarios
|
|
2
|
+
|
|
3
|
+
You can choose to run a specific scenario using the file:line format,
|
|
4
|
+
or you can pass in a file with a list of scenarios using @-notation.
|
|
5
|
+
|
|
6
|
+
The line number can fall anywhere within the body of a scenario, including
|
|
7
|
+
steps, tags, comments, description, data tables or doc strings.
|
|
8
|
+
|
|
9
|
+
For scenario outlines, if the line hits one example row, just that one
|
|
10
|
+
will be run. Otherwise all examples in the table or outline will be run.
|
|
11
|
+
|
|
12
|
+
Background:
|
|
13
|
+
Given the standard step definitions
|
|
14
|
+
|
|
15
|
+
Scenario: Two scenarios, run just one of them
|
|
16
|
+
Given a file named "features/test.feature" with:
|
|
17
|
+
"""
|
|
18
|
+
Feature:
|
|
19
|
+
|
|
20
|
+
Scenario: Miss
|
|
21
|
+
Given this step is undefined
|
|
22
|
+
|
|
23
|
+
Scenario: Hit
|
|
24
|
+
Given this step passes
|
|
25
|
+
"""
|
|
26
|
+
When I run `cucumber features/test.feature:7 --format pretty --quiet`
|
|
27
|
+
Then it should pass with exactly:
|
|
28
|
+
"""
|
|
29
|
+
Feature:
|
|
30
|
+
|
|
31
|
+
Scenario: Hit
|
|
32
|
+
Given this step passes
|
|
33
|
+
|
|
34
|
+
1 scenario (1 passed)
|
|
35
|
+
1 step (1 passed)
|
|
36
|
+
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
Scenario: Use @-notation to specify a file containing feature file list
|
|
40
|
+
Given a file named "features/test.feature" with:
|
|
41
|
+
"""
|
|
42
|
+
Feature: Sample
|
|
43
|
+
Scenario: Passing
|
|
44
|
+
Given this step passes
|
|
45
|
+
"""
|
|
46
|
+
And a file named "list-of-features.txt" with:
|
|
47
|
+
"""
|
|
48
|
+
features/test.feature:2
|
|
49
|
+
"""
|
|
50
|
+
When I run `cucumber -q @list-of-features.txt`
|
|
51
|
+
Then it should pass with:
|
|
52
|
+
"""
|
|
53
|
+
Feature: Sample
|
|
54
|
+
|
|
55
|
+
Scenario: Passing
|
|
56
|
+
Given this step passes
|
|
57
|
+
|
|
58
|
+
1 scenario (1 passed)
|
|
59
|
+
1 step (1 passed)
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
Scenario: Specify order of scenarios
|
|
63
|
+
Given a file named "features/test.feature" with:
|
|
64
|
+
"""
|
|
65
|
+
Feature:
|
|
66
|
+
Scenario:
|
|
67
|
+
Given this step passes
|
|
68
|
+
|
|
69
|
+
Scenario:
|
|
70
|
+
Given this step fails
|
|
71
|
+
"""
|
|
72
|
+
When I run `cucumber features/test.feature:5 features/test.feature:3 -f progress`
|
|
73
|
+
Then it should fail with:
|
|
74
|
+
"""
|
|
75
|
+
F.
|
|
76
|
+
"""
|
|
77
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Feature: Showing differences to expected output
|
|
2
|
+
|
|
3
|
+
Cucumber will helpfully show you the expectation error that your
|
|
4
|
+
testing library gives you, in the context of the failing scenario.
|
|
5
|
+
When using RSpec, for example, this will show the difference between
|
|
6
|
+
the expected and the actual output.
|
|
7
|
+
|
|
8
|
+
Scenario: Run single failing scenario with default diff enabled
|
|
9
|
+
Given a file named "features/failing_expectation.feature" with:
|
|
10
|
+
"""
|
|
11
|
+
Feature: Failing expectation
|
|
12
|
+
|
|
13
|
+
Scenario: Failing expectation
|
|
14
|
+
Given failing expectation
|
|
15
|
+
"""
|
|
16
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
17
|
+
"""
|
|
18
|
+
Given /^failing expectation$/ do x=1
|
|
19
|
+
expect('this').to eq 'that'
|
|
20
|
+
end
|
|
21
|
+
"""
|
|
22
|
+
When I run `cucumber -q features/failing_expectation.feature`
|
|
23
|
+
Then it should fail with:
|
|
24
|
+
"""
|
|
25
|
+
Feature: Failing expectation
|
|
26
|
+
|
|
27
|
+
Scenario: Failing expectation
|
|
28
|
+
Given failing expectation
|
|
29
|
+
|
|
30
|
+
expected: "that"
|
|
31
|
+
got: "this"
|
|
32
|
+
|
|
33
|
+
(compared using ==)
|
|
34
|
+
(RSpec::Expectations::ExpectationNotMetError)
|
|
35
|
+
./features/step_definitions/steps.rb:2:in `/^failing expectation$/'
|
|
36
|
+
features/failing_expectation.feature:4:in `Given failing expectation'
|
|
37
|
+
|
|
38
|
+
Failing Scenarios:
|
|
39
|
+
cucumber features/failing_expectation.feature:3
|
|
40
|
+
|
|
41
|
+
1 scenario (1 failed)
|
|
42
|
+
1 step (1 failed)
|
|
43
|
+
"""
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
@spawn
|
|
2
|
+
Feature: Running multiple formatters
|
|
3
|
+
|
|
4
|
+
When running cucumber, you are able to using multiple different
|
|
5
|
+
formatters and redirect the output to text files.
|
|
6
|
+
Two formatters cannot both print to the same file (or to STDOUT)
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given a file named "features/test.feature" with:
|
|
10
|
+
"""
|
|
11
|
+
Feature: Lots of undefined
|
|
12
|
+
|
|
13
|
+
Scenario: Implement me
|
|
14
|
+
Given it snows in Sahara
|
|
15
|
+
Given it's 40 degrees in Norway
|
|
16
|
+
And it's 40 degrees in Norway
|
|
17
|
+
When I stop procrastinating
|
|
18
|
+
And there is world peace
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
Scenario: Multiple formatters and outputs
|
|
22
|
+
When I run `cucumber --no-color --format progress --out progress.txt --format pretty --out pretty.txt --no-source --dry-run --no-snippets features/test.feature`
|
|
23
|
+
Then the stderr should not contain anything
|
|
24
|
+
Then the file "progress.txt" should contain:
|
|
25
|
+
"""
|
|
26
|
+
UUUUU
|
|
27
|
+
|
|
28
|
+
1 scenario (1 undefined)
|
|
29
|
+
5 steps (5 undefined)
|
|
30
|
+
|
|
31
|
+
"""
|
|
32
|
+
And the file "pretty.txt" should contain:
|
|
33
|
+
"""
|
|
34
|
+
Feature: Lots of undefined
|
|
35
|
+
|
|
36
|
+
Scenario: Implement me
|
|
37
|
+
Given it snows in Sahara
|
|
38
|
+
Given it's 40 degrees in Norway
|
|
39
|
+
And it's 40 degrees in Norway
|
|
40
|
+
When I stop procrastinating
|
|
41
|
+
And there is world peace
|
|
42
|
+
|
|
43
|
+
1 scenario (1 undefined)
|
|
44
|
+
5 steps (5 undefined)
|
|
45
|
+
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
Scenario: Two formatters to stdout
|
|
49
|
+
When I run `cucumber -f progress -f pretty features/test.feature`
|
|
50
|
+
Then it should fail with:
|
|
51
|
+
"""
|
|
52
|
+
All but one formatter must use --out, only one can print to each stream (or STDOUT) (RuntimeError)
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
Scenario: Two formatters to stdout when using a profile
|
|
56
|
+
Given the following profiles are defined:
|
|
57
|
+
"""
|
|
58
|
+
default: -q
|
|
59
|
+
"""
|
|
60
|
+
When I run `cucumber -f progress -f pretty features/test.feature`
|
|
61
|
+
Then it should fail with:
|
|
62
|
+
"""
|
|
63
|
+
All but one formatter must use --out, only one can print to each stream (or STDOUT) (RuntimeError)
|
|
64
|
+
"""
|
|
65
|
+
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
Feature: Strict mode
|
|
2
|
+
|
|
3
|
+
Using the `--strict` flag will cause cucumber to fail unless all the
|
|
4
|
+
step definitions have been defined.
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Given a file named "features/missing.feature" with:
|
|
8
|
+
"""
|
|
9
|
+
Feature: Missing
|
|
10
|
+
Scenario: Missing
|
|
11
|
+
Given this step passes
|
|
12
|
+
"""
|
|
13
|
+
And a file named "features/pending.feature" with:
|
|
14
|
+
"""
|
|
15
|
+
Feature: Pending
|
|
16
|
+
Scenario: Pending
|
|
17
|
+
Given this step is pending
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
Scenario: Fail with --strict due to undefined step
|
|
21
|
+
When I run `cucumber -q features/missing.feature --strict`
|
|
22
|
+
Then it should fail with:
|
|
23
|
+
"""
|
|
24
|
+
Feature: Missing
|
|
25
|
+
|
|
26
|
+
Scenario: Missing
|
|
27
|
+
Given this step passes
|
|
28
|
+
Undefined step: "this step passes" (Cucumber::Undefined)
|
|
29
|
+
features/missing.feature:3:in `Given this step passes'
|
|
30
|
+
|
|
31
|
+
1 scenario (1 undefined)
|
|
32
|
+
1 step (1 undefined)
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
Scenario: Fail with --strict due to pending step
|
|
36
|
+
Given the standard step definitions
|
|
37
|
+
When I run `cucumber -q features/pending.feature --strict`
|
|
38
|
+
Then it should fail with:
|
|
39
|
+
"""
|
|
40
|
+
Feature: Pending
|
|
41
|
+
|
|
42
|
+
Scenario: Pending
|
|
43
|
+
Given this step is pending
|
|
44
|
+
TODO (Cucumber::Pending)
|
|
45
|
+
./features/step_definitions/steps.rb:3:in `/^this step is pending$/'
|
|
46
|
+
features/pending.feature:3:in `Given this step is pending'
|
|
47
|
+
|
|
48
|
+
1 scenario (1 pending)
|
|
49
|
+
1 step (1 pending)
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
Scenario: Succeed with --strict
|
|
53
|
+
Given the standard step definitions
|
|
54
|
+
When I run `cucumber -q features/missing.feature --strict`
|
|
55
|
+
Then it should pass with:
|
|
56
|
+
"""
|
|
57
|
+
Feature: Missing
|
|
58
|
+
|
|
59
|
+
Scenario: Missing
|
|
60
|
+
Given this step passes
|
|
61
|
+
|
|
62
|
+
1 scenario (1 passed)
|
|
63
|
+
1 step (1 passed)
|
|
64
|
+
"""
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
Feature: Nested Steps
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given a scenario with a step that looks like this:
|
|
5
|
+
"""gherkin
|
|
6
|
+
Given two turtles
|
|
7
|
+
"""
|
|
8
|
+
And a step definition that looks like this:
|
|
9
|
+
"""ruby
|
|
10
|
+
Given /a turtle/ do
|
|
11
|
+
puts "turtle!"
|
|
12
|
+
end
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
Scenario: Use #steps to call several steps at once
|
|
16
|
+
Given a step definition that looks like this:
|
|
17
|
+
"""ruby
|
|
18
|
+
Given /two turtles/ do
|
|
19
|
+
steps %{
|
|
20
|
+
Given a turtle
|
|
21
|
+
And a turtle
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
"""
|
|
25
|
+
When I run the feature with the progress formatter
|
|
26
|
+
Then the output should contain:
|
|
27
|
+
"""
|
|
28
|
+
turtle!
|
|
29
|
+
|
|
30
|
+
turtle!
|
|
31
|
+
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
Scenario: Use #step to call a single step
|
|
35
|
+
Given a step definition that looks like this:
|
|
36
|
+
"""ruby
|
|
37
|
+
Given /two turtles/ do
|
|
38
|
+
step "a turtle"
|
|
39
|
+
step "a turtle"
|
|
40
|
+
end
|
|
41
|
+
"""
|
|
42
|
+
When I run the feature with the progress formatter
|
|
43
|
+
Then the output should contain:
|
|
44
|
+
"""
|
|
45
|
+
turtle!
|
|
46
|
+
|
|
47
|
+
turtle!
|
|
48
|
+
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
Scenario: Use #steps to call a table
|
|
52
|
+
Given a step definition that looks like this:
|
|
53
|
+
"""ruby
|
|
54
|
+
Given /turtles:/ do |table|
|
|
55
|
+
table.hashes.each do |row|
|
|
56
|
+
puts row[:name]
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
"""
|
|
60
|
+
And a step definition that looks like this:
|
|
61
|
+
"""ruby
|
|
62
|
+
Given /two turtles/ do
|
|
63
|
+
steps %{
|
|
64
|
+
Given turtles:
|
|
65
|
+
| name |
|
|
66
|
+
| Sturm |
|
|
67
|
+
| Liouville |
|
|
68
|
+
}
|
|
69
|
+
end
|
|
70
|
+
"""
|
|
71
|
+
When I run the feature with the progress formatter
|
|
72
|
+
Then the output should contain:
|
|
73
|
+
"""
|
|
74
|
+
Sturm
|
|
75
|
+
|
|
76
|
+
Liouville
|
|
77
|
+
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
Scenario: Use #steps to call a multi-line string
|
|
81
|
+
Given a step definition that looks like this:
|
|
82
|
+
"""ruby
|
|
83
|
+
Given /two turtles/ do
|
|
84
|
+
steps %Q{
|
|
85
|
+
Given turtles:
|
|
86
|
+
\"\"\"
|
|
87
|
+
Sturm
|
|
88
|
+
Liouville
|
|
89
|
+
\"\"\"
|
|
90
|
+
}
|
|
91
|
+
end
|
|
92
|
+
"""
|
|
93
|
+
And a step definition that looks like this:
|
|
94
|
+
"""ruby
|
|
95
|
+
Given /turtles:/ do |string|
|
|
96
|
+
puts string
|
|
97
|
+
end
|
|
98
|
+
"""
|
|
99
|
+
When I run the feature with the progress formatter
|
|
100
|
+
Then the output should contain:
|
|
101
|
+
"""
|
|
102
|
+
Sturm
|
|
103
|
+
Liouville
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
@spawn
|
|
107
|
+
Scenario: Backtrace doesn't skip nested steps
|
|
108
|
+
Given a step definition that looks like this:
|
|
109
|
+
"""ruby
|
|
110
|
+
Given /two turtles/ do
|
|
111
|
+
step "I have a couple turtles"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
When(/I have a couple turtles/) { raise 'error' }
|
|
115
|
+
"""
|
|
116
|
+
When I run the feature with the progress formatter
|
|
117
|
+
Then it should fail with:
|
|
118
|
+
"""
|
|
119
|
+
error (RuntimeError)
|
|
120
|
+
./features/step_definitions/steps2.rb:5:in `/I have a couple turtles/'
|
|
121
|
+
./features/step_definitions/steps2.rb:2:in `/two turtles/'
|
|
122
|
+
features/test_feature_1.feature:3:in `Given two turtles'
|
|
123
|
+
|
|
124
|
+
Failing Scenarios:
|
|
125
|
+
cucumber features/test_feature_1.feature:2 # Scenario: Test Scenario 1
|
|
126
|
+
|
|
127
|
+
1 scenario (1 failed)
|
|
128
|
+
1 step (1 failed)
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
Scenario: Undefined nested step
|
|
132
|
+
Given a file named "features/call_undefined_step_from_step_def.feature" with:
|
|
133
|
+
"""
|
|
134
|
+
Feature: Calling undefined step
|
|
135
|
+
|
|
136
|
+
Scenario: Call directly
|
|
137
|
+
Given a step that calls an undefined step
|
|
138
|
+
|
|
139
|
+
Scenario: Call via another
|
|
140
|
+
Given a step that calls a step that calls an undefined step
|
|
141
|
+
"""
|
|
142
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
143
|
+
"""
|
|
144
|
+
Given /^a step that calls an undefined step$/ do
|
|
145
|
+
step 'this does not exist'
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
Given /^a step that calls a step that calls an undefined step$/ do
|
|
149
|
+
step 'a step that calls an undefined step'
|
|
150
|
+
end
|
|
151
|
+
"""
|
|
152
|
+
When I run `cucumber -q features/call_undefined_step_from_step_def.feature`
|
|
153
|
+
Then it should fail with exactly:
|
|
154
|
+
"""
|
|
155
|
+
Feature: Calling undefined step
|
|
156
|
+
|
|
157
|
+
Scenario: Call directly
|
|
158
|
+
Given a step that calls an undefined step
|
|
159
|
+
Undefined dynamic step: "this does not exist" (Cucumber::UndefinedDynamicStep)
|
|
160
|
+
./features/step_definitions/steps.rb:2:in `/^a step that calls an undefined step$/'
|
|
161
|
+
features/call_undefined_step_from_step_def.feature:4:in `Given a step that calls an undefined step'
|
|
162
|
+
|
|
163
|
+
Scenario: Call via another
|
|
164
|
+
Given a step that calls a step that calls an undefined step
|
|
165
|
+
Undefined dynamic step: "this does not exist" (Cucumber::UndefinedDynamicStep)
|
|
166
|
+
./features/step_definitions/steps.rb:2:in `/^a step that calls an undefined step$/'
|
|
167
|
+
./features/step_definitions/steps.rb:6:in `/^a step that calls a step that calls an undefined step$/'
|
|
168
|
+
features/call_undefined_step_from_step_def.feature:7:in `Given a step that calls a step that calls an undefined step'
|
|
169
|
+
|
|
170
|
+
Failing Scenarios:
|
|
171
|
+
cucumber features/call_undefined_step_from_step_def.feature:3
|
|
172
|
+
cucumber features/call_undefined_step_from_step_def.feature:6
|
|
173
|
+
|
|
174
|
+
2 scenarios (2 failed)
|
|
175
|
+
2 steps (2 failed)
|
|
176
|
+
|
|
177
|
+
"""
|