stefl-cucumber 0.10.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 +24 -0
- data/.rspec +1 -0
- data/Gemfile +7 -0
- data/History.txt +1613 -0
- data/LICENSE +22 -0
- data/README.rdoc +26 -0
- data/Rakefile +12 -0
- data/bin/cucumber +22 -0
- data/cucumber.gemspec +50 -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/step_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/ro/features/suma.feature +11 -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/custom_formatter.feature +41 -0
- data/features/execute_with_tag_filter.feature +63 -0
- data/features/hooks.feature +59 -0
- data/features/json_formatter.feature +249 -0
- data/features/stats_formatters.feature +70 -0
- data/features/step_definitions/cucumber_steps.rb +8 -0
- data/features/support/env.rb +31 -0
- data/features/tagged_hooks.feature +217 -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 +5 -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/env.rb +18 -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 +19 -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/sdoc.rake +12 -0
- data/legacy_features/announce.feature +164 -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 +67 -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 +550 -0
- data/legacy_features/junit_formatter.feature +92 -0
- data/legacy_features/language_from_header.feature +30 -0
- data/legacy_features/language_help.feature +78 -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 +45 -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 +168 -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_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 +99 -0
- data/lib/cucumber/ast/comment.rb +31 -0
- data/lib/cucumber/ast/examples.rb +43 -0
- data/lib/cucumber/ast/feature.rb +103 -0
- data/lib/cucumber/ast/feature_element.rb +78 -0
- data/lib/cucumber/ast/features.rb +35 -0
- data/lib/cucumber/ast/outline_table.rb +187 -0
- data/lib/cucumber/ast/py_string.rb +80 -0
- data/lib/cucumber/ast/scenario.rb +117 -0
- data/lib/cucumber/ast/scenario_outline.rb +122 -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 +199 -0
- data/lib/cucumber/ast/table.rb +689 -0
- data/lib/cucumber/ast/tags.rb +28 -0
- data/lib/cucumber/ast/tree_walker.rb +184 -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 +406 -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_unit_autorun.rb +14 -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 +62 -0
- data/lib/cucumber/formatter/ansicolor.rb +160 -0
- data/lib/cucumber/formatter/console.rb +177 -0
- data/lib/cucumber/formatter/cucumber.css +275 -0
- data/lib/cucumber/formatter/cucumber.sass +271 -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 +84 -0
- data/lib/cucumber/formatter/gpretty.rb +24 -0
- data/lib/cucumber/formatter/html.rb +644 -0
- data/lib/cucumber/formatter/io.rb +31 -0
- data/lib/cucumber/formatter/jquery-min.js +154 -0
- data/lib/cucumber/formatter/json.rb +29 -0
- data/lib/cucumber/formatter/json_pretty.rb +13 -0
- data/lib/cucumber/formatter/junit.rb +150 -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 +55 -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 +130 -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 +170 -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 +37 -0
- data/lib/cucumber/rb_support/rb_world.rb +95 -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 +65 -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 +80 -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 +30 -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 +110 -0
- data/spec/cucumber/ast/feature_factory.rb +60 -0
- data/spec/cucumber/ast/feature_spec.rb +63 -0
- data/spec/cucumber/ast/outline_table_spec.rb +21 -0
- data/spec/cucumber/ast/py_string_spec.rb +40 -0
- data/spec/cucumber/ast/scenario_outline_spec.rb +68 -0
- data/spec/cucumber/ast/scenario_spec.rb +43 -0
- data/spec/cucumber/ast/step_spec.rb +66 -0
- data/spec/cucumber/ast/table_spec.rb +474 -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 +77 -0
- data/spec/cucumber/cli/main_spec.rb +137 -0
- data/spec/cucumber/cli/options_spec.rb +351 -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 +258 -0
- data/spec/cucumber/formatter/junit_spec.rb +111 -0
- data/spec/cucumber/formatter/progress_spec.rb +38 -0
- data/spec/cucumber/formatter/spec_helper.rb +51 -0
- data/spec/cucumber/rb_support/rb_language_spec.rb +283 -0
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +99 -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 +10 -0
- metadata +884 -0
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
module Cucumber
|
5
|
+
module Cli
|
6
|
+
describe DRbClient do
|
7
|
+
before(:each) do
|
8
|
+
@args = ['features']
|
9
|
+
@error_stream = StringIO.new
|
10
|
+
@out_stream = StringIO.new
|
11
|
+
|
12
|
+
@drb_object = mock('DRbObject', :run => true)
|
13
|
+
DRbObject.stub!(:new_with_uri).and_return(@drb_object)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "starts up a druby service" do
|
17
|
+
DRb.should_receive(:start_service).with("druby://localhost:0")
|
18
|
+
DRbClient.run(@args, @error_stream, @out_stream)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "connects to the DRb server" do
|
22
|
+
DRbObject.should_receive(:new_with_uri).with("druby://127.0.0.1:8990")
|
23
|
+
DRbClient.run(@args, @error_stream, @out_stream)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "runs the features on the DRb server" do
|
27
|
+
@drb_object.should_receive(:run).with(@args, @error_stream, @out_stream)
|
28
|
+
DRbClient.run(@args, @error_stream, @out_stream)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns raises an error when it can't connect to the server" do
|
32
|
+
DRbObject.stub!(:new_with_uri).and_raise(DRb::DRbConnError)
|
33
|
+
lambda { DRbClient.run(@args, @error_stream, @out_stream) }.should raise_error(DRbClientError, "No DRb server is running.")
|
34
|
+
end
|
35
|
+
|
36
|
+
it "returns the result from the DRb server call" do
|
37
|
+
@drb_object.should_receive(:run).and_return('foo')
|
38
|
+
DRbClient.run(@args, @error_stream, @out_stream).should == 'foo'
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with $CUCUMBER_DRB set" do
|
42
|
+
before do
|
43
|
+
@original_env = ENV['CUCUMBER_DRB']
|
44
|
+
ENV['CUCUMBER_DRB'] = '90000'
|
45
|
+
end
|
46
|
+
after do
|
47
|
+
ENV['CUCUMBER_DRB'] = @original_env
|
48
|
+
end
|
49
|
+
it "connects to specified DRb server" do
|
50
|
+
DRbObject.should_receive(:new_with_uri).with("druby://127.0.0.1:90000")
|
51
|
+
DRbClient.run(@args, @error_stream, @out_stream)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context "with provided drb_port" do
|
56
|
+
before do
|
57
|
+
@args = @args + ['--port', '8000']
|
58
|
+
end
|
59
|
+
it "connects to specified drb port" do
|
60
|
+
DRbObject.should_receive(:new_with_uri).with("druby://127.0.0.1:8000")
|
61
|
+
DRbClient.run(@args, @error_stream, @out_stream, 8000)
|
62
|
+
end
|
63
|
+
it "prefers configuration to environment" do
|
64
|
+
original = ENV['CUCUMBER_DRB'] = original
|
65
|
+
begin
|
66
|
+
ENV['CUCUMBER_DRB'] = "4000"
|
67
|
+
DRbObject.should_receive(:new_with_uri).with("druby://127.0.0.1:8000")
|
68
|
+
DRbClient.run(@args, @error_stream, @out_stream, 8000)
|
69
|
+
ensure
|
70
|
+
ENV['CUCUMBER_DRB'] = original
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require 'yaml'
|
3
|
+
require 'cucumber/parser/gherkin_builder'
|
4
|
+
require 'gherkin/formatter/model'
|
5
|
+
|
6
|
+
module Cucumber
|
7
|
+
module Cli
|
8
|
+
describe Main do
|
9
|
+
before(:each) do
|
10
|
+
@out = StringIO.new
|
11
|
+
@err = StringIO.new
|
12
|
+
Kernel.stub!(:exit).and_return(nil)
|
13
|
+
File.stub!(:exist?).and_return(false) # When Configuration checks for cucumber.yml
|
14
|
+
Dir.stub!(:[]).and_return([]) # to prevent cucumber's features dir to being laoded
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:args) { [] }
|
18
|
+
let(:out_stream) { nil }
|
19
|
+
let(:err_stream) { nil }
|
20
|
+
subject { Main.new(args, out_stream, err_stream)}
|
21
|
+
|
22
|
+
describe "#execute!" do
|
23
|
+
context "passed an existing runtime" do
|
24
|
+
let(:existing_runtime) { double('runtime').as_null_object }
|
25
|
+
|
26
|
+
def do_execute
|
27
|
+
subject.execute!(existing_runtime)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "configures that runtime" do
|
31
|
+
expected_configuration = double('Configuration', :drb? => false).as_null_object
|
32
|
+
Configuration.stub!(:new => expected_configuration)
|
33
|
+
existing_runtime.should_receive(:configure).with(expected_configuration)
|
34
|
+
do_execute
|
35
|
+
end
|
36
|
+
|
37
|
+
it "uses that runtime for running and reporting results" do
|
38
|
+
expected_results = double('results', :failure? => true)
|
39
|
+
existing_runtime.should_receive(:run!)
|
40
|
+
existing_runtime.stub!(:results).and_return(expected_results)
|
41
|
+
do_execute.should == expected_results.failure?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "verbose mode" do
|
47
|
+
|
48
|
+
before(:each) do
|
49
|
+
b = Cucumber::Parser::GherkinBuilder.new
|
50
|
+
@empty_feature = b.feature(Gherkin::Formatter::Model::Feature.new([], [], "Feature", "Foo", "", 99))
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should show feature files parsed" do
|
54
|
+
@cli = Main.new(%w{--verbose example.feature}, @out)
|
55
|
+
@cli.stub!(:require)
|
56
|
+
|
57
|
+
Cucumber::FeatureFile.stub!(:new).and_return(mock("feature file", :parse => @empty_feature))
|
58
|
+
|
59
|
+
@cli.execute!
|
60
|
+
|
61
|
+
@out.string.should include('example.feature')
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "--format with class" do
|
67
|
+
describe "in module" do
|
68
|
+
it "should resolve each module until it gets Formatter class" do
|
69
|
+
cli = Main.new(%w{--format ZooModule::MonkeyFormatterClass}, nil)
|
70
|
+
mock_module = mock('module')
|
71
|
+
Object.stub!(:const_defined?).and_return(true)
|
72
|
+
mock_module.stub!(:const_defined?).and_return(true)
|
73
|
+
|
74
|
+
f = stub('formatter').as_null_object
|
75
|
+
|
76
|
+
Object.should_receive(:const_get).with('ZooModule').and_return(mock_module)
|
77
|
+
mock_module.should_receive(:const_get).with('MonkeyFormatterClass').and_return(mock('formatter class', :new => f))
|
78
|
+
|
79
|
+
cli.execute!
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
[ProfilesNotDefinedError, YmlLoadError, ProfileNotFound].each do |exception_klass|
|
85
|
+
|
86
|
+
it "rescues #{exception_klass}, prints the message to the error stream and returns true" do
|
87
|
+
Configuration.stub!(:new).and_return(configuration = mock('configuration'))
|
88
|
+
configuration.stub!(:parse!).and_raise(exception_klass.new("error message"))
|
89
|
+
|
90
|
+
main = Main.new('', out = StringIO.new, error = StringIO.new)
|
91
|
+
main.execute!.should be_true
|
92
|
+
error.string.should == "error message\n"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "--drb" do
|
97
|
+
before(:each) do
|
98
|
+
@configuration = mock('Configuration', :drb? => true).as_null_object
|
99
|
+
Configuration.stub!(:new).and_return(@configuration)
|
100
|
+
|
101
|
+
@args = ['features']
|
102
|
+
|
103
|
+
@cli = Main.new(@args, @out, @err)
|
104
|
+
@step_mother = mock('StepMother').as_null_object
|
105
|
+
StepMother.stub!(:new).and_return(@step_mother)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "delegates the execution to the DRB client passing the args and streams" do
|
109
|
+
@configuration.stub :drb_port => 1450
|
110
|
+
DRbClient.should_receive(:run).with(@args, @err, @out, 1450).and_return(true)
|
111
|
+
@cli.execute!
|
112
|
+
end
|
113
|
+
|
114
|
+
it "returns the result from the DRbClient" do
|
115
|
+
DRbClient.stub!(:run).and_return('foo')
|
116
|
+
@cli.execute!.should == 'foo'
|
117
|
+
end
|
118
|
+
|
119
|
+
it "ceases execution if the DrbClient is able to perform the execution" do
|
120
|
+
DRbClient.stub!(:run).and_return(true)
|
121
|
+
@configuration.should_not_receive(:build_formatter_broadcaster)
|
122
|
+
@cli.execute!
|
123
|
+
end
|
124
|
+
|
125
|
+
context "when the DrbClient is unable to perfrom the execution" do
|
126
|
+
before { DRbClient.stub!(:run).and_raise(DRbClientError.new('error message.')) }
|
127
|
+
|
128
|
+
it "alerts the user that execution will be performed locally" do
|
129
|
+
@cli.execute!
|
130
|
+
@err.string.should include("WARNING: error message. Running features locally:")
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
@@ -0,0 +1,351 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require 'yaml'
|
3
|
+
require 'cucumber/cli/options'
|
4
|
+
|
5
|
+
module Cucumber
|
6
|
+
module Cli
|
7
|
+
describe Options do
|
8
|
+
|
9
|
+
def given_cucumber_yml_defined_as(hash_or_string)
|
10
|
+
File.stub!(:exist?).and_return(true)
|
11
|
+
cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
|
12
|
+
IO.stub!(:read).with('cucumber.yml').and_return(cucumber_yml)
|
13
|
+
end
|
14
|
+
|
15
|
+
before(:each) do
|
16
|
+
File.stub!(:exist?).and_return(false) # Meaning, no cucumber.yml exists
|
17
|
+
Kernel.stub!(:exit).and_return(nil)
|
18
|
+
end
|
19
|
+
|
20
|
+
def output_stream
|
21
|
+
@output_stream ||= StringIO.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def error_stream
|
25
|
+
@error_stream ||= StringIO.new
|
26
|
+
end
|
27
|
+
|
28
|
+
def options
|
29
|
+
@options ||= Options.new(output_stream, error_stream)
|
30
|
+
end
|
31
|
+
|
32
|
+
def prepare_args(args)
|
33
|
+
args.is_a?(Array) ? args : args.split(' ')
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'parsing' do
|
37
|
+
|
38
|
+
def when_parsing(args)
|
39
|
+
yield
|
40
|
+
options.parse!(prepare_args(args))
|
41
|
+
end
|
42
|
+
|
43
|
+
def after_parsing(args)
|
44
|
+
options.parse!(prepare_args(args))
|
45
|
+
yield
|
46
|
+
end
|
47
|
+
|
48
|
+
context '-r or --require' do
|
49
|
+
it "collects all specified files into an array" do
|
50
|
+
after_parsing('--require some_file.rb -r another_file.rb') do
|
51
|
+
options[:require].should == ['some_file.rb', 'another_file.rb']
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context '--i18n' do
|
57
|
+
context "with LANG specified as 'help'" do
|
58
|
+
it "lists all known langues" do
|
59
|
+
when_parsing '--i18n help' do
|
60
|
+
Kernel.should_receive(:exit)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it "exits the program" do
|
65
|
+
when_parsing('--i18n help') { Kernel.should_receive(:exit) }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "--port PORT" do
|
71
|
+
it "sets the drb_port to the provided option" do
|
72
|
+
after_parsing('--port 4500') { options[:drb_port].should == '4500' }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context '-f FORMAT or --format FORMAT' do
|
77
|
+
it "defaults the output for the formatter to the output stream (STDOUT)" do
|
78
|
+
after_parsing('-f pretty') { options[:formats].should == [['pretty', output_stream]] }
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context '-o [FILE|DIR] or --out [FILE|DIR]' do
|
83
|
+
it "defaults the formatter to 'pretty' when not specified earlier" do
|
84
|
+
after_parsing('-o file.txt') { options[:formats].should == [['pretty', 'file.txt']] }
|
85
|
+
end
|
86
|
+
it "sets the output for the formatter defined immediatly before it" do
|
87
|
+
after_parsing('-f profile --out file.txt -f pretty -o file2.txt') do
|
88
|
+
options[:formats].should == [['profile', 'file.txt'], ['pretty', 'file2.txt']]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context '-t TAGS --tags TAGS' do
|
94
|
+
it "designates tags prefixed with ~ as tags to be excluded" do
|
95
|
+
after_parsing('--tags ~@foo,@bar') { options[:tag_expressions].should == ['~@foo,@bar'] }
|
96
|
+
end
|
97
|
+
|
98
|
+
it "stores tags passed with different --tags seperately" do
|
99
|
+
after_parsing('--tags @foo --tags @bar') { options[:tag_expressions].should == ['@foo', '@bar'] }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context '-n NAME or --name NAME' do
|
104
|
+
it "stores the provided names as regular expressions" do
|
105
|
+
after_parsing('-n foo --name bar') { options[:name_regexps].should == [/foo/,/bar/] }
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context '-e PATTERN or --exclude PATTERN' do
|
110
|
+
it "stores the provided exclusions as regular expressions" do
|
111
|
+
after_parsing('-e foo --exclude bar') { options[:excludes].should == [/foo/,/bar/] }
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context '-p PROFILE or --profile PROFILE' do
|
116
|
+
|
117
|
+
it "notifies the user that an individual profile is being used" do
|
118
|
+
given_cucumber_yml_defined_as({'foo' => [1,2,3]})
|
119
|
+
options.parse!(%w{--profile foo})
|
120
|
+
output_stream.string.should =~ /Using the foo profile...\n/
|
121
|
+
end
|
122
|
+
|
123
|
+
it "notifies the user when multiple profiles are being used" do
|
124
|
+
given_cucumber_yml_defined_as({'foo' => [1,2,3], 'bar' => ['v'], 'dog' => ['v']})
|
125
|
+
options.parse!(%w{--profile foo --profile bar --profile dog})
|
126
|
+
output_stream.string.should =~ /Using the foo, bar and dog profiles...\n/
|
127
|
+
end
|
128
|
+
|
129
|
+
it "notifies the user of all profiles being used, even when they are nested" do
|
130
|
+
given_cucumber_yml_defined_as('foo' => '-p bar', 'bar' => 'features')
|
131
|
+
after_parsing('-p foo') do
|
132
|
+
output_stream.string.should =~ /Using the foo and bar profiles.../
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
it "uses the default profile passed in during initialization if none are specified by the user" do
|
137
|
+
given_cucumber_yml_defined_as({'default' => '--require some_file'})
|
138
|
+
|
139
|
+
options = Options.new(output_stream, error_stream, :default_profile => 'default')
|
140
|
+
options.parse!(%w{--format progress})
|
141
|
+
options[:require].should include('some_file')
|
142
|
+
end
|
143
|
+
|
144
|
+
it "merges all uniq values from both cmd line and the profile" do
|
145
|
+
given_cucumber_yml_defined_as('foo' => %w[--verbose])
|
146
|
+
options.parse!(%w[--wip --profile foo])
|
147
|
+
options[:wip].should be_true
|
148
|
+
options[:verbose].should be_true
|
149
|
+
end
|
150
|
+
|
151
|
+
it "gives precendene to the origianl options' paths" do
|
152
|
+
given_cucumber_yml_defined_as('foo' => %w[features])
|
153
|
+
options.parse!(%w[my.feature -p foo])
|
154
|
+
options[:paths].should == %w[my.feature]
|
155
|
+
end
|
156
|
+
|
157
|
+
it "combines the require files of both" do
|
158
|
+
given_cucumber_yml_defined_as('bar' => %w[--require features -r dog.rb])
|
159
|
+
options.parse!(%w[--require foo.rb -p bar])
|
160
|
+
options[:require].should == %w[foo.rb features dog.rb]
|
161
|
+
end
|
162
|
+
|
163
|
+
it "combines the tag names of both" do
|
164
|
+
given_cucumber_yml_defined_as('baz' => %w[-t @bar])
|
165
|
+
options.parse!(%w[--tags @foo -p baz])
|
166
|
+
options[:tag_expressions].should == ["@foo", "@bar"]
|
167
|
+
end
|
168
|
+
|
169
|
+
it "only takes the paths from the original options, and disgregards the profiles" do
|
170
|
+
given_cucumber_yml_defined_as('baz' => %w[features])
|
171
|
+
options.parse!(%w[my.feature -p baz])
|
172
|
+
options[:paths].should == ['my.feature']
|
173
|
+
end
|
174
|
+
|
175
|
+
it "uses the paths from the profile when none are specified originally" do
|
176
|
+
given_cucumber_yml_defined_as('baz' => %w[some.feature])
|
177
|
+
options.parse!(%w[-p baz])
|
178
|
+
options[:paths].should == ['some.feature']
|
179
|
+
end
|
180
|
+
|
181
|
+
it "combines environment variables from the profile but gives precendene to cmd line args" do
|
182
|
+
given_cucumber_yml_defined_as('baz' => %w[FOO=bar CHEESE=swiss])
|
183
|
+
options.parse!(%w[-p baz CHEESE=cheddar BAR=foo])
|
184
|
+
options[:env_vars].should == {'BAR' => 'foo', 'FOO' => 'bar', 'CHEESE' => 'cheddar'}
|
185
|
+
end
|
186
|
+
|
187
|
+
it "disregards STDOUT formatter defined in profile when another is passed in (via cmd line)" do
|
188
|
+
given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
|
189
|
+
options.parse!(%w{--format progress --profile foo})
|
190
|
+
options[:formats].should == [['progress', output_stream]]
|
191
|
+
end
|
192
|
+
|
193
|
+
it "includes any non-STDOUT formatters from the profile" do
|
194
|
+
given_cucumber_yml_defined_as({'html' => %w[--format html -o features.html]})
|
195
|
+
options.parse!(%w{--format progress --profile html})
|
196
|
+
options[:formats].should == [['progress', output_stream], ['html', 'features.html']]
|
197
|
+
end
|
198
|
+
|
199
|
+
it "does not include STDOUT formatters from the profile if there is a STDOUT formatter in command line" do
|
200
|
+
given_cucumber_yml_defined_as({'html' => %w[--format html -o features.html --format pretty]})
|
201
|
+
options.parse!(%w{--format progress --profile html})
|
202
|
+
options[:formats].should == [['progress', output_stream], ['html', 'features.html']]
|
203
|
+
end
|
204
|
+
|
205
|
+
it "includes any STDOUT formatters from the profile if no STDOUT formatter was specified in command line" do
|
206
|
+
given_cucumber_yml_defined_as({'html' => %w[--format html]})
|
207
|
+
options.parse!(%w{--format rerun -o rerun.txt --profile html})
|
208
|
+
options[:formats].should == [['html', output_stream], ['rerun', 'rerun.txt']]
|
209
|
+
end
|
210
|
+
|
211
|
+
it "assumes all of the formatters defined in the profile when none are specified on cmd line" do
|
212
|
+
given_cucumber_yml_defined_as({'html' => %w[--format progress --format html -o features.html]})
|
213
|
+
options.parse!(%w{--profile html})
|
214
|
+
options[:formats].should == [['progress', output_stream], ['html', 'features.html']]
|
215
|
+
end
|
216
|
+
|
217
|
+
it "respects --quiet when defined in the profile" do
|
218
|
+
given_cucumber_yml_defined_as('foo' => '-q')
|
219
|
+
options.parse!(%w[-p foo])
|
220
|
+
options[:snippets].should be_false
|
221
|
+
options[:source].should be_false
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
context '-P or --no-profile' do
|
226
|
+
|
227
|
+
it "disables profiles" do
|
228
|
+
given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
|
229
|
+
|
230
|
+
after_parsing("-P --require some_file.rb") do
|
231
|
+
options[:require].should == ['some_file.rb']
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
it "notifies the user that the profiles are being disabled" do
|
236
|
+
given_cucumber_yml_defined_as({'default' => '-v'})
|
237
|
+
|
238
|
+
after_parsing("--no-profile --require some_file.rb") do
|
239
|
+
output_stream.string.should =~ /Disabling profiles.../
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
end
|
244
|
+
|
245
|
+
context '-b or --backtrace' do
|
246
|
+
it "turns on cucumber's full backtrace" do
|
247
|
+
when_parsing("-b") do
|
248
|
+
Cucumber.should_receive(:use_full_backtrace=).with(true)
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
context '--version' do
|
254
|
+
it "displays Cucumber's version" do
|
255
|
+
after_parsing('--version') do
|
256
|
+
output_stream.string.should =~ /#{Cucumber::VERSION}/
|
257
|
+
end
|
258
|
+
end
|
259
|
+
it "exits the program" do
|
260
|
+
when_parsing('--version') { Kernel.should_receive(:exit) }
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
context 'environment variables (i.e. MODE=webrat)' do
|
265
|
+
it "places all of the environment variables into a hash" do
|
266
|
+
after_parsing('MODE=webrat FOO=bar') do
|
267
|
+
options[:env_vars].should == {'MODE' => 'webrat', 'FOO' => 'bar'}
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
it "assigns any extra arguments as paths to features" do
|
273
|
+
after_parsing('-f pretty my_feature.feature my_other_features') do
|
274
|
+
options[:paths].should == ['my_feature.feature', 'my_other_features']
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
it "does not mistake environment variables as feature paths" do
|
279
|
+
after_parsing('my_feature.feature FOO=bar') do
|
280
|
+
options[:paths].should == ['my_feature.feature']
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
describe '#expanded_args_without_drb' do
|
286
|
+
it "returns the orginal args in additon to the args from any profiles" do
|
287
|
+
given_cucumber_yml_defined_as('foo' => '-v',
|
288
|
+
'bar' => '--wip -p baz',
|
289
|
+
'baz' => '-r some_file.rb')
|
290
|
+
options.parse!(%w[features -p foo --profile bar])
|
291
|
+
|
292
|
+
options.expanded_args_without_drb.should == %w[features -v --wip -r some_file.rb --no-profile]
|
293
|
+
end
|
294
|
+
|
295
|
+
it "removes the --drb flag so that the args can be safely passed to the drb server" do
|
296
|
+
given_cucumber_yml_defined_as('default' => 'features -f pretty --drb')
|
297
|
+
options.parse!(%w[--profile default])
|
298
|
+
|
299
|
+
options.expanded_args_without_drb.should == %w[features -f pretty --no-profile]
|
300
|
+
end
|
301
|
+
|
302
|
+
it "contains the environment variables" do
|
303
|
+
options.parse!(%w[features FOO=bar])
|
304
|
+
options.expanded_args_without_drb.should == %w[features FOO=bar --no-profile]
|
305
|
+
end
|
306
|
+
|
307
|
+
it "ignores the paths from the profiles if one was specified on the command line" do
|
308
|
+
given_cucumber_yml_defined_as('foo' => 'features --drb')
|
309
|
+
options.parse!(%w[some_feature.feature -p foo])
|
310
|
+
options.expanded_args_without_drb.should == %w[some_feature.feature --no-profile]
|
311
|
+
end
|
312
|
+
|
313
|
+
|
314
|
+
it "appends the --no-profile flag so that the DRb server doesn't reload the profiles" do
|
315
|
+
given_cucumber_yml_defined_as('foo' => 'features --drb')
|
316
|
+
options.parse!(%w[some_feature.feature -p foo])
|
317
|
+
options.expanded_args_without_drb.should == %w[some_feature.feature --no-profile]
|
318
|
+
end
|
319
|
+
|
320
|
+
it "does not append --no-profile if already present" do
|
321
|
+
options.parse!(%w[some_feature.feature -P])
|
322
|
+
options.expanded_args_without_drb.should == %w[some_feature.feature -P]
|
323
|
+
end
|
324
|
+
|
325
|
+
|
326
|
+
end
|
327
|
+
|
328
|
+
describe "dry-run" do
|
329
|
+
it "should have the default value for snippets" do
|
330
|
+
given_cucumber_yml_defined_as({'foo' => %w[--dry-run]})
|
331
|
+
options.parse!(%w{--dry-run})
|
332
|
+
options[:snippets].should == true
|
333
|
+
end
|
334
|
+
|
335
|
+
it "should set snippets to false when no-snippets provided after dry-run" do
|
336
|
+
given_cucumber_yml_defined_as({'foo' => %w[--dry-run --no-snippets]})
|
337
|
+
options.parse!(%w{--dry-run --no-snippets})
|
338
|
+
options[:snippets].should == false
|
339
|
+
end
|
340
|
+
|
341
|
+
it "should set snippets to false when no-snippets provided before dry-run" do
|
342
|
+
given_cucumber_yml_defined_as({'foo' => %w[--no-snippet --dry-run]})
|
343
|
+
options.parse!(%w{--no-snippets --dry-run})
|
344
|
+
options[:snippets].should == false
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|