casecumber 1.0.2.1
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.
- data/.gitattributes +1 -0
- data/.gitignore +26 -0
- data/.gitmodules +3 -0
- data/.rspec +1 -0
- data/.travis.yml +7 -0
- data/.yardopts +0 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +115 -0
- data/History.md +1702 -0
- data/LICENSE +22 -0
- data/README.md +25 -0
- data/Rakefile +12 -0
- data/bin/cucumber +22 -0
- data/cucumber.gemspec +60 -0
- data/cucumber.yml +20 -0
- data/examples/i18n/README.textile +18 -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_definitons/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_definitons/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_definitons/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/da/Rakefile +6 -0
- data/examples/i18n/da/features/sammenlaegning.feature +18 -0
- data/examples/i18n/da/features/step_definitons/lommeregner_steps.rb +24 -0
- data/examples/i18n/da/lib/lommeregner.rb +11 -0
- data/examples/i18n/de/.gitignore +1 -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_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/de/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/.gitignore +1 -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_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/en/lib/calculator.rb +14 -0
- data/examples/i18n/eo/.gitignore +1 -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_definitons/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_definitons/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/.gitignore +1 -0
- data/examples/i18n/fi/Rakefile +6 -0
- data/examples/i18n/fi/features/jakolasku.feature +10 -0
- data/examples/i18n/fi/features/step_definitons/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 +6 -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_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/he/lib/calculator.rb +15 -0
- data/examples/i18n/hu/.gitignore +1 -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_definitons/calculator_steps.rb +25 -0
- data/examples/i18n/hu/lib/calculator.rb +14 -0
- data/examples/i18n/id/.gitignore +1 -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_definitons/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_definitons/calcolatrice_steps.rb +24 -0
- data/examples/i18n/it/lib/calcolatrice.rb +11 -0
- data/examples/i18n/ja/.gitignore +1 -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_definitons/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/.gitignore +1 -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_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/ko/lib/calculator.rb +14 -0
- data/examples/i18n/lt/.gitignore +1 -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_definitons/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_definitons/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_definitons/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/.gitignore +1 -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_definitons/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_definitons/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_definitons/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/.gitignore +1 -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_definitons/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_definitons/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_definitons/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_definitons/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/.gitignore +1 -0
- data/examples/i18n/tr/Rakefile +6 -0
- data/examples/i18n/tr/features/bolme.feature +10 -0
- data/examples/i18n/tr/features/step_definitons/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_definitons/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_definitons/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_definitons/calculator_steps.rb +26 -0
- data/examples/i18n/zh-CN/lib/calculator.rb +10 -0
- data/examples/i18n/zh-TW/.gitignore +1 -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_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/zh-TW/lib/calculator.rb +14 -0
- data/examples/python/README.textile +7 -0
- data/examples/python/Rakefile +4 -0
- data/examples/python/features/fibonacci.feature +19 -0
- data/examples/python/features/step_definitions/fib_steps.py +11 -0
- data/examples/python/lib/.gitignore +1 -0
- data/examples/python/lib/fib.py +7 -0
- data/examples/ramaze/README.textile +7 -0
- data/examples/ramaze/Rakefile +6 -0
- data/examples/ramaze/app.rb +21 -0
- data/examples/ramaze/features/add.feature +11 -0
- data/examples/ramaze/features/step_definitions/add_steps.rb +15 -0
- data/examples/ramaze/features/support/env.rb +32 -0
- data/examples/ramaze/layout/default.html.erb +8 -0
- data/examples/ramaze/view/index.html.erb +5 -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/ruby2python/README.textile +7 -0
- data/examples/ruby2python/Rakefile +4 -0
- data/examples/ruby2python/features/fibonacci.feature +19 -0
- data/examples/ruby2python/features/step_definitions/fib_steps.rb +7 -0
- data/examples/ruby2python/features/support/env.rb +21 -0
- data/examples/ruby2python/lib/.gitignore +1 -0
- data/examples/ruby2python/lib/fib.py +7 -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/Rakefile +6 -0
- data/examples/test_unit/features/step_definitions/test_unit_steps.rb +23 -0
- data/examples/test_unit/features/test_unit.feature +9 -0
- data/examples/v8/Rakefile +6 -0
- data/examples/v8/features/fibonacci.feature +43 -0
- data/examples/v8/features/step_definitions/fib_steps.js +49 -0
- data/examples/v8/features/support/env.js +14 -0
- data/examples/v8/lib/fibonacci.js +19 -0
- data/examples/watir/.gitignore +2 -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 +32 -0
- data/examples/watir/features/support/screenshots.rb +47 -0
- data/features/background.feature +498 -0
- data/features/bootstrap.feature +13 -0
- data/features/custom_formatter.feature +41 -0
- data/features/execute_with_tag_filter.feature +63 -0
- data/features/hooks.feature +59 -0
- data/features/iso-8859-1.feature +6 -0
- data/features/json_formatter.feature +248 -0
- data/features/stats_formatters.feature +70 -0
- data/features/step_definitions/cucumber-features/cucumber_ruby_mappings.rb +168 -0
- data/features/step_definitions/cucumber_steps.rb +23 -0
- data/features/step_definitions/iso-8859-1_steps.rb +24 -0
- data/features/support/env.rb +26 -0
- data/features/tagged_hooks.feature +217 -0
- data/features/transforms.feature +63 -0
- data/fixtures/json/features/background.feature +7 -0
- data/fixtures/json/features/embed.feature +4 -0
- data/fixtures/json/features/one_passing_one_failing.feature +11 -0
- data/fixtures/json/features/step_definitions/steps.rb +32 -0
- data/fixtures/json/features/tables.feature +13 -0
- data/fixtures/junit/features/one_passing_one_failing.feature +8 -0
- data/fixtures/junit/features/pending.feature +7 -0
- data/fixtures/junit/features/scenario_outline.feature +9 -0
- data/fixtures/junit/features/some_subdirectory/one_passing_one_failing.feature +8 -0
- data/fixtures/junit/features/step_definitions/steps.rb +11 -0
- data/fixtures/self_test/.gitignore +1 -0
- data/fixtures/self_test/README.textile +6 -0
- data/fixtures/self_test/Rakefile +6 -0
- data/fixtures/self_test/features/call_undefined_step_from_step_def.feature +7 -0
- data/fixtures/self_test/features/failing_expectation.feature +4 -0
- data/fixtures/self_test/features/lots_of_undefined.feature +8 -0
- data/fixtures/self_test/features/multiline_name.feature +27 -0
- data/fixtures/self_test/features/outline_sample.feature +15 -0
- data/fixtures/self_test/features/sample.feature +21 -0
- data/fixtures/self_test/features/search_sample.feature +32 -0
- data/fixtures/self_test/features/step_definitions/sample_steps.rb +84 -0
- data/fixtures/self_test/features/support/bubble_256x256.png +0 -0
- data/fixtures/self_test/features/support/env.rb +26 -0
- data/fixtures/self_test/features/tags_sample.feature +17 -0
- data/fixtures/self_test/features/tons_of_cukes.feature +52 -0
- data/fixtures/self_test/features/undefined_multiline_args.feature +12 -0
- data/fixtures/self_test/list-of-features.txt +1 -0
- data/fixtures/steps_library/features/step_definitions/steps_lib1.rb +8 -0
- data/fixtures/steps_library/features/step_definitions/steps_lib2.rb +8 -0
- data/fixtures/tickets/Rakefile +20 -0
- data/fixtures/tickets/features.html +138 -0
- data/fixtures/tickets/features/172.feature +28 -0
- data/fixtures/tickets/features/177/1.feature +28 -0
- data/fixtures/tickets/features/177/2.feature +20 -0
- data/fixtures/tickets/features/177/3.feature +18 -0
- data/fixtures/tickets/features/180.feature +7 -0
- data/fixtures/tickets/features/229/tagged_hooks.feature +8 -0
- data/fixtures/tickets/features/229/tagged_hooks.rb +14 -0
- data/fixtures/tickets/features/236.feature +13 -0
- data/fixtures/tickets/features/241.feature +12 -0
- data/fixtures/tickets/features/246.feature +4 -0
- data/fixtures/tickets/features/248.feature +11 -0
- data/fixtures/tickets/features/270/back.feature +14 -0
- data/fixtures/tickets/features/270/back.steps.rb +14 -0
- data/fixtures/tickets/features/272/hooks.feature +26 -0
- data/fixtures/tickets/features/272/hooks_steps.rb +53 -0
- data/fixtures/tickets/features/279/py_string_indent.feature +25 -0
- data/fixtures/tickets/features/279/py_string_indent.steps.rb +12 -0
- data/fixtures/tickets/features/279/wrong.feature_ +11 -0
- data/fixtures/tickets/features/301/filter_background_tagged_hooks.feature +6 -0
- data/fixtures/tickets/features/301/filter_background_tagged_hooks_steps.rb +12 -0
- data/fixtures/tickets/features/306/only_background.feature +4 -0
- data/fixtures/tickets/features/around_timeout.feature +6 -0
- data/fixtures/tickets/features/gherkin_67.feature +12 -0
- data/fixtures/tickets/features/gherkin_68.feature +4 -0
- data/fixtures/tickets/features/half_manual.feature +11 -0
- data/fixtures/tickets/features/lib/eatting_machine.rb +18 -0
- data/fixtures/tickets/features/lib/pantry.rb +20 -0
- data/fixtures/tickets/features/scenario_outline.feature +95 -0
- data/fixtures/tickets/features/step_definitons/246_steps.rb +3 -0
- data/fixtures/tickets/features/step_definitons/248_steps.rb +15 -0
- data/fixtures/tickets/features/step_definitons/around_timeout_steps.rb +9 -0
- data/fixtures/tickets/features/step_definitons/half_manual_steps.rb +11 -0
- data/fixtures/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
- data/fixtures/tickets/features/step_definitons/tickets_steps.rb +88 -0
- data/fixtures/tickets/features/table_diffing.feature +13 -0
- data/fixtures/tickets/features/tickets.feature +28 -0
- data/gem_tasks/contributors.rake +15 -0
- data/gem_tasks/cucumber.rake +21 -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 +8 -0
- data/gem_tasks/sass.rake +4 -0
- data/gem_tasks/stats +14 -0
- data/gem_tasks/versions.txt +74 -0
- data/gem_tasks/yard.rake +0 -0
- data/gem_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
- data/gem_tasks/yard/default/layout/html/footer.erb +5 -0
- data/gem_tasks/yard/default/layout/html/index.erb +1 -0
- data/gem_tasks/yard/default/layout/html/layout.erb +25 -0
- data/gem_tasks/yard/default/layout/html/logo.erb +1 -0
- data/gem_tasks/yard/default/layout/html/setup.rb +4 -0
- data/legacy_features/announce.feature +152 -0
- data/legacy_features/api/list_step_defs_as_json.feature +50 -0
- data/legacy_features/api/run_cli_main_with_existing_runtime.feature +34 -0
- data/legacy_features/around_hooks.feature +232 -0
- data/legacy_features/bug_371.feature +32 -0
- data/legacy_features/bug_464.feature +16 -0
- data/legacy_features/bug_475.feature +42 -0
- data/legacy_features/bug_585_tab_indentation.feature +22 -0
- data/legacy_features/bug_600.feature +73 -0
- data/legacy_features/call_steps_from_stepdefs.feature +154 -0
- data/legacy_features/cucumber_cli.feature +591 -0
- data/legacy_features/cucumber_cli_outlines.feature +117 -0
- data/legacy_features/default_snippets.feature +42 -0
- data/legacy_features/diffing.feature +25 -0
- data/legacy_features/drb_server_integration.feature +174 -0
- data/legacy_features/exception_in_after_block.feature +127 -0
- data/legacy_features/exception_in_after_step_block.feature +104 -0
- data/legacy_features/exception_in_before_block.feature +98 -0
- data/legacy_features/exclude_files.feature +20 -0
- data/legacy_features/expand.feature +60 -0
- data/legacy_features/html_formatter.feature +8 -0
- data/legacy_features/html_formatter/a.html +561 -0
- data/legacy_features/junit_formatter.feature +164 -0
- data/legacy_features/language_from_header.feature +30 -0
- data/legacy_features/language_help.feature +77 -0
- data/legacy_features/listener_debugger_formatter.feature +42 -0
- data/legacy_features/multiline_names.feature +44 -0
- data/legacy_features/post_configuration_hook.feature +50 -0
- data/legacy_features/profiles.feature +126 -0
- data/legacy_features/rake_task.feature +152 -0
- data/legacy_features/report_called_undefined_steps.feature +34 -0
- data/legacy_features/rerun_formatter.feature +52 -0
- data/legacy_features/simplest.feature +11 -0
- data/legacy_features/snippet.feature +23 -0
- data/legacy_features/snippets_when_using_star_keyword.feature +36 -0
- data/legacy_features/step_definitions/cucumber_steps.rb +172 -0
- data/legacy_features/step_definitions/extra_steps.rb +2 -0
- data/legacy_features/step_definitions/simplest_steps.rb +3 -0
- data/legacy_features/step_definitions/wire_steps.rb +34 -0
- data/legacy_features/support/env.rb +157 -0
- data/legacy_features/support/env.rb.simplest +7 -0
- data/legacy_features/support/fake_wire_server.rb +77 -0
- data/legacy_features/table_diffing.feature +45 -0
- data/legacy_features/table_mapping.feature +34 -0
- data/legacy_features/transform.feature +245 -0
- data/legacy_features/unicode_table.feature +35 -0
- data/legacy_features/wire_protocol.feature +332 -0
- data/legacy_features/wire_protocol_erb.feature +57 -0
- data/legacy_features/wire_protocol_table_diffing.feature +119 -0
- data/legacy_features/wire_protocol_tags.feature +87 -0
- data/legacy_features/wire_protocol_timeouts.feature +63 -0
- data/legacy_features/work_in_progress.feature +156 -0
- data/lib/README.rdoc +12 -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 +9 -0
- data/lib/cucumber.rb +27 -0
- data/lib/cucumber/ast.rb +30 -0
- data/lib/cucumber/ast/background.rb +101 -0
- data/lib/cucumber/ast/comment.rb +31 -0
- data/lib/cucumber/ast/doc_string.rb +80 -0
- data/lib/cucumber/ast/examples.rb +46 -0
- data/lib/cucumber/ast/feature.rb +106 -0
- data/lib/cucumber/ast/feature_element.rb +78 -0
- data/lib/cucumber/ast/features.rb +35 -0
- data/lib/cucumber/ast/names.rb +13 -0
- data/lib/cucumber/ast/outline_table.rb +187 -0
- data/lib/cucumber/ast/scenario.rb +119 -0
- data/lib/cucumber/ast/scenario_outline.rb +125 -0
- data/lib/cucumber/ast/step.rb +126 -0
- data/lib/cucumber/ast/step_collection.rb +76 -0
- data/lib/cucumber/ast/step_invocation.rb +206 -0
- data/lib/cucumber/ast/table.rb +689 -0
- data/lib/cucumber/ast/tags.rb +28 -0
- data/lib/cucumber/ast/tree_walker.rb +183 -0
- data/lib/cucumber/ast/visitor.rb +11 -0
- data/lib/cucumber/broadcaster.rb +13 -0
- data/lib/cucumber/cli/configuration.rb +209 -0
- data/lib/cucumber/cli/drb_client.rb +43 -0
- data/lib/cucumber/cli/main.rb +78 -0
- data/lib/cucumber/cli/options.rb +410 -0
- data/lib/cucumber/cli/profile_loader.rb +91 -0
- data/lib/cucumber/configuration.rb +49 -0
- data/lib/cucumber/constantize.rb +34 -0
- data/lib/cucumber/core_ext/disable_mini_and_test_unit_autorun.rb +25 -0
- data/lib/cucumber/core_ext/instance_exec.rb +98 -0
- data/lib/cucumber/core_ext/proc.rb +34 -0
- data/lib/cucumber/core_ext/string.rb +9 -0
- data/lib/cucumber/errors.rb +40 -0
- data/lib/cucumber/feature_file.rb +101 -0
- data/lib/cucumber/formatter/ansicolor.rb +160 -0
- data/lib/cucumber/formatter/console.rb +187 -0
- data/lib/cucumber/formatter/cucumber.css +279 -0
- data/lib/cucumber/formatter/cucumber.sass +247 -0
- data/lib/cucumber/formatter/debug.rb +33 -0
- data/lib/cucumber/formatter/duration.rb +13 -0
- data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +83 -0
- data/lib/cucumber/formatter/gpretty.rb +24 -0
- data/lib/cucumber/formatter/html.rb +649 -0
- data/lib/cucumber/formatter/io.rb +31 -0
- data/lib/cucumber/formatter/jquery-min.js +154 -0
- data/lib/cucumber/formatter/json.rb +31 -0
- data/lib/cucumber/formatter/json_pretty.rb +13 -0
- data/lib/cucumber/formatter/junit.rb +155 -0
- data/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
- data/lib/cucumber/formatter/pdf.rb +244 -0
- data/lib/cucumber/formatter/pretty.rb +237 -0
- data/lib/cucumber/formatter/progress.rb +92 -0
- data/lib/cucumber/formatter/rerun.rb +68 -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 +79 -0
- data/lib/cucumber/formatter/usage.rb +127 -0
- data/lib/cucumber/js_support/js_dsl.js +57 -0
- data/lib/cucumber/js_support/js_language.rb +185 -0
- data/lib/cucumber/js_support/js_snippets.rb +27 -0
- data/lib/cucumber/language_support.rb +30 -0
- data/lib/cucumber/language_support/language_methods.rb +129 -0
- data/lib/cucumber/parser.rb +2 -0
- data/lib/cucumber/parser/gherkin_builder.rb +129 -0
- data/lib/cucumber/platform.rb +29 -0
- data/lib/cucumber/py_support/py_dsl.py +10 -0
- data/lib/cucumber/py_support/py_language.py +10 -0
- data/lib/cucumber/py_support/py_language.rb +84 -0
- data/lib/cucumber/rake/task.rb +225 -0
- data/lib/cucumber/rb_support/rb_dsl.rb +112 -0
- data/lib/cucumber/rb_support/rb_hook.rb +18 -0
- data/lib/cucumber/rb_support/rb_language.rb +195 -0
- data/lib/cucumber/rb_support/rb_step_definition.rb +82 -0
- data/lib/cucumber/rb_support/rb_transform.rb +54 -0
- data/lib/cucumber/rb_support/rb_world.rb +103 -0
- data/lib/cucumber/rb_support/regexp_argument_matcher.rb +21 -0
- data/lib/cucumber/rspec/disable_option_parser.rb +23 -0
- data/lib/cucumber/rspec/doubles.rb +16 -0
- data/lib/cucumber/runtime.rb +145 -0
- data/lib/cucumber/runtime/features_loader.rb +62 -0
- data/lib/cucumber/runtime/for_programming_languages.rb +67 -0
- data/lib/cucumber/runtime/results.rb +64 -0
- data/lib/cucumber/runtime/support_code.rb +203 -0
- data/lib/cucumber/runtime/user_interface.rb +81 -0
- data/lib/cucumber/step_argument.rb +9 -0
- data/lib/cucumber/step_definition_light.rb +20 -0
- data/lib/cucumber/step_definitions.rb +14 -0
- data/lib/cucumber/step_match.rb +115 -0
- data/lib/cucumber/step_mother.rb +10 -0
- data/lib/cucumber/wire_support/configuration.rb +31 -0
- data/lib/cucumber/wire_support/connection.rb +55 -0
- data/lib/cucumber/wire_support/request_handler.rb +32 -0
- data/lib/cucumber/wire_support/wire_exception.rb +32 -0
- data/lib/cucumber/wire_support/wire_language.rb +54 -0
- data/lib/cucumber/wire_support/wire_packet.rb +32 -0
- data/lib/cucumber/wire_support/wire_protocol.rb +44 -0
- data/lib/cucumber/wire_support/wire_protocol/requests.rb +123 -0
- data/lib/cucumber/wire_support/wire_step_definition.rb +26 -0
- data/spec/cucumber/ast/background_spec.rb +115 -0
- data/spec/cucumber/ast/doc_string_spec.rb +40 -0
- data/spec/cucumber/ast/feature_factory.rb +61 -0
- data/spec/cucumber/ast/feature_spec.rb +63 -0
- data/spec/cucumber/ast/outline_table_spec.rb +21 -0
- data/spec/cucumber/ast/scenario_outline_spec.rb +69 -0
- data/spec/cucumber/ast/step_spec.rb +66 -0
- data/spec/cucumber/ast/table_spec.rb +484 -0
- data/spec/cucumber/ast/tree_walker_spec.rb +11 -0
- data/spec/cucumber/broadcaster_spec.rb +15 -0
- data/spec/cucumber/cli/configuration_spec.rb +431 -0
- data/spec/cucumber/cli/drb_client_spec.rb +76 -0
- data/spec/cucumber/cli/main_spec.rb +137 -0
- data/spec/cucumber/cli/options_spec.rb +358 -0
- data/spec/cucumber/cli/profile_loader_spec.rb +35 -0
- data/spec/cucumber/configuration_spec.rb +23 -0
- data/spec/cucumber/core_ext/proc_spec.rb +68 -0
- data/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
- data/spec/cucumber/formatter/duration_spec.rb +22 -0
- data/spec/cucumber/formatter/html_spec.rb +256 -0
- data/spec/cucumber/formatter/junit_spec.rb +125 -0
- data/spec/cucumber/formatter/progress_spec.rb +38 -0
- data/spec/cucumber/formatter/spec_helper.rb +52 -0
- data/spec/cucumber/rake/forked_spec.rb +62 -0
- data/spec/cucumber/rake/rcov_spec.rb +71 -0
- data/spec/cucumber/rb_support/rb_language_spec.rb +282 -0
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +98 -0
- data/spec/cucumber/rb_support/rb_transform_spec.rb +21 -0
- data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +18 -0
- data/spec/cucumber/runtime/support_code_spec.rb +112 -0
- data/spec/cucumber/runtime_spec.rb +41 -0
- data/spec/cucumber/sell_cucumbers.feature +19 -0
- data/spec/cucumber/step_match_spec.rb +69 -0
- data/spec/cucumber/wire_support/configuration_spec.rb +51 -0
- data/spec/cucumber/wire_support/connection_spec.rb +46 -0
- data/spec/cucumber/wire_support/wire_exception_spec.rb +44 -0
- data/spec/cucumber/wire_support/wire_language_spec.rb +47 -0
- data/spec/cucumber/wire_support/wire_packet_spec.rb +40 -0
- data/spec/cucumber/wire_support/wire_step_definition_spec.rb +20 -0
- data/spec/cucumber/world/pending_spec.rb +46 -0
- data/spec/spec_helper.rb +22 -0
- metadata +1044 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Cucumber::Ast
|
|
4
|
+
describe TreeWalker do
|
|
5
|
+
it "should visit features" do
|
|
6
|
+
tw = TreeWalker.new(nil, [mock('listener', :before_visit_features => nil)])
|
|
7
|
+
tw.should_not_receive(:warn)
|
|
8
|
+
tw.visit_features(mock('features', :accept => nil))
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Cucumber
|
|
4
|
+
describe Broadcaster do
|
|
5
|
+
before do
|
|
6
|
+
@receiver = mock('receiver')
|
|
7
|
+
@broadcaster = Broadcaster.new([@receiver])
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should broadcast methods to registered objects" do
|
|
11
|
+
@receiver.should_receive(:konbanwa).with('good evening')
|
|
12
|
+
@broadcaster.konbanwa('good evening')
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'yaml'
|
|
3
|
+
|
|
4
|
+
module Cucumber
|
|
5
|
+
module Cli
|
|
6
|
+
describe Configuration do
|
|
7
|
+
module ExposesOptions
|
|
8
|
+
attr_reader :options
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def given_cucumber_yml_defined_as(hash_or_string)
|
|
12
|
+
File.stub!(:exist?).and_return(true)
|
|
13
|
+
cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
|
|
14
|
+
IO.stub!(:read).with('cucumber.yml').and_return(cucumber_yml)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def given_the_following_files(*files)
|
|
18
|
+
File.stub!(:directory?).and_return(true)
|
|
19
|
+
File.stub!(:file?).and_return(true)
|
|
20
|
+
Dir.stub!(:[]).and_return(files)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
before(:each) do
|
|
24
|
+
File.stub!(:exist?).and_return(false) # Meaning, no cucumber.yml exists
|
|
25
|
+
Kernel.stub!(:exit).and_return(nil)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def config
|
|
29
|
+
@config ||= Configuration.new(@out = StringIO.new, @error = StringIO.new).extend(ExposesOptions)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def reset_config
|
|
33
|
+
@config = nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
attr_reader :out, :error
|
|
37
|
+
|
|
38
|
+
it "should require env.rb files first" do
|
|
39
|
+
given_the_following_files("/features/support/a_file.rb","/features/support/env.rb")
|
|
40
|
+
|
|
41
|
+
config.parse!(%w{--require /features})
|
|
42
|
+
|
|
43
|
+
config.support_to_load.should == [
|
|
44
|
+
"/features/support/env.rb",
|
|
45
|
+
"/features/support/a_file.rb"
|
|
46
|
+
]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should not require env.rb files when --dry-run" do
|
|
50
|
+
given_the_following_files("/features/support/a_file.rb","/features/support/env.rb")
|
|
51
|
+
|
|
52
|
+
config.parse!(%w{--require /features --dry-run})
|
|
53
|
+
|
|
54
|
+
config.support_to_load.should == [
|
|
55
|
+
"/features/support/a_file.rb"
|
|
56
|
+
]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should require files in vendor/{plugins,gems}/*/cucumber/*.rb" do
|
|
60
|
+
given_the_following_files("/vendor/gems/gem_a/cucumber/bar.rb",
|
|
61
|
+
"/vendor/plugins/plugin_a/cucumber/foo.rb")
|
|
62
|
+
|
|
63
|
+
config.parse!(%w{--require /features})
|
|
64
|
+
|
|
65
|
+
config.step_defs_to_load.should == [
|
|
66
|
+
"/vendor/gems/gem_a/cucumber/bar.rb",
|
|
67
|
+
"/vendor/plugins/plugin_a/cucumber/foo.rb"
|
|
68
|
+
]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe "--exclude" do
|
|
72
|
+
|
|
73
|
+
it "excludes a ruby file from requiring when the name matches exactly" do
|
|
74
|
+
given_the_following_files("/features/support/a_file.rb","/features/support/env.rb")
|
|
75
|
+
|
|
76
|
+
config.parse!(%w{--require /features --exclude a_file.rb})
|
|
77
|
+
|
|
78
|
+
config.all_files_to_load.should == [
|
|
79
|
+
"/features/support/env.rb"
|
|
80
|
+
]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "excludes all ruby files that match the provided patterns from requiring" do
|
|
84
|
+
given_the_following_files("/features/support/foof.rb","/features/support/bar.rb",
|
|
85
|
+
"/features/support/food.rb","/features/blah.rb",
|
|
86
|
+
"/features/support/fooz.rb")
|
|
87
|
+
|
|
88
|
+
config.parse!(%w{--require /features --exclude foo[df] --exclude blah})
|
|
89
|
+
|
|
90
|
+
config.all_files_to_load.should == [
|
|
91
|
+
"/features/support/bar.rb",
|
|
92
|
+
"/features/support/fooz.rb"
|
|
93
|
+
]
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe '#drb?' do
|
|
98
|
+
it "indicates whether the --drb flag was passed in or not" do
|
|
99
|
+
config.parse!(%w{features})
|
|
100
|
+
config.should_not be_drb
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
config.parse!(%w{features --drb})
|
|
104
|
+
config.should be_drb
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe "#drb_port" do
|
|
109
|
+
it "is nil when not configured" do
|
|
110
|
+
config.parse!([])
|
|
111
|
+
config.drb_port.should be_nil
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "is numeric when configured" do
|
|
115
|
+
config.parse!(%w{features --port 1000})
|
|
116
|
+
config.drb_port.should == 1000
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "uses the default profile when no profile is defined" do
|
|
123
|
+
given_cucumber_yml_defined_as({'default' => '--require some_file'})
|
|
124
|
+
|
|
125
|
+
config.parse!(%w{--format progress})
|
|
126
|
+
config.options[:require].should include('some_file')
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
context '--profile' do
|
|
130
|
+
|
|
131
|
+
it "expands args from profiles in the cucumber.yml file" do
|
|
132
|
+
given_cucumber_yml_defined_as({'bongo' => '--require from/yml'})
|
|
133
|
+
|
|
134
|
+
config.parse!(%w{--format progress --profile bongo})
|
|
135
|
+
config.options[:formats].should == [['progress', out]]
|
|
136
|
+
config.options[:require].should == ['from/yml']
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it "expands args from the default profile when no flags are provided" do
|
|
140
|
+
given_cucumber_yml_defined_as({'default' => '--require from/yml'})
|
|
141
|
+
|
|
142
|
+
config.parse!([])
|
|
143
|
+
config.options[:require].should == ['from/yml']
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "allows --strict to be set by a profile" do
|
|
147
|
+
given_cucumber_yml_defined_as({'bongo' => '--strict'})
|
|
148
|
+
|
|
149
|
+
config.parse!(%w{--profile bongo})
|
|
150
|
+
config.options[:strict].should be_true
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "parses ERB syntax in the cucumber.yml file" do
|
|
154
|
+
given_cucumber_yml_defined_as({'default' => '<%="--require some_file"%>'})
|
|
155
|
+
|
|
156
|
+
config.parse!([])
|
|
157
|
+
config.options[:require].should include('some_file')
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
it "parses ERB in cucumber.yml that makes uses nested ERB sessions" do
|
|
161
|
+
given_cucumber_yml_defined_as(<<ERB_YML)
|
|
162
|
+
<%= ERB.new({'standard' => '--require some_file'}.to_yaml).result %>
|
|
163
|
+
<%= ERB.new({'enhanced' => '--require other_file'}.to_yaml).result %>
|
|
164
|
+
ERB_YML
|
|
165
|
+
|
|
166
|
+
config.parse!(%w(-p standard))
|
|
167
|
+
config.options[:require].should include('some_file')
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it "provides a helpful error message when a specified profile does not exists in cucumber.yml" do
|
|
171
|
+
given_cucumber_yml_defined_as({'default' => '--require from/yml', 'html_report' => '--format html'})
|
|
172
|
+
|
|
173
|
+
expected_message = <<-END_OF_MESSAGE
|
|
174
|
+
Could not find profile: 'i_do_not_exist'
|
|
175
|
+
|
|
176
|
+
Defined profiles in cucumber.yml:
|
|
177
|
+
* default
|
|
178
|
+
* html_report
|
|
179
|
+
END_OF_MESSAGE
|
|
180
|
+
|
|
181
|
+
lambda{config.parse!(%w{--profile i_do_not_exist})}.should raise_error(ProfileNotFound, expected_message)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "allows profiles to be defined in arrays" do
|
|
185
|
+
given_cucumber_yml_defined_as({'foo' => ['-f','progress']})
|
|
186
|
+
|
|
187
|
+
config.parse!(%w{--profile foo})
|
|
188
|
+
config.options[:formats].should == [['progress', out]]
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it "disregards default STDOUT formatter defined in profile when another is passed in (via cmd line)" do
|
|
192
|
+
given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
|
|
193
|
+
config.parse!(%w{--format progress --profile foo})
|
|
194
|
+
config.options[:formats].should == [['progress', out]]#, ['pretty', 'pretty.txt']]
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
["--no-profile", "-P"].each do |flag|
|
|
200
|
+
context 'when none is specified with #{flag}' do
|
|
201
|
+
it "disables profiles" do
|
|
202
|
+
given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
|
|
203
|
+
|
|
204
|
+
config.parse!("#{flag} --require some_file.rb".split(" "))
|
|
205
|
+
config.options[:require].should == ['some_file.rb']
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
it "notifies the user that the profiles are being disabled" do
|
|
209
|
+
given_cucumber_yml_defined_as({'default' => '-v'})
|
|
210
|
+
|
|
211
|
+
config.parse!("#{flag} --require some_file.rb".split(" "))
|
|
212
|
+
out.string.should =~ /Disabling profiles.../
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
it "issues a helpful error message when a specified profile exists but is nil or blank" do
|
|
218
|
+
[nil, ' '].each do |bad_input|
|
|
219
|
+
given_cucumber_yml_defined_as({'foo' => bad_input})
|
|
220
|
+
|
|
221
|
+
expected_error = /The 'foo' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml./
|
|
222
|
+
lambda{config.parse!(%w{--profile foo})}.should raise_error(expected_error)
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
it "issues a helpful error message when no YAML file exists and a profile is specified" do
|
|
227
|
+
File.should_receive(:exist?).with('cucumber.yml').and_return(false)
|
|
228
|
+
|
|
229
|
+
expected_error = /cucumber\.yml was not found/
|
|
230
|
+
lambda{config.parse!(%w{--profile i_do_not_exist})}.should raise_error(expected_error)
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
it "issues a helpful error message when cucumber.yml is blank or malformed" do
|
|
234
|
+
expected_error_message = /cucumber\.yml was found, but was blank or malformed. Please refer to cucumber's documentation on correct profile usage./
|
|
235
|
+
|
|
236
|
+
['', 'sfsadfs', "--- \n- an\n- array\n", "---dddfd"].each do |bad_input|
|
|
237
|
+
given_cucumber_yml_defined_as(bad_input)
|
|
238
|
+
lambda{config.parse!([])}.should raise_error(expected_error_message)
|
|
239
|
+
reset_config
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it "issues a helpful error message when cucumber.yml can not be parsed" do
|
|
244
|
+
expected_error_message = /cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentation on correct profile usage./
|
|
245
|
+
|
|
246
|
+
given_cucumber_yml_defined_as("input that causes an exception in YAML loading")
|
|
247
|
+
YAML.should_receive(:load).and_raise ArgumentError
|
|
248
|
+
|
|
249
|
+
lambda{config.parse!([])}.should raise_error(expected_error_message)
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
it "issues a helpful error message when cucumber.yml can not be parsed by ERB" do
|
|
253
|
+
expected_error_message = /cucumber.yml was found, but could not be parsed with ERB. Please refer to cucumber's documentation on correct profile usage./
|
|
254
|
+
given_cucumber_yml_defined_as("<% this_fails %>")
|
|
255
|
+
|
|
256
|
+
lambda{config.parse!([])}.should raise_error(expected_error_message)
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
it "should accept --dry-run option" do
|
|
262
|
+
config.parse!(%w{--dry-run})
|
|
263
|
+
config.options[:dry_run].should be_true
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
it "should accept --no-source option" do
|
|
267
|
+
config.parse!(%w{--no-source})
|
|
268
|
+
|
|
269
|
+
config.options[:source].should be_false
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
it "should accept --no-snippets option" do
|
|
273
|
+
config.parse!(%w{--no-snippets})
|
|
274
|
+
|
|
275
|
+
config.options[:snippets].should be_false
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
it "should set snippets and source to false with --quiet option" do
|
|
279
|
+
config.parse!(%w{--quiet})
|
|
280
|
+
|
|
281
|
+
config.options[:snippets].should be_false
|
|
282
|
+
config.options[:source].should be_false
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
it "should accept --verbose option" do
|
|
286
|
+
config.parse!(%w{--verbose})
|
|
287
|
+
|
|
288
|
+
config.options[:verbose].should be_true
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
it "should accept --out option" do
|
|
292
|
+
config.parse!(%w{--out jalla.txt})
|
|
293
|
+
config.formats.should == [['pretty', 'jalla.txt']]
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
it "should accept multiple --out options" do
|
|
297
|
+
config.parse!(%w{--format progress --out file1 --out file2})
|
|
298
|
+
config.formats.should == [['progress', 'file2']]
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
it "should accept multiple --format options and put the STDOUT one first so progress is seen" do
|
|
302
|
+
config.parse!(%w{--format pretty --out pretty.txt --format progress})
|
|
303
|
+
config.formats.should == [['progress', out], ['pretty', 'pretty.txt']]
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
it "should not accept multiple --format options when both use implicit STDOUT" do
|
|
307
|
+
lambda do
|
|
308
|
+
config.parse!(%w{--format pretty --format progress})
|
|
309
|
+
end.should raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
it "should not accept multiple --out streams pointing to the same place" do
|
|
313
|
+
lambda do
|
|
314
|
+
config.parse!(%w{--format pretty --out file1 --format progress --out file1})
|
|
315
|
+
end.should raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
it "should associate --out to previous --format" do
|
|
319
|
+
config.parse!(%w{--format progress --out file1 --format profile --out file2})
|
|
320
|
+
config.formats.should == [["progress", "file1"], ["profile" ,"file2"]]
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
it "should accept --color option" do
|
|
324
|
+
Term::ANSIColor.should_receive(:coloring=).with(true)
|
|
325
|
+
config.parse!(['--color'])
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
it "should accept --no-color option" do
|
|
329
|
+
Term::ANSIColor.should_receive(:coloring=).with(false)
|
|
330
|
+
config = Configuration.new(StringIO.new)
|
|
331
|
+
config.parse!(['--no-color'])
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
describe "--backtrace" do
|
|
335
|
+
before do
|
|
336
|
+
Cucumber.use_full_backtrace = false
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
it "should show full backtrace when --backtrace is present" do
|
|
340
|
+
config = Main.new(['--backtrace'])
|
|
341
|
+
begin
|
|
342
|
+
"x".should == "y"
|
|
343
|
+
rescue => e
|
|
344
|
+
e.backtrace[0].should_not == "#{__FILE__}:#{__LINE__ - 2}"
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
after do
|
|
349
|
+
Cucumber.use_full_backtrace = false
|
|
350
|
+
end
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
it "should accept multiple --name options" do
|
|
354
|
+
config.parse!(['--name', "User logs in", '--name', "User signs up"])
|
|
355
|
+
|
|
356
|
+
config.options[:name_regexps].should include(/User logs in/)
|
|
357
|
+
config.options[:name_regexps].should include(/User signs up/)
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
it "should accept multiple -n options" do
|
|
361
|
+
config.parse!(['-n', "User logs in", '-n', "User signs up"])
|
|
362
|
+
|
|
363
|
+
config.options[:name_regexps].should include(/User logs in/)
|
|
364
|
+
config.options[:name_regexps].should include(/User signs up/)
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
it "should preserve the order of the feature files" do
|
|
368
|
+
config.parse!(%w{b.feature c.feature a.feature})
|
|
369
|
+
|
|
370
|
+
config.feature_files.should == ["b.feature", "c.feature", "a.feature"]
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
it "should search for all features in the specified directory" do
|
|
374
|
+
File.stub!(:directory?).and_return(true)
|
|
375
|
+
Dir.should_receive(:[]).with("feature_directory/**/*.feature").
|
|
376
|
+
any_number_of_times.and_return(["cucumber.feature"])
|
|
377
|
+
|
|
378
|
+
config.parse!(%w{feature_directory/})
|
|
379
|
+
|
|
380
|
+
config.feature_files.should == ["cucumber.feature"]
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
it "defaults to the features directory when no feature file are provided" do
|
|
384
|
+
File.stub!(:directory?).and_return(true)
|
|
385
|
+
Dir.should_receive(:[]).with("features/**/*.feature").
|
|
386
|
+
any_number_of_times.and_return(["cucumber.feature"])
|
|
387
|
+
|
|
388
|
+
config.parse!(%w{})
|
|
389
|
+
|
|
390
|
+
config.feature_files.should == ["cucumber.feature"]
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
it "should allow specifying environment variables on the command line" do
|
|
394
|
+
config.parse!(["foo=bar"])
|
|
395
|
+
ENV["foo"].should == "bar"
|
|
396
|
+
config.feature_files.should_not include('foo=bar')
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
it "should allow specifying environment variables in profiles" do
|
|
400
|
+
given_cucumber_yml_defined_as({'selenium' => 'RAILS_ENV=selenium'})
|
|
401
|
+
config.parse!(["--profile", "selenium"])
|
|
402
|
+
ENV["RAILS_ENV"].should == "selenium"
|
|
403
|
+
config.feature_files.should_not include('RAILS_ENV=selenium')
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
describe "#tag_expression" do
|
|
407
|
+
it "returns an empty expression when no tags are specified" do
|
|
408
|
+
config.parse!([])
|
|
409
|
+
config.tag_expression.should be_empty
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
it "returns an expression when tags are specified" do
|
|
413
|
+
config.parse!(['--tags','@foo'])
|
|
414
|
+
config.tag_expression.should_not be_empty
|
|
415
|
+
end
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
describe "#dry_run?" do
|
|
419
|
+
it "returns true when --dry-run was specified on in the arguments" do
|
|
420
|
+
config.parse!(['--dry-run'])
|
|
421
|
+
config.dry_run?.should be_true
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
it "returns false by default" do
|
|
425
|
+
config.parse!([])
|
|
426
|
+
config.dry_run?.should be_false
|
|
427
|
+
end
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
end
|
|
431
|
+
end
|