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,58 @@
|
|
|
1
|
+
Feature: Listen for events
|
|
2
|
+
|
|
3
|
+
Scenario: Step Matched Event
|
|
4
|
+
Given a file named "features/test.feature" with:
|
|
5
|
+
"""
|
|
6
|
+
Feature:
|
|
7
|
+
Scenario:
|
|
8
|
+
Given matching
|
|
9
|
+
"""
|
|
10
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
11
|
+
"""
|
|
12
|
+
Given(/matching/) do
|
|
13
|
+
end
|
|
14
|
+
"""
|
|
15
|
+
And a file named "features/support/my_listener.rb" with:
|
|
16
|
+
"""
|
|
17
|
+
AfterConfiguration do |config|
|
|
18
|
+
io = config.out_stream
|
|
19
|
+
config.on_event Cucumber::Events::StepMatch do |event|
|
|
20
|
+
io.puts "Success!"
|
|
21
|
+
io.puts "Event type: #{event.class}"
|
|
22
|
+
io.puts "Step name: #{event.test_step.name}"
|
|
23
|
+
io.puts "Source location: #{event.step_match.location}"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
"""
|
|
27
|
+
When I run `cucumber`
|
|
28
|
+
Then it should pass with:
|
|
29
|
+
"""
|
|
30
|
+
Success!
|
|
31
|
+
Event type: Cucumber::Events::StepMatch
|
|
32
|
+
Step name: matching
|
|
33
|
+
Source location: features/step_definitions/steps.rb:1
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
Scenario: After Test Step event
|
|
37
|
+
Given a file named "features/test.feature" with:
|
|
38
|
+
"""
|
|
39
|
+
Feature:
|
|
40
|
+
Scenario:
|
|
41
|
+
Given passing
|
|
42
|
+
"""
|
|
43
|
+
And the standard step definitions
|
|
44
|
+
And a file named "features/support/my_listener.rb" with:
|
|
45
|
+
"""
|
|
46
|
+
AfterConfiguration do |config|
|
|
47
|
+
io = config.out_stream
|
|
48
|
+
config.on_event Cucumber::Events::AfterTestStep do |event|
|
|
49
|
+
io.puts "YO"
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
"""
|
|
53
|
+
When I run `cucumber`
|
|
54
|
+
Then it should pass with:
|
|
55
|
+
"""
|
|
56
|
+
YO
|
|
57
|
+
"""
|
|
58
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
@spawn
|
|
2
|
+
Feature: Run Cli::Main with existing Runtime
|
|
3
|
+
|
|
4
|
+
This is the API that Spork uses. It creates an existing runtime.
|
|
5
|
+
When the process forks, Spork them passes the runtime to Cli::Main to
|
|
6
|
+
run it.
|
|
7
|
+
|
|
8
|
+
Scenario: Run a single feature
|
|
9
|
+
Given the standard step definitions
|
|
10
|
+
Given a file named "features/success.feature" with:
|
|
11
|
+
"""
|
|
12
|
+
Feature:
|
|
13
|
+
Scenario:
|
|
14
|
+
Given this step passes
|
|
15
|
+
"""
|
|
16
|
+
When I run the following Ruby code:
|
|
17
|
+
"""
|
|
18
|
+
require 'cucumber'
|
|
19
|
+
runtime = Cucumber::Runtime.new
|
|
20
|
+
Cucumber::Cli::Main.new([]).execute!(runtime)
|
|
21
|
+
"""
|
|
22
|
+
Then it should pass
|
|
23
|
+
And the output should contain:
|
|
24
|
+
"""
|
|
25
|
+
Given this step passes
|
|
26
|
+
"""
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Backtraces
|
|
2
|
+
|
|
3
|
+
In order to discover errors quickly
|
|
4
|
+
As a cuker
|
|
5
|
+
I want to see backtraces for failures
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given a file named "features/failing_hard.feature" with:
|
|
9
|
+
"""
|
|
10
|
+
Feature: Sample
|
|
11
|
+
Scenario: Example
|
|
12
|
+
Given failing
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
@jruby
|
|
16
|
+
Scenario: Backtraces enabled
|
|
17
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
18
|
+
"""
|
|
19
|
+
require 'java'
|
|
20
|
+
java_import 'java.util.Collections'
|
|
21
|
+
|
|
22
|
+
Given /^failing$/ do
|
|
23
|
+
Collections.empty_list.add 1
|
|
24
|
+
end
|
|
25
|
+
"""
|
|
26
|
+
When I run `cucumber features/failing_hard.feature`
|
|
27
|
+
Then it should fail with:
|
|
28
|
+
"""
|
|
29
|
+
Feature: Sample
|
|
30
|
+
|
|
31
|
+
Scenario: Example # features/failing_hard.feature:2
|
|
32
|
+
Given failing # features/step_definitions/steps.rb:4
|
|
33
|
+
(Java::JavaLang::UnsupportedOperationException)
|
|
34
|
+
java.util.AbstractList.add(java/util/AbstractList.java:
|
|
35
|
+
"""
|
|
36
|
+
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
Feature: Dry Run
|
|
2
|
+
|
|
3
|
+
Dry run gives you a way to quickly scan your features without actually running them.
|
|
4
|
+
|
|
5
|
+
- Invokes formatters without executing the steps.
|
|
6
|
+
- This also omits the loading of your support/env.rb file if it exists.
|
|
7
|
+
|
|
8
|
+
Scenario: With a failing step
|
|
9
|
+
Given a file named "features/test.feature" with:
|
|
10
|
+
"""
|
|
11
|
+
Feature: test
|
|
12
|
+
Scenario:
|
|
13
|
+
Given this step fails
|
|
14
|
+
"""
|
|
15
|
+
And the standard step definitions
|
|
16
|
+
When I run `cucumber --dry-run`
|
|
17
|
+
Then it should pass with exactly:
|
|
18
|
+
"""
|
|
19
|
+
Feature: test
|
|
20
|
+
|
|
21
|
+
Scenario: # features/test.feature:2
|
|
22
|
+
Given this step fails # features/step_definitions/steps.rb:4
|
|
23
|
+
|
|
24
|
+
1 scenario (1 skipped)
|
|
25
|
+
1 step (1 skipped)
|
|
26
|
+
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
Scenario: In strict mode
|
|
30
|
+
Given a file named "features/test.feature" with:
|
|
31
|
+
"""
|
|
32
|
+
Feature: test
|
|
33
|
+
Scenario:
|
|
34
|
+
Given this step fails
|
|
35
|
+
"""
|
|
36
|
+
And the standard step definitions
|
|
37
|
+
When I run `cucumber --dry-run --strict`
|
|
38
|
+
Then it should pass with exactly:
|
|
39
|
+
"""
|
|
40
|
+
Feature: test
|
|
41
|
+
|
|
42
|
+
Scenario: # features/test.feature:2
|
|
43
|
+
Given this step fails # features/step_definitions/steps.rb:4
|
|
44
|
+
|
|
45
|
+
1 scenario (1 skipped)
|
|
46
|
+
1 step (1 skipped)
|
|
47
|
+
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
Scenario: In strict mode with an undefined step
|
|
51
|
+
Given a file named "features/test.feature" with:
|
|
52
|
+
"""
|
|
53
|
+
Feature: test
|
|
54
|
+
Scenario:
|
|
55
|
+
Given this step is undefined
|
|
56
|
+
"""
|
|
57
|
+
When I run `cucumber --dry-run --strict`
|
|
58
|
+
Then it should fail with:
|
|
59
|
+
"""
|
|
60
|
+
Feature: test
|
|
61
|
+
|
|
62
|
+
Scenario: # features/test.feature:2
|
|
63
|
+
Given this step is undefined # features/test.feature:3
|
|
64
|
+
Undefined step: "this step is undefined" (Cucumber::Undefined)
|
|
65
|
+
features/test.feature:3:in `Given this step is undefined'
|
|
66
|
+
|
|
67
|
+
1 scenario (1 undefined)
|
|
68
|
+
1 step (1 undefined)
|
|
69
|
+
|
|
70
|
+
"""
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Feature: Excluding ruby and feature files from runs
|
|
2
|
+
|
|
3
|
+
Developers are able to easily exclude files from cucumber runs
|
|
4
|
+
This is a nice feature to have in conjunction with profiles, so you can exclude
|
|
5
|
+
certain environment files from certain runs.
|
|
6
|
+
|
|
7
|
+
Scenario: exclude ruby files
|
|
8
|
+
Given an empty file named "features/support/dont_require_me.rb"
|
|
9
|
+
And an empty file named "features/step_definitions/fooz.rb"
|
|
10
|
+
And an empty file named "features/step_definitions/foof.rb"
|
|
11
|
+
And an empty file named "features/step_definitions/foot.rb"
|
|
12
|
+
And an empty file named "features/support/require_me.rb"
|
|
13
|
+
When I run `cucumber features -q --verbose --exclude features/support/dont --exclude foo[zf]`
|
|
14
|
+
Then "features/support/require_me.rb" should be required
|
|
15
|
+
And "features/step_definitions/foot.rb" should be required
|
|
16
|
+
And "features/support/dont_require_me.rb" should not be required
|
|
17
|
+
And "features/step_definitions/foof.rb" should not be required
|
|
18
|
+
And "features/step_definitions/fooz.rb" should not be required
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
Feature: Tag logic
|
|
2
|
+
In order to conveniently run subsets of features
|
|
3
|
+
As a Cuker
|
|
4
|
+
I want to select features using logical AND/OR of tags
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Given a file named "features/test.feature" with:
|
|
8
|
+
"""
|
|
9
|
+
@feature
|
|
10
|
+
Feature: Sample
|
|
11
|
+
|
|
12
|
+
@one @three
|
|
13
|
+
Scenario: Example
|
|
14
|
+
Given passing
|
|
15
|
+
|
|
16
|
+
@one
|
|
17
|
+
Scenario: Another Example
|
|
18
|
+
Given passing
|
|
19
|
+
|
|
20
|
+
@three
|
|
21
|
+
Scenario: Yet another Example
|
|
22
|
+
Given passing
|
|
23
|
+
|
|
24
|
+
@ignore
|
|
25
|
+
Scenario: And yet another Example
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
Scenario: ANDing tags
|
|
29
|
+
When I run `cucumber -q -t @one -t @three features/test.feature`
|
|
30
|
+
Then it should pass with:
|
|
31
|
+
"""
|
|
32
|
+
@feature
|
|
33
|
+
Feature: Sample
|
|
34
|
+
|
|
35
|
+
@one @three
|
|
36
|
+
Scenario: Example
|
|
37
|
+
Given passing
|
|
38
|
+
|
|
39
|
+
1 scenario (1 undefined)
|
|
40
|
+
1 step (1 undefined)
|
|
41
|
+
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
Scenario: ORing tags
|
|
45
|
+
When I run `cucumber -q -t @one,@three features/test.feature`
|
|
46
|
+
Then it should pass with:
|
|
47
|
+
"""
|
|
48
|
+
@feature
|
|
49
|
+
Feature: Sample
|
|
50
|
+
|
|
51
|
+
@one @three
|
|
52
|
+
Scenario: Example
|
|
53
|
+
Given passing
|
|
54
|
+
|
|
55
|
+
@one
|
|
56
|
+
Scenario: Another Example
|
|
57
|
+
Given passing
|
|
58
|
+
|
|
59
|
+
@three
|
|
60
|
+
Scenario: Yet another Example
|
|
61
|
+
Given passing
|
|
62
|
+
|
|
63
|
+
3 scenarios (3 undefined)
|
|
64
|
+
3 steps (3 undefined)
|
|
65
|
+
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
Scenario: Negative tags
|
|
69
|
+
When I run `cucumber -q -t ~@three features/test.feature`
|
|
70
|
+
Then it should pass with:
|
|
71
|
+
"""
|
|
72
|
+
@feature
|
|
73
|
+
Feature: Sample
|
|
74
|
+
|
|
75
|
+
@one
|
|
76
|
+
Scenario: Another Example
|
|
77
|
+
Given passing
|
|
78
|
+
|
|
79
|
+
@ignore
|
|
80
|
+
Scenario: And yet another Example
|
|
81
|
+
|
|
82
|
+
2 scenarios (1 undefined, 1 passed)
|
|
83
|
+
1 step (1 undefined)
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
Scenario: Run with limited tag count, blowing it on scenario
|
|
87
|
+
When I run `cucumber -q --no-source --tags @one:1 features/test.feature`
|
|
88
|
+
Then it fails before running features with:
|
|
89
|
+
"""
|
|
90
|
+
@one occurred 2 times, but the limit was set to 1
|
|
91
|
+
features/test.feature:5
|
|
92
|
+
features/test.feature:9
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
Scenario: Run with limited tag count, blowing it via feature inheritance
|
|
96
|
+
When I run `cucumber -q --no-source --tags @feature:1 features/test.feature`
|
|
97
|
+
Then it fails before running features with:
|
|
98
|
+
"""
|
|
99
|
+
@feature occurred 4 times, but the limit was set to 1
|
|
100
|
+
features/test.feature:5
|
|
101
|
+
features/test.feature:9
|
|
102
|
+
features/test.feature:13
|
|
103
|
+
features/test.feature:17
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
Scenario: Run with limited tag count using negative tag, blowing it via a tag that is not run
|
|
107
|
+
When I run `cucumber -q --no-source --tags ~@one:1 features/test.feature`
|
|
108
|
+
Then it fails before running features with:
|
|
109
|
+
"""
|
|
110
|
+
@one occurred 2 times, but the limit was set to 1
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
Scenario: Limiting with tags which do not exist in the features
|
|
114
|
+
Originally added to check [Lighthouse bug #464](https://rspec.lighthouseapp.com/projects/16211/tickets/464).
|
|
115
|
+
|
|
116
|
+
When I run `cucumber -q -t @i_dont_exist features/test.feature`
|
|
117
|
+
Then it should pass
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
@spawn
|
|
2
|
+
Feature: Fail fast
|
|
3
|
+
|
|
4
|
+
The --fail-fast flag causes Cucumber to exit immediately after the first
|
|
5
|
+
scenario fails.
|
|
6
|
+
|
|
7
|
+
Scenario: When a scenario fails
|
|
8
|
+
Given a file named "features/bad.feature" with:
|
|
9
|
+
"""
|
|
10
|
+
Feature: Bad
|
|
11
|
+
Scenario: Failing
|
|
12
|
+
Given this step fails
|
|
13
|
+
"""
|
|
14
|
+
And a file named "features/good.feature" with:
|
|
15
|
+
"""
|
|
16
|
+
Feature: Good
|
|
17
|
+
Scenario: Passing
|
|
18
|
+
Given this step passes
|
|
19
|
+
"""
|
|
20
|
+
And the standard step definitions
|
|
21
|
+
When I run `cucumber --fail-fast`
|
|
22
|
+
Then it should fail
|
|
23
|
+
And the output should contain:
|
|
24
|
+
"""
|
|
25
|
+
1 scenario (1 failed)
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
Scenario: When all the scenarios pass
|
|
29
|
+
Given a file named "features/first.feature" with:
|
|
30
|
+
"""
|
|
31
|
+
Feature: first feature
|
|
32
|
+
Scenario: foo first
|
|
33
|
+
Given this step passes
|
|
34
|
+
Scenario: bar first
|
|
35
|
+
Given this step passes
|
|
36
|
+
"""
|
|
37
|
+
And a file named "features/second.feature" with:
|
|
38
|
+
"""
|
|
39
|
+
Feature: second
|
|
40
|
+
Scenario: foo second
|
|
41
|
+
Given this step passes
|
|
42
|
+
Scenario: bar second
|
|
43
|
+
Given this step passes
|
|
44
|
+
"""
|
|
45
|
+
When I run `cucumber --fail-fast`
|
|
46
|
+
Then it should pass
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Feature: Loading the steps users expect
|
|
2
|
+
As a User
|
|
3
|
+
In order to run features in subdirectories without having to pass extra options
|
|
4
|
+
I want cucumber to load all step files
|
|
5
|
+
|
|
6
|
+
Scenario:
|
|
7
|
+
Given a file named "features/nesting/test.feature" with:
|
|
8
|
+
"""
|
|
9
|
+
Feature: Feature in Subdirectory
|
|
10
|
+
Scenario: A step not in the subdirectory
|
|
11
|
+
Given not found in subdirectory
|
|
12
|
+
"""
|
|
13
|
+
And a file named "features/step_definitions/steps_no_in_subdirectory.rb" with:
|
|
14
|
+
"""
|
|
15
|
+
Given(/^not found in subdirectory$/) { }
|
|
16
|
+
"""
|
|
17
|
+
When I run `cucumber -q features/nesting/test.feature`
|
|
18
|
+
Then it should pass with:
|
|
19
|
+
"""
|
|
20
|
+
Feature: Feature in Subdirectory
|
|
21
|
+
|
|
22
|
+
Scenario: A step not in the subdirectory
|
|
23
|
+
Given not found in subdirectory
|
|
24
|
+
|
|
25
|
+
1 scenario (1 passed)
|
|
26
|
+
1 step (1 passed)
|
|
27
|
+
"""
|
|
28
|
+
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
Feature: Randomize
|
|
2
|
+
|
|
3
|
+
Use the `--order random` switch to run scenarios in random order.
|
|
4
|
+
|
|
5
|
+
This is especially helpful for detecting situations where you have state
|
|
6
|
+
leaking between scenarios, which can cause flickering or fragile tests.
|
|
7
|
+
|
|
8
|
+
If you do find a random run that exposes dependencies between your tests,
|
|
9
|
+
you can reproduce that run by using the seed that's printed at the end of
|
|
10
|
+
the test run.
|
|
11
|
+
|
|
12
|
+
For a given seed, the order of scenarios is constant, i.e. if step A runs
|
|
13
|
+
before step B, it will always run before step B even if other steps are
|
|
14
|
+
skipped.
|
|
15
|
+
|
|
16
|
+
Background:
|
|
17
|
+
Given a file named "features/bad_practice_part_1.feature" with:
|
|
18
|
+
"""
|
|
19
|
+
Feature: Bad practice, part 1
|
|
20
|
+
|
|
21
|
+
Scenario: Set state
|
|
22
|
+
Given I set some state
|
|
23
|
+
|
|
24
|
+
Scenario: Depend on state from a preceding scenario
|
|
25
|
+
When I depend on the state
|
|
26
|
+
"""
|
|
27
|
+
And a file named "features/bad_practice_part_2.feature" with:
|
|
28
|
+
"""
|
|
29
|
+
Feature: Bad practice, part 2
|
|
30
|
+
|
|
31
|
+
Scenario: Depend on state from a preceding feature
|
|
32
|
+
When I depend on the state
|
|
33
|
+
"""
|
|
34
|
+
And a file named "features/unrelated.feature" with:
|
|
35
|
+
"""
|
|
36
|
+
Feature: Unrelated
|
|
37
|
+
|
|
38
|
+
@skipme
|
|
39
|
+
Scenario: Do something unrelated
|
|
40
|
+
When I do something
|
|
41
|
+
"""
|
|
42
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
43
|
+
"""
|
|
44
|
+
Given(/^I set some state$/) do
|
|
45
|
+
$global_state = "set"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
Given(/^I depend on the state$/) do
|
|
49
|
+
raise "I expect the state to be set!" unless $global_state == "set"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
Given(/^I do something$/) do
|
|
53
|
+
end
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
Scenario: Run scenarios in order
|
|
57
|
+
When I run `cucumber`
|
|
58
|
+
Then it should pass
|
|
59
|
+
|
|
60
|
+
@spawn
|
|
61
|
+
Scenario: Run scenarios randomized
|
|
62
|
+
When I run `cucumber --order random:41544 -q`
|
|
63
|
+
Then it should fail
|
|
64
|
+
And the stdout should contain exactly:
|
|
65
|
+
"""
|
|
66
|
+
Feature: Bad practice, part 1
|
|
67
|
+
|
|
68
|
+
Scenario: Depend on state from a preceding scenario
|
|
69
|
+
When I depend on the state
|
|
70
|
+
I expect the state to be set! (RuntimeError)
|
|
71
|
+
./features/step_definitions/steps.rb:6:in `/^I depend on the state$/'
|
|
72
|
+
features/bad_practice_part_1.feature:7:in `When I depend on the state'
|
|
73
|
+
|
|
74
|
+
Feature: Unrelated
|
|
75
|
+
|
|
76
|
+
@skipme
|
|
77
|
+
Scenario: Do something unrelated
|
|
78
|
+
When I do something
|
|
79
|
+
|
|
80
|
+
Feature: Bad practice, part 2
|
|
81
|
+
|
|
82
|
+
Scenario: Depend on state from a preceding feature
|
|
83
|
+
When I depend on the state
|
|
84
|
+
I expect the state to be set! (RuntimeError)
|
|
85
|
+
./features/step_definitions/steps.rb:6:in `/^I depend on the state$/'
|
|
86
|
+
features/bad_practice_part_2.feature:4:in `When I depend on the state'
|
|
87
|
+
|
|
88
|
+
Feature: Bad practice, part 1
|
|
89
|
+
|
|
90
|
+
Scenario: Set state
|
|
91
|
+
Given I set some state
|
|
92
|
+
|
|
93
|
+
Failing Scenarios:
|
|
94
|
+
cucumber features/bad_practice_part_1.feature:6
|
|
95
|
+
cucumber features/bad_practice_part_2.feature:3
|
|
96
|
+
|
|
97
|
+
4 scenarios (2 failed, 2 passed)
|
|
98
|
+
4 steps (2 failed, 2 passed)
|
|
99
|
+
|
|
100
|
+
Randomized with seed 41544
|
|
101
|
+
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
@spawn
|
|
105
|
+
Scenario: Run scenarios randomized with some skipped
|
|
106
|
+
When I run `cucumber --tags ~@skipme --order random:41544 -q`
|
|
107
|
+
Then it should fail
|
|
108
|
+
And the stdout should contain exactly:
|
|
109
|
+
"""
|
|
110
|
+
Feature: Bad practice, part 1
|
|
111
|
+
|
|
112
|
+
Scenario: Depend on state from a preceding scenario
|
|
113
|
+
When I depend on the state
|
|
114
|
+
I expect the state to be set! (RuntimeError)
|
|
115
|
+
./features/step_definitions/steps.rb:6:in `/^I depend on the state$/'
|
|
116
|
+
features/bad_practice_part_1.feature:7:in `When I depend on the state'
|
|
117
|
+
|
|
118
|
+
Feature: Bad practice, part 2
|
|
119
|
+
|
|
120
|
+
Scenario: Depend on state from a preceding feature
|
|
121
|
+
When I depend on the state
|
|
122
|
+
I expect the state to be set! (RuntimeError)
|
|
123
|
+
./features/step_definitions/steps.rb:6:in `/^I depend on the state$/'
|
|
124
|
+
features/bad_practice_part_2.feature:4:in `When I depend on the state'
|
|
125
|
+
|
|
126
|
+
Feature: Bad practice, part 1
|
|
127
|
+
|
|
128
|
+
Scenario: Set state
|
|
129
|
+
Given I set some state
|
|
130
|
+
|
|
131
|
+
Failing Scenarios:
|
|
132
|
+
cucumber features/bad_practice_part_1.feature:6
|
|
133
|
+
cucumber features/bad_practice_part_2.feature:3
|
|
134
|
+
|
|
135
|
+
3 scenarios (2 failed, 1 passed)
|
|
136
|
+
3 steps (2 failed, 1 passed)
|
|
137
|
+
|
|
138
|
+
Randomized with seed 41544
|
|
139
|
+
|
|
140
|
+
"""
|