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,61 @@
|
|
|
1
|
+
@spawn
|
|
2
|
+
Feature: Hooks execute in defined order
|
|
3
|
+
|
|
4
|
+
Background:
|
|
5
|
+
Given a file named "features/step_definitions/steps.rb" with:
|
|
6
|
+
"""
|
|
7
|
+
Given /^background step$/ do; $EventOrder.push(:background_step) end
|
|
8
|
+
Given /^scenario step$/ do; $EventOrder.push(:scenario_step) end
|
|
9
|
+
"""
|
|
10
|
+
And a file named "features/support/hooks.rb" with:
|
|
11
|
+
"""
|
|
12
|
+
$EventOrder = []
|
|
13
|
+
Around('@around') do |scenario,block|
|
|
14
|
+
$EventOrder.push :around_begin
|
|
15
|
+
block.call
|
|
16
|
+
$EventOrder.push :around_end
|
|
17
|
+
end
|
|
18
|
+
Before('@before') do
|
|
19
|
+
$EventOrder.push :before
|
|
20
|
+
end
|
|
21
|
+
After('@after') do |scenario|
|
|
22
|
+
$EventOrder.push :after
|
|
23
|
+
end
|
|
24
|
+
at_exit {
|
|
25
|
+
puts "Event order: #{$EventOrder.join(' ')}"
|
|
26
|
+
}
|
|
27
|
+
"""
|
|
28
|
+
And a file named "features/around_hook_covers_background.feature" with:
|
|
29
|
+
"""
|
|
30
|
+
@around
|
|
31
|
+
Feature: Around hooks cover background steps
|
|
32
|
+
Background:
|
|
33
|
+
Given background step
|
|
34
|
+
Scenario:
|
|
35
|
+
Given scenario step
|
|
36
|
+
"""
|
|
37
|
+
And a file named "features/all_hook_order.feature" with:
|
|
38
|
+
"""
|
|
39
|
+
@around
|
|
40
|
+
@before
|
|
41
|
+
@after
|
|
42
|
+
Feature: All hooks execute in expected order
|
|
43
|
+
Background:
|
|
44
|
+
Given background step
|
|
45
|
+
Scenario:
|
|
46
|
+
Given scenario step
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
Scenario: Around hooks cover background steps
|
|
50
|
+
When I run `cucumber -o /dev/null features/around_hook_covers_background.feature`
|
|
51
|
+
Then the output should contain:
|
|
52
|
+
"""
|
|
53
|
+
Event order: around_begin background_step scenario_step around_end
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
Scenario: All hooks execute in expected order
|
|
57
|
+
When I run `cucumber -o /dev/null features/all_hook_order.feature`
|
|
58
|
+
Then the output should contain:
|
|
59
|
+
"""
|
|
60
|
+
Event order: around_begin before background_step scenario_step after around_end
|
|
61
|
+
"""
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Feature: Set up a default load path
|
|
2
|
+
|
|
3
|
+
When you're developing a gem, it's convenient if your project's `lib` directory
|
|
4
|
+
is already in the load path. Cucumber does this for you.
|
|
5
|
+
|
|
6
|
+
Scenario: ./lib is included in the $LOAD_PATH
|
|
7
|
+
Given a file named "features/support/env.rb" with:
|
|
8
|
+
"""
|
|
9
|
+
require 'something'
|
|
10
|
+
"""
|
|
11
|
+
And a file named "lib/something.rb" with:
|
|
12
|
+
"""
|
|
13
|
+
class Something
|
|
14
|
+
end
|
|
15
|
+
"""
|
|
16
|
+
When I run `cucumber`
|
|
17
|
+
Then it should pass
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Feature: State
|
|
2
|
+
|
|
3
|
+
You can pass state between step by setting instance variables,
|
|
4
|
+
but those instance variables will be gone when the next scenario runs.
|
|
5
|
+
|
|
6
|
+
Scenario: Set an ivar in one scenario, use it in the next step
|
|
7
|
+
Given a file named "features/test.feature" with:
|
|
8
|
+
"""
|
|
9
|
+
Feature:
|
|
10
|
+
Scenario:
|
|
11
|
+
Given I have set @flag = true
|
|
12
|
+
Then @flag should be true
|
|
13
|
+
|
|
14
|
+
Scenario:
|
|
15
|
+
Then @flag should be nil
|
|
16
|
+
"""
|
|
17
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
18
|
+
"""
|
|
19
|
+
Given /set @flag/ do
|
|
20
|
+
@flag = true
|
|
21
|
+
end
|
|
22
|
+
Then /flag should be true/ do
|
|
23
|
+
expect(@flag).to be_truthy
|
|
24
|
+
end
|
|
25
|
+
Then /flag should be nil/ do
|
|
26
|
+
expect(@flag).to be_nil
|
|
27
|
+
end
|
|
28
|
+
"""
|
|
29
|
+
When I run `cucumber`
|
|
30
|
+
Then it should pass
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Feature: Tagged hooks
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given the standard step definitions
|
|
5
|
+
And a file named "features/support/hooks.rb" with:
|
|
6
|
+
"""
|
|
7
|
+
Before('~@no-boom') do
|
|
8
|
+
raise 'boom'
|
|
9
|
+
end
|
|
10
|
+
"""
|
|
11
|
+
And a file named "features/f.feature" with:
|
|
12
|
+
"""
|
|
13
|
+
Feature: With and without hooks
|
|
14
|
+
Scenario: using hook
|
|
15
|
+
Given this step passes
|
|
16
|
+
|
|
17
|
+
@no-boom
|
|
18
|
+
Scenario: omitting hook
|
|
19
|
+
Given this step passes
|
|
20
|
+
|
|
21
|
+
Scenario Outline: omitting hook on specified examples
|
|
22
|
+
Given this step passes
|
|
23
|
+
|
|
24
|
+
Examples:
|
|
25
|
+
| Value |
|
|
26
|
+
| Irrelevant |
|
|
27
|
+
|
|
28
|
+
@no-boom
|
|
29
|
+
Examples:
|
|
30
|
+
| Value |
|
|
31
|
+
| Also Irrelevant |
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
Scenario: omit tagged hook
|
|
35
|
+
When I run `cucumber features/f.feature:2`
|
|
36
|
+
Then it should fail with exactly:
|
|
37
|
+
"""
|
|
38
|
+
Feature: With and without hooks
|
|
39
|
+
|
|
40
|
+
Scenario: using hook # features/f.feature:2
|
|
41
|
+
boom (RuntimeError)
|
|
42
|
+
./features/support/hooks.rb:2:in `Before'
|
|
43
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
44
|
+
|
|
45
|
+
Failing Scenarios:
|
|
46
|
+
cucumber features/f.feature:2 # Scenario: using hook
|
|
47
|
+
|
|
48
|
+
1 scenario (1 failed)
|
|
49
|
+
1 step (1 skipped)
|
|
50
|
+
0m0.012s
|
|
51
|
+
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
Scenario: omit tagged hook
|
|
55
|
+
When I run `cucumber features/f.feature:6`
|
|
56
|
+
Then it should pass with exactly:
|
|
57
|
+
"""
|
|
58
|
+
Feature: With and without hooks
|
|
59
|
+
|
|
60
|
+
@no-boom
|
|
61
|
+
Scenario: omitting hook # features/f.feature:6
|
|
62
|
+
Given this step passes # features/step_definitions/steps.rb:1
|
|
63
|
+
|
|
64
|
+
1 scenario (1 passed)
|
|
65
|
+
1 step (1 passed)
|
|
66
|
+
0m0.012s
|
|
67
|
+
|
|
68
|
+
"""
|
|
69
|
+
Scenario: Omit example hook
|
|
70
|
+
When I run `cucumber features/f.feature:12`
|
|
71
|
+
Then it should fail with exactly:
|
|
72
|
+
"""
|
|
73
|
+
Feature: With and without hooks
|
|
74
|
+
|
|
75
|
+
Scenario Outline: omitting hook on specified examples # features/f.feature:9
|
|
76
|
+
Given this step passes # features/f.feature:10
|
|
77
|
+
|
|
78
|
+
Examples:
|
|
79
|
+
| Value |
|
|
80
|
+
boom (RuntimeError)
|
|
81
|
+
./features/support/hooks.rb:2:in `Before'
|
|
82
|
+
| Irrelevant |
|
|
83
|
+
|
|
84
|
+
Failing Scenarios:
|
|
85
|
+
cucumber features/f.feature:14 # Scenario Outline: omitting hook on specified examples, Examples (#1)
|
|
86
|
+
|
|
87
|
+
1 scenario (1 failed)
|
|
88
|
+
1 step (1 skipped)
|
|
89
|
+
0m0.012s
|
|
90
|
+
|
|
91
|
+
"""
|
|
92
|
+
Scenario:
|
|
93
|
+
When I run `cucumber features/f.feature:17`
|
|
94
|
+
Then it should pass
|
|
95
|
+
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
Feature: Transforms
|
|
2
|
+
|
|
3
|
+
Transforms allow you to convert primitive string arguments captured in step definitions
|
|
4
|
+
into more meaningful data types.
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Let's just create a simple feature for testing out Transforms.
|
|
8
|
+
We also have a Person class that we need to be able to build.
|
|
9
|
+
|
|
10
|
+
Given a file named "features/foo.feature" with:
|
|
11
|
+
"""
|
|
12
|
+
Feature:
|
|
13
|
+
Scenario:
|
|
14
|
+
Given a Person aged 15 with blonde hair
|
|
15
|
+
"""
|
|
16
|
+
And a file named "features/support/person.rb" with:
|
|
17
|
+
"""
|
|
18
|
+
class Person
|
|
19
|
+
attr_accessor :age
|
|
20
|
+
|
|
21
|
+
def to_s
|
|
22
|
+
"I am #{age} years old"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
Scenario: Basic Transform
|
|
28
|
+
This is the most basic way to use a transform. Notice that the regular
|
|
29
|
+
expression is pretty much duplicated between the step defintion and the
|
|
30
|
+
transform itself.
|
|
31
|
+
|
|
32
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
33
|
+
"""
|
|
34
|
+
Transform(/a Person aged (\d+)/) do |age|
|
|
35
|
+
person = Person.new
|
|
36
|
+
person.age = age.to_i
|
|
37
|
+
person
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
Given /^(a Person aged \d+) with blonde hair$/ do |person|
|
|
41
|
+
expect(person.age).to eq 15
|
|
42
|
+
end
|
|
43
|
+
"""
|
|
44
|
+
When I run `cucumber features/foo.feature`
|
|
45
|
+
Then it should pass
|
|
46
|
+
|
|
47
|
+
Scenario: Re-use Transform's Regular Expression
|
|
48
|
+
If you keep a reference to the transform, you can use it in your
|
|
49
|
+
regular expressions to avoid repeating the regular expression.
|
|
50
|
+
|
|
51
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
52
|
+
"""
|
|
53
|
+
A_PERSON = Transform(/a Person aged (\d+)/) do |age|
|
|
54
|
+
person = Person.new
|
|
55
|
+
person.age = age.to_i
|
|
56
|
+
person
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
Given /^(#{A_PERSON}) with blonde hair$/ do |person|
|
|
60
|
+
expect(person.age).to eq 15
|
|
61
|
+
end
|
|
62
|
+
"""
|
|
63
|
+
When I run `cucumber features/foo.feature`
|
|
64
|
+
Then it should pass
|
|
65
|
+
|
|
66
|
+
Scenario: Use Transform from code
|
|
67
|
+
You can also call the `Transform` method from within a step definition to
|
|
68
|
+
dynamically run a tranform.
|
|
69
|
+
|
|
70
|
+
Note that this is rather useless at present, unless the transform itself has a side-effect, since the `Transform`
|
|
71
|
+
function still returns the regular expression pattern.
|
|
72
|
+
|
|
73
|
+
Given a file named "features/people.feature" with:
|
|
74
|
+
"""
|
|
75
|
+
Feature:
|
|
76
|
+
Scenario:
|
|
77
|
+
Given people with these ages:
|
|
78
|
+
| name | age |
|
|
79
|
+
| sue | 25 |
|
|
80
|
+
| sally | 77 |
|
|
81
|
+
"""
|
|
82
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
83
|
+
"""
|
|
84
|
+
Transform(/a Person aged (\d+)/) do |age|
|
|
85
|
+
$person = Person.new
|
|
86
|
+
$person.age = age.to_i
|
|
87
|
+
$person
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
Given(/^people with these ages:$/) do |table|
|
|
91
|
+
table.rows.each do |name, age|
|
|
92
|
+
Transform("a Person aged #{age}")
|
|
93
|
+
expect($person.age).to eq age.to_i
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
"""
|
|
97
|
+
When I run `cucumber features/people.feature`
|
|
98
|
+
Then it should pass
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Given('a Gemfile with:') do |content|
|
|
2
|
+
path = File.expand_path(current_dir + "/Gemfile")
|
|
3
|
+
write_file path, content
|
|
4
|
+
set_env "BUNDLE_GEMFILE", path
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Then(/^it should (pass|fail)$/) do |result|
|
|
8
|
+
assert_success result == 'pass'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Then(/^"([^"]*)" should not be required$/) do |file_name|
|
|
12
|
+
expect(all_output).not_to include("* #{file_name}")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Then(/^"([^"]*)" should be required$/) do |file_name|
|
|
16
|
+
expect(all_output).to include("* #{file_name}")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
Then /^it fails before running features with:$/ do |expected|
|
|
20
|
+
assert_matching_output("\\A#{expected}", all_output)
|
|
21
|
+
assert_success(false)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
Then(/^the output includes the message "(.*)"$/) do |message|
|
|
25
|
+
expect(all_output).to include(message)
|
|
26
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
Given /^a directory without standard Cucumber project directory structure$/ do
|
|
2
|
+
in_current_dir do
|
|
3
|
+
FileUtils.rm_rf 'features' if File.directory?('features')
|
|
4
|
+
end
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Given /^a scenario with a step that looks like this:$/ do |string|
|
|
8
|
+
create_feature do
|
|
9
|
+
create_scenario { string }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Given(/^a scenario with a step that looks like this in japanese:$/) do |string|
|
|
14
|
+
create_feature_ja do
|
|
15
|
+
create_scenario_ja { string }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
Given(/^the standard step definitions$/) do
|
|
20
|
+
write_file 'features/step_definitions/steps.rb',
|
|
21
|
+
|
|
22
|
+
<<-STEPS
|
|
23
|
+
Given(/^this step passes$/) { }
|
|
24
|
+
Given(/^this step raises an error$/) { raise 'error' }
|
|
25
|
+
Given(/^this step is pending$/) { pending }
|
|
26
|
+
Given(/^this step fails$/) { fail }
|
|
27
|
+
Given(/^this step is a table step$/) {|t| }
|
|
28
|
+
STEPS
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Given /^a step definition that looks like this:$/ do |string|
|
|
32
|
+
create_step_definition { string }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
Given /^a scenario "([^\"]*)" that passes$/ do |name|
|
|
36
|
+
write_file "features/#{name}.feature",
|
|
37
|
+
<<-FEATURE
|
|
38
|
+
Feature: #{name}
|
|
39
|
+
Scenario: #{name}
|
|
40
|
+
Given it passes
|
|
41
|
+
FEATURE
|
|
42
|
+
|
|
43
|
+
write_file "features/step_definitions/#{name}_steps.rb",
|
|
44
|
+
<<-STEPS
|
|
45
|
+
Given(/^it passes$/) { expect(true).to be true }
|
|
46
|
+
STEPS
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
Given /^a scenario "([^\"]*)" that fails$/ do |name|
|
|
50
|
+
write_file "features/#{name}.feature",
|
|
51
|
+
<<-FEATURE
|
|
52
|
+
Feature: #{name}
|
|
53
|
+
Scenario: #{name}
|
|
54
|
+
Given it fails
|
|
55
|
+
FEATURE
|
|
56
|
+
|
|
57
|
+
write_file "features/step_definitions/#{name}_steps.rb",
|
|
58
|
+
<<-STEPS
|
|
59
|
+
Given(/^it fails$/) { expect(false).to be true }
|
|
60
|
+
STEPS
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
When /^I run the feature with the (\w+) formatter$/ do |formatter|
|
|
64
|
+
expect(features.length).to eq 1
|
|
65
|
+
run_feature features.first, formatter
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
Then /^the stderr should contain a warning message$/ do
|
|
69
|
+
expect(all_stderr).to include("[warning]")
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
module CucumberHelper
|
|
73
|
+
def run_feature(filename = 'features/a_feature.feature', formatter = 'progress')
|
|
74
|
+
run_simple "#{Cucumber::BINARY} #{filename} --format #{formatter}", false
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
World(CucumberHelper)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: iso-8859-1
|
|
2
|
+
# Ideally we would use Norwegian keywords here, but that won't work unless this file is UTF-8 encoded.
|
|
3
|
+
# Alternatively it would be possible to use Norwegian keywords and encode the file as UTF-8.
|
|
4
|
+
#
|
|
5
|
+
# In both cases, stepdef arguments will be sent in as UTF-8, regardless of what encoding is used.
|
|
6
|
+
Given /^jeg drikker en "([^"]*)"$/ do |drink|
|
|
7
|
+
expect(drink).to eq '�l'.encode('UTF-8')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
When /^skal de andre si "([^"]*)"$/ do |greeting|
|
|
11
|
+
expect(greeting).to eq 'sk�l'.encode('UTF-8')
|
|
12
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Then(/^the junit output file "(.*?)" should contain:$/) do |actual_file, text|
|
|
2
|
+
actual = IO.read(current_dir + '/' + actual_file)
|
|
3
|
+
actual = replace_junit_time(actual)
|
|
4
|
+
expect(actual).to eq text
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
module JUnitHelper
|
|
8
|
+
def replace_junit_time(s)
|
|
9
|
+
s.gsub(/\d+\.\d\d+/m, '0.05')
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
World(JUnitHelper)
|