kbaum-cucumber 0.4.5.pre
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 +18 -0
- data/Caliper.yml +5 -0
- data/History.txt +1292 -0
- data/LICENSE +22 -0
- data/README.rdoc +26 -0
- data/Rakefile +63 -0
- data/VERSION.yml +5 -0
- data/bin/cucumber +16 -0
- data/cucumber.gemspec +741 -0
- data/cucumber.yml +10 -0
- data/examples/dos_line_endings/Rakefile +6 -0
- data/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
- data/examples/i18n/README.textile +18 -0
- data/examples/i18n/Rakefile +32 -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 +6 -0
- data/examples/i18n/bg/features/support/world.rb +8 -0
- data/examples/i18n/bg/lib/calculator.rb +24 -0
- data/examples/i18n/cat/Rakefile +6 -0
- data/examples/i18n/cat/features/step_definitons/calculator_steps.rb +21 -0
- data/examples/i18n/cat/features/suma.feature +17 -0
- data/examples/i18n/cat/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 +8 -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/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 +38 -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 +14 -0
- data/examples/i18n/hu/.gitignore +1 -0
- data/examples/i18n/hu/Rakefile +6 -0
- data/examples/i18n/hu/features/addition.feature +17 -0
- data/examples/i18n/hu/features/division.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 +24 -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 +6 -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 +6 -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 +6 -0
- data/examples/i18n/ru/features/support/world.rb +8 -0
- data/examples/i18n/ru/lib/calculator.rb +24 -0
- data/examples/i18n/se/Rakefile +6 -0
- data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +24 -0
- data/examples/i18n/se/features/summering.feature +18 -0
- data/examples/i18n/se/lib/kalkulator.rb +11 -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-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/sr/Rakefile +6 -0
- data/examples/i18n/sr/features/sabiranje.feature +18 -0
- data/examples/i18n/sr/features/step_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/sr/lib/calculator.rb +12 -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/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 +6 -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/junit/features/one_passing_one_failing.feature +8 -0
- data/examples/junit/features/pending.feature +5 -0
- data/examples/junit/features/step_definitions/steps.rb +11 -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/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/selenium/Rakefile +6 -0
- data/examples/selenium/features/search.feature +9 -0
- data/examples/selenium/features/step_definitons/search_steps.rb +13 -0
- data/examples/selenium/features/support/env.rb +19 -0
- data/examples/selenium_webrat/Rakefile +6 -0
- data/examples/selenium_webrat/config.ru +0 -0
- data/examples/selenium_webrat/features/search.feature +9 -0
- data/examples/selenium_webrat/features/step_definitons/search_steps.rb +13 -0
- data/examples/selenium_webrat/features/support/env.rb +45 -0
- data/examples/self_test/.gitignore +1 -0
- data/examples/self_test/README.textile +6 -0
- data/examples/self_test/Rakefile +6 -0
- data/examples/self_test/features/background/background_tagged_before_on_outline.feature +12 -0
- data/examples/self_test/features/background/background_with_name.feature +7 -0
- data/examples/self_test/features/background/failing_background.feature +12 -0
- data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
- data/examples/self_test/features/background/multiline_args_background.feature +32 -0
- data/examples/self_test/features/background/passing_background.feature +10 -0
- data/examples/self_test/features/background/pending_background.feature +10 -0
- data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
- data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
- data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
- data/examples/self_test/features/failing_expectation.feature +4 -0
- data/examples/self_test/features/lots_of_undefined.feature +8 -0
- data/examples/self_test/features/multiline_name.feature +27 -0
- data/examples/self_test/features/outline_sample.feature +15 -0
- data/examples/self_test/features/sample.feature +21 -0
- data/examples/self_test/features/search_sample.feature +32 -0
- data/examples/self_test/features/step_definitions/sample_steps.rb +81 -0
- data/examples/self_test/features/support/env.rb +18 -0
- data/examples/self_test/features/tags_sample.feature +17 -0
- data/examples/self_test/features/tons_of_cukes.feature +52 -0
- data/examples/self_test/features/undefined_multiline_args.feature +12 -0
- data/examples/self_test/list-of-features.txt +1 -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 +30 -0
- data/examples/sinatra/views/add.erb +5 -0
- data/examples/sinatra/views/layout.erb +8 -0
- data/examples/steps_library/features/step_definitions/steps_lib1.rb +8 -0
- data/examples/steps_library/features/step_definitions/steps_lib2.rb +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/tickets/Rakefile +20 -0
- data/examples/tickets/features.html +138 -0
- data/examples/tickets/features/172.feature +28 -0
- data/examples/tickets/features/177/1.feature +28 -0
- data/examples/tickets/features/177/2.feature +20 -0
- data/examples/tickets/features/177/3.feature +18 -0
- data/examples/tickets/features/180.feature +7 -0
- data/examples/tickets/features/229/tagged_hooks.feature +8 -0
- data/examples/tickets/features/229/tagged_hooks.rb +14 -0
- data/examples/tickets/features/236.feature +13 -0
- data/examples/tickets/features/241.feature +12 -0
- data/examples/tickets/features/246.feature +4 -0
- data/examples/tickets/features/248.feature +11 -0
- data/examples/tickets/features/270/back.feature +14 -0
- data/examples/tickets/features/270/back.steps.rb +14 -0
- data/examples/tickets/features/272/hooks.feature +26 -0
- data/examples/tickets/features/272/hooks_steps.rb +53 -0
- data/examples/tickets/features/279/py_string_indent.feature +25 -0
- data/examples/tickets/features/279/py_string_indent.steps.rb +12 -0
- data/examples/tickets/features/279/wrong.feature_ +11 -0
- data/examples/tickets/features/301/filter_background_tagged_hooks.feature +6 -0
- data/examples/tickets/features/301/filter_background_tagged_hooks_steps.rb +12 -0
- data/examples/tickets/features/306/only_background.feature +4 -0
- data/examples/tickets/features/lib/eatting_machine.rb +18 -0
- data/examples/tickets/features/lib/pantry.rb +20 -0
- data/examples/tickets/features/scenario_outline.feature +95 -0
- data/examples/tickets/features/step_definitons/246_steps.rb +3 -0
- data/examples/tickets/features/step_definitons/248_steps.rb +15 -0
- data/examples/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
- data/examples/tickets/features/step_definitons/tickets_steps.rb +81 -0
- data/examples/tickets/features/table_diffing.feature +13 -0
- data/examples/tickets/features/tickets.feature +28 -0
- data/examples/watir/README.textile +16 -0
- data/examples/watir/Rakefile +10 -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 +44 -0
- data/examples/webrat/features/search.feature +12 -0
- data/examples/webrat/features/step_definitions/kvasir_steps.rb +14 -0
- data/examples/webrat/features/support/env.rb +17 -0
- data/features/announce.feature +122 -0
- data/features/background.feature +308 -0
- data/features/bug_371.feature +32 -0
- data/features/bug_464.feature +16 -0
- data/features/bug_475.feature +43 -0
- data/features/call_many_steps.feature +124 -0
- data/features/cucumber_cli.feature +654 -0
- data/features/cucumber_cli_diff_disabled.feature +52 -0
- data/features/cucumber_cli_outlines.feature +105 -0
- data/features/custom_formatter.feature +47 -0
- data/features/default_snippets.feature +42 -0
- data/features/drb_server_integration.feature +174 -0
- data/features/exception_in_after_block.feature +100 -0
- data/features/exception_in_after_step_block.feature +102 -0
- data/features/exception_in_before_block.feature +78 -0
- data/features/exclude_files.feature +20 -0
- data/features/expand.feature +60 -0
- data/features/html_formatter.feature +7 -0
- data/features/html_formatter/a.html +400 -0
- data/features/junit_formatter.feature +88 -0
- data/features/language_from_header.feature +30 -0
- data/features/language_help.feature +68 -0
- data/features/listener_debugger_formatter.feature +41 -0
- data/features/multiline_names.feature +43 -0
- data/features/negative_tagged_hooks.feature +61 -0
- data/features/post_configuration_hook.feature +37 -0
- data/features/profiles.feature +112 -0
- data/features/rake_task.feature +152 -0
- data/features/report_called_undefined_steps.feature +34 -0
- data/features/simplest.feature +11 -0
- data/features/snippet.feature +22 -0
- data/features/step_definitions/cucumber_steps.rb +154 -0
- data/features/step_definitions/extra_steps.rb +2 -0
- data/features/step_definitions/simplest_steps.rb +3 -0
- data/features/step_definitions/wire_steps.rb +14 -0
- data/features/support/env.rb +141 -0
- data/features/support/env.rb.simplest +7 -0
- data/features/support/fake_wire_server.rb +63 -0
- data/features/table_diffing.feature +45 -0
- data/features/table_mapping.feature +35 -0
- data/features/tag_logic.feature +258 -0
- data/features/transform.feature +245 -0
- data/features/unicode_table.feature +35 -0
- data/features/usage_and_stepdefs_formatter.feature +169 -0
- data/features/wire_protocol.feature +177 -0
- data/features/work_in_progress.feature +156 -0
- data/gem_tasks/contributors.rake +13 -0
- data/gem_tasks/environment.rake +7 -0
- data/gem_tasks/features.rake +18 -0
- data/gem_tasks/fix_cr_lf.rake +10 -0
- data/gem_tasks/flog.rake +4 -0
- data/gem_tasks/rspec.rake +15 -0
- data/gem_tasks/sass.rake +4 -0
- data/gem_tasks/sdoc.rake +12 -0
- data/lib/README.rdoc +12 -0
- data/lib/autotest/cucumber.rb +6 -0
- data/lib/autotest/cucumber_mixin.rb +131 -0
- data/lib/autotest/cucumber_rails.rb +6 -0
- data/lib/autotest/cucumber_rails_rspec.rb +6 -0
- data/lib/autotest/cucumber_rspec.rb +6 -0
- data/lib/autotest/discover.rb +9 -0
- data/lib/cucumber.rb +15 -0
- data/lib/cucumber/ast.rb +30 -0
- data/lib/cucumber/ast/background.rb +75 -0
- data/lib/cucumber/ast/comment.rb +31 -0
- data/lib/cucumber/ast/examples.rb +36 -0
- data/lib/cucumber/ast/feature.rb +85 -0
- data/lib/cucumber/ast/feature_element.rb +68 -0
- data/lib/cucumber/ast/features.rb +40 -0
- data/lib/cucumber/ast/outline_table.rb +166 -0
- data/lib/cucumber/ast/py_string.rb +59 -0
- data/lib/cucumber/ast/scenario.rb +111 -0
- data/lib/cucumber/ast/scenario_outline.rb +100 -0
- data/lib/cucumber/ast/step.rb +121 -0
- data/lib/cucumber/ast/step_collection.rb +76 -0
- data/lib/cucumber/ast/step_invocation.rb +190 -0
- data/lib/cucumber/ast/table.rb +655 -0
- data/lib/cucumber/ast/tags.rb +122 -0
- data/lib/cucumber/ast/tree_walker.rb +201 -0
- data/lib/cucumber/ast/visitor.rb +11 -0
- data/lib/cucumber/broadcaster.rb +13 -0
- data/lib/cucumber/cli/configuration.rb +180 -0
- data/lib/cucumber/cli/drb_client.rb +32 -0
- data/lib/cucumber/cli/language_help_formatter.rb +72 -0
- data/lib/cucumber/cli/main.rb +121 -0
- data/lib/cucumber/cli/options.rb +404 -0
- data/lib/cucumber/cli/profile_loader.rb +82 -0
- data/lib/cucumber/constantize.rb +34 -0
- data/lib/cucumber/core_ext/instance_exec.rb +98 -0
- data/lib/cucumber/core_ext/proc.rb +30 -0
- data/lib/cucumber/core_ext/string.rb +16 -0
- data/lib/cucumber/feature_file.rb +54 -0
- data/lib/cucumber/filter.rb +41 -0
- data/lib/cucumber/formatter/ansicolor.rb +157 -0
- data/lib/cucumber/formatter/color_io.rb +23 -0
- data/lib/cucumber/formatter/console.rb +205 -0
- data/lib/cucumber/formatter/cucumber.css +248 -0
- data/lib/cucumber/formatter/cucumber.sass +241 -0
- data/lib/cucumber/formatter/debug.rb +33 -0
- data/lib/cucumber/formatter/duration.rb +13 -0
- data/lib/cucumber/formatter/html.rb +545 -0
- data/lib/cucumber/formatter/io.rb +33 -0
- data/lib/cucumber/formatter/junit.rb +149 -0
- data/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
- data/lib/cucumber/formatter/pdf.rb +234 -0
- data/lib/cucumber/formatter/pretty.rb +237 -0
- data/lib/cucumber/formatter/progress.rb +75 -0
- data/lib/cucumber/formatter/rerun.rb +50 -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/tag_cloud.rb +34 -0
- data/lib/cucumber/formatter/unicode.rb +35 -0
- data/lib/cucumber/formatter/usage.rb +127 -0
- data/lib/cucumber/language_support.rb +30 -0
- data/lib/cucumber/language_support/language_methods.rb +110 -0
- data/lib/cucumber/languages.yml +535 -0
- data/lib/cucumber/parser.rb +8 -0
- data/lib/cucumber/parser/common.rb +170 -0
- data/lib/cucumber/parser/common.tt +21 -0
- data/lib/cucumber/parser/feature.rb +1783 -0
- data/lib/cucumber/parser/feature.tt +317 -0
- data/lib/cucumber/parser/i18n.tt +34 -0
- data/lib/cucumber/parser/natural_language.rb +108 -0
- data/lib/cucumber/parser/py_string.rb +276 -0
- data/lib/cucumber/parser/py_string.tt +45 -0
- data/lib/cucumber/parser/table.rb +305 -0
- data/lib/cucumber/parser/table.tt +60 -0
- data/lib/cucumber/parser/treetop_ext.rb +53 -0
- data/lib/cucumber/platform.rb +31 -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 +81 -0
- data/lib/cucumber/rake/task.rb +166 -0
- data/lib/cucumber/rb_support/rb_dsl.rb +102 -0
- data/lib/cucumber/rb_support/rb_hook.rb +19 -0
- data/lib/cucumber/rb_support/rb_language.rb +179 -0
- data/lib/cucumber/rb_support/rb_step_definition.rb +75 -0
- data/lib/cucumber/rb_support/rb_transform.rb +37 -0
- data/lib/cucumber/rb_support/rb_world.rb +81 -0
- data/lib/cucumber/rb_support/regexp_argument_matcher.rb +21 -0
- data/lib/cucumber/rspec_neuter.rb +23 -0
- data/lib/cucumber/step_argument.rb +9 -0
- data/lib/cucumber/step_definition_light.rb +20 -0
- data/lib/cucumber/step_match.rb +107 -0
- data/lib/cucumber/step_mother.rb +350 -0
- data/lib/cucumber/webrat/element_locator.rb +93 -0
- data/lib/cucumber/webrat/table_locator.rb +1 -0
- data/lib/cucumber/wire_support/connection.rb +42 -0
- data/lib/cucumber/wire_support/request_handler.rb +19 -0
- data/lib/cucumber/wire_support/wire_exception.rb +10 -0
- data/lib/cucumber/wire_support/wire_language.rb +52 -0
- data/lib/cucumber/wire_support/wire_packet.rb +34 -0
- data/lib/cucumber/wire_support/wire_protocol.rb +64 -0
- data/lib/cucumber/wire_support/wire_step_definition.rb +21 -0
- data/spec/cucumber/ast/background_spec.rb +54 -0
- data/spec/cucumber/ast/feature_element_spec.rb +41 -0
- data/spec/cucumber/ast/feature_factory.rb +62 -0
- data/spec/cucumber/ast/feature_spec.rb +44 -0
- data/spec/cucumber/ast/outline_table_spec.rb +21 -0
- data/spec/cucumber/ast/py_string_spec.rb +51 -0
- data/spec/cucumber/ast/scenario_outline_spec.rb +73 -0
- data/spec/cucumber/ast/scenario_spec.rb +45 -0
- data/spec/cucumber/ast/step_collection_spec.rb +17 -0
- data/spec/cucumber/ast/step_spec.rb +66 -0
- data/spec/cucumber/ast/table_spec.rb +422 -0
- data/spec/cucumber/ast/tags_spec.rb +29 -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 +396 -0
- data/spec/cucumber/cli/drb_client_spec.rb +77 -0
- data/spec/cucumber/cli/main_spec.rb +172 -0
- data/spec/cucumber/cli/options_spec.rb +335 -0
- data/spec/cucumber/cli/profile_loader_spec.rb +10 -0
- data/spec/cucumber/core_ext/proc_spec.rb +68 -0
- data/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
- data/spec/cucumber/formatter/color_io_spec.rb +27 -0
- data/spec/cucumber/formatter/console_spec.rb +20 -0
- data/spec/cucumber/formatter/duration_spec.rb +22 -0
- data/spec/cucumber/formatter/html_spec.rb +213 -0
- data/spec/cucumber/formatter/junit_spec.rb +110 -0
- data/spec/cucumber/formatter/progress_spec.rb +38 -0
- data/spec/cucumber/formatter/spec_helper.rb +50 -0
- data/spec/cucumber/parser/feature_parser_spec.rb +400 -0
- data/spec/cucumber/parser/table_parser_spec.rb +52 -0
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +132 -0
- data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +18 -0
- data/spec/cucumber/sell_cucumbers.feature +19 -0
- data/spec/cucumber/step_match_spec.rb +56 -0
- data/spec/cucumber/step_mother_spec.rb +270 -0
- data/spec/cucumber/treetop_parser/empty_feature.feature +4 -0
- data/spec/cucumber/treetop_parser/empty_scenario.feature +9 -0
- data/spec/cucumber/treetop_parser/empty_scenario_outline.feature +3 -0
- data/spec/cucumber/treetop_parser/fit_scenario.feature +8 -0
- data/spec/cucumber/treetop_parser/given_scenario.feature +9 -0
- data/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +7 -0
- data/spec/cucumber/treetop_parser/multiline_steps.feature +17 -0
- data/spec/cucumber/treetop_parser/multiple_tables.feature +27 -0
- data/spec/cucumber/treetop_parser/scenario_outline.feature +16 -0
- data/spec/cucumber/treetop_parser/spaces.feature +12 -0
- data/spec/cucumber/treetop_parser/test_dos.feature +25 -0
- data/spec/cucumber/treetop_parser/with_comments.feature +23 -0
- data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
- data/spec/cucumber/wire_support/wire_language_spec.rb +47 -0
- data/spec/cucumber/wire_support/wire_packet_spec.rb +26 -0
- data/spec/cucumber/world/pending_spec.rb +46 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +18 -0
- metadata +813 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
@intentional_failure
|
|
2
|
+
Feature: Tables
|
|
3
|
+
Scenario: Extra row with table
|
|
4
|
+
Then the table should be different with table:
|
|
5
|
+
| a | b |
|
|
6
|
+
| one | two |
|
|
7
|
+
| three | four |
|
|
8
|
+
|
|
9
|
+
Scenario: Extra row and missing column with table
|
|
10
|
+
Then the table should be different with table:
|
|
11
|
+
| a | e | b |
|
|
12
|
+
| one | Q | two |
|
|
13
|
+
| three | R | four |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Feature: Cucumber
|
|
2
|
+
In order to have a happy user base
|
|
3
|
+
As a Cucumber user
|
|
4
|
+
I don't want no stinkin bugs
|
|
5
|
+
|
|
6
|
+
Scenario: RSpec be_*
|
|
7
|
+
Given be_empty
|
|
8
|
+
|
|
9
|
+
Scenario: Call step from step
|
|
10
|
+
Given nested step is called
|
|
11
|
+
Then nested step should be executed
|
|
12
|
+
|
|
13
|
+
Scenario: Call step from step using text table
|
|
14
|
+
Given nested step is called using text table
|
|
15
|
+
Then nested step should be executed
|
|
16
|
+
|
|
17
|
+
Scenario: Reading a table
|
|
18
|
+
Given the following table
|
|
19
|
+
| born | working |
|
|
20
|
+
| Oslo | London |
|
|
21
|
+
Then I should be working in London
|
|
22
|
+
And I should be born in Oslo
|
|
23
|
+
And I should see a multiline string like
|
|
24
|
+
"""
|
|
25
|
+
A string
|
|
26
|
+
that spans
|
|
27
|
+
several lines
|
|
28
|
+
"""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Here you'll find examples for Watir, FireWatir, SafariWatir and Celerity.
|
|
2
|
+
All of these browser libraries have the same API, so the example code will
|
|
3
|
+
work with all of them.
|
|
4
|
+
|
|
5
|
+
Just run with:
|
|
6
|
+
|
|
7
|
+
rake cucumber
|
|
8
|
+
|
|
9
|
+
This will use Watir/IE if you're on Windows, and SafariWatir/Safari if you're on OS X.
|
|
10
|
+
You can force the use of FireWatir/Firefox on any platform like this:
|
|
11
|
+
|
|
12
|
+
rake features FIREWATIR=true
|
|
13
|
+
|
|
14
|
+
And finally, you can use Celerity by running in JRuby:
|
|
15
|
+
|
|
16
|
+
jruby -S rake cucumber
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../../lib')
|
|
2
|
+
require 'cucumber/rake/task'
|
|
3
|
+
|
|
4
|
+
Cucumber::Rake::Task.new do |t|
|
|
5
|
+
t.cucumber_opts = %w{--format pretty}
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
Cucumber::Rake::Task.new(:cucumber_screenshot) do |t|
|
|
9
|
+
t.cucumber_opts = %w{--format html --out report.html}
|
|
10
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Feature: Search
|
|
2
|
+
In order to learn more
|
|
3
|
+
As an information seeker
|
|
4
|
+
I want to find more information
|
|
5
|
+
|
|
6
|
+
Scenario: Find what I'm looking for
|
|
7
|
+
Given I am on the Google search page
|
|
8
|
+
When I search for "cucumber github"
|
|
9
|
+
Then I should see
|
|
10
|
+
"""
|
|
11
|
+
BDD that talks to domain experts first and code second
|
|
12
|
+
"""
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Full Watir API: http://wtr.rubyforge.org/rdoc/
|
|
2
|
+
# Full RSpec API: http://rspec.rubyforge.org/
|
|
3
|
+
|
|
4
|
+
Given 'I am on the Google search page' do
|
|
5
|
+
@browser.goto 'http://www.google.com/'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
When /I search for "(.*)"/ do |query|
|
|
9
|
+
@browser.text_field(:name, 'q').set(query)
|
|
10
|
+
@browser.button(:name, 'btnG').click
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Then /I should see/ do |text|
|
|
14
|
+
@browser.text.should =~ /#{text}/m
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# To avoid step definitions that are tightly coupled to your user interface,
|
|
18
|
+
# consider creating classes for your pages - such as this:
|
|
19
|
+
# http://github.com/aslakhellesoy/cucumber/tree/v0.1.15/examples/watir/features/step_definitons/search_steps.rb
|
|
20
|
+
#
|
|
21
|
+
# You may keep the page classes along your steps, or even better, put them in separate files, e.g.
|
|
22
|
+
# support/pages/google_search.rb
|
|
23
|
+
#
|
|
24
|
+
# This technique is called "Page Objects", and you can read more about it here:
|
|
25
|
+
# http://github.com/marekj/watirloo/tree/master
|
|
26
|
+
# We're not using this technique here, since we want to illustrate the basics only.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec/expectations'
|
|
2
|
+
|
|
3
|
+
if ENV['FIREWATIR']
|
|
4
|
+
require 'firewatir'
|
|
5
|
+
Browser = FireWatir::Firefox
|
|
6
|
+
else
|
|
7
|
+
case RUBY_PLATFORM
|
|
8
|
+
when /darwin/
|
|
9
|
+
require 'safariwatir'
|
|
10
|
+
Browser = Watir::Safari
|
|
11
|
+
when /win32|mingw/
|
|
12
|
+
require 'watir'
|
|
13
|
+
Browser = Watir::IE
|
|
14
|
+
when /java/
|
|
15
|
+
require 'celerity'
|
|
16
|
+
Browser = Celerity::Browser
|
|
17
|
+
else
|
|
18
|
+
raise "This platform is not supported (#{PLATFORM})"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# "before all"
|
|
23
|
+
browser = Browser.new
|
|
24
|
+
|
|
25
|
+
Before do
|
|
26
|
+
@browser = browser
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# "after all"
|
|
30
|
+
at_exit do
|
|
31
|
+
browser.close
|
|
32
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# This is an example of how you can set up screenshots for your
|
|
2
|
+
# browser testing. Just run cucumber with --format html --out report.html
|
|
3
|
+
#
|
|
4
|
+
# This examples currently only works on OS X, but adding support for other
|
|
5
|
+
# platform should be easy - as long as there is a command line tool to take
|
|
6
|
+
# a picture of the desktop.
|
|
7
|
+
module Screenshots
|
|
8
|
+
def add_screenshot
|
|
9
|
+
id = "screenshot-#{Time.new.to_i}"
|
|
10
|
+
take_screenshot(id)
|
|
11
|
+
embed("#{id}.png", "image/png")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
if Cucumber::OS_X
|
|
15
|
+
def take_screenshot(id)
|
|
16
|
+
`screencapture -t png #{id}.png`
|
|
17
|
+
end
|
|
18
|
+
else
|
|
19
|
+
# Other platforms...
|
|
20
|
+
def take_screenshot(id)
|
|
21
|
+
STDERR.puts "Sorry - no screenshots on your platform yet."
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
After do
|
|
27
|
+
add_screenshot
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Other variants
|
|
31
|
+
#
|
|
32
|
+
# Only take screenshot on failures
|
|
33
|
+
#
|
|
34
|
+
# After do |scenario|
|
|
35
|
+
# add_screenshot if scenario.failed?
|
|
36
|
+
# end
|
|
37
|
+
#
|
|
38
|
+
# Only take screenshot for scenarios or features tagged @screenshot
|
|
39
|
+
#
|
|
40
|
+
# After(@screenshot) do
|
|
41
|
+
# add_screenshot
|
|
42
|
+
# end
|
|
43
|
+
|
|
44
|
+
World(Screenshots)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Feature: Search
|
|
2
|
+
In order to learn more
|
|
3
|
+
As an information seeker
|
|
4
|
+
I want to find more information
|
|
5
|
+
|
|
6
|
+
Scenario: Find what I'm looking for
|
|
7
|
+
Given I am on the Kvasir search page
|
|
8
|
+
When I search for "cucumber github"
|
|
9
|
+
Then I should see
|
|
10
|
+
"""
|
|
11
|
+
BDD that talks to domain experts first and code second
|
|
12
|
+
"""
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Google is too hard to script with Mechanize
|
|
2
|
+
# Using a Norewgian search engine instead :-)
|
|
3
|
+
Given /^I am on the Kvasir search page$/ do
|
|
4
|
+
visit('http://www.kvasir.no/')
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
When /^I search for "([^\"]*)"$/ do |query|
|
|
8
|
+
fill_in('q', :with => query)
|
|
9
|
+
click_button('sokeKnapp')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
Then /^I should see$/ do |text|
|
|
13
|
+
response_body.should contain(text)
|
|
14
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'webrat'
|
|
2
|
+
require 'spec'
|
|
3
|
+
|
|
4
|
+
Webrat.configure do |config|
|
|
5
|
+
config.mode = :mechanize
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class WebratWorld
|
|
9
|
+
include Spec::Matchers
|
|
10
|
+
include Webrat::Methods
|
|
11
|
+
include Webrat::Matchers
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
World do
|
|
15
|
+
WebratWorld.new
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
Feature: Delayed announcement
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given a standard Cucumber project directory structure
|
|
5
|
+
And a file named "features/step_definitions/steps.rb" with:
|
|
6
|
+
"""
|
|
7
|
+
Given /^I use announce with text "(.*)"$/ do |ann|
|
|
8
|
+
announce(ann)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Given /^I use multiple announces$/ do
|
|
12
|
+
announce("Multiple")
|
|
13
|
+
announce("Announce")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
Given /^I use announcement (.+) in line (.+) (?:with result (.+))$/ do |ann, line, result|
|
|
17
|
+
announce("Last announcement") if line == "3"
|
|
18
|
+
announce("Line: #{line}: #{ann}")
|
|
19
|
+
fail if result =~ /fail/i
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Given /^I use announce and step fails$/ do
|
|
23
|
+
announce("Announce with fail")
|
|
24
|
+
fail
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
Given /^this step works$/ do
|
|
28
|
+
end
|
|
29
|
+
"""
|
|
30
|
+
And a file named "features/f.feature" with:
|
|
31
|
+
"""
|
|
32
|
+
Scenario: S
|
|
33
|
+
Given I use announce with text "Ann"
|
|
34
|
+
And this step works
|
|
35
|
+
|
|
36
|
+
Scenario: S2
|
|
37
|
+
Given I use multiple announces
|
|
38
|
+
And this step works
|
|
39
|
+
|
|
40
|
+
Scenario Outline: S3
|
|
41
|
+
Given I use announcement <ann> in line <line>
|
|
42
|
+
|
|
43
|
+
Examples:
|
|
44
|
+
| line | ann |
|
|
45
|
+
| 1 | anno1 |
|
|
46
|
+
| 2 | anno2 |
|
|
47
|
+
| 3 | anno3 |
|
|
48
|
+
|
|
49
|
+
Scenario: S4
|
|
50
|
+
Given I use announce and step fails
|
|
51
|
+
And this step works
|
|
52
|
+
|
|
53
|
+
Scenario Outline: s5
|
|
54
|
+
Given I use announcement <ann> in line <line> with result <result>
|
|
55
|
+
|
|
56
|
+
Examples:
|
|
57
|
+
| line | ann | result |
|
|
58
|
+
| 1 | anno1 | fail |
|
|
59
|
+
| 2 | anno2 | pass |
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
Scenario: Delayed announcements feature
|
|
63
|
+
When I run cucumber --format pretty features/f.feature
|
|
64
|
+
Then the output should contain
|
|
65
|
+
"""
|
|
66
|
+
Scenario: S # features/f.feature:1
|
|
67
|
+
Given I use announce with text "Ann" # features/step_definitions/steps.rb:1
|
|
68
|
+
Ann
|
|
69
|
+
And this step works # features/step_definitions/steps.rb:21
|
|
70
|
+
|
|
71
|
+
Scenario: S2 # features/f.feature:5
|
|
72
|
+
Given I use multiple announces # features/step_definitions/steps.rb:5
|
|
73
|
+
Multiple
|
|
74
|
+
Announce
|
|
75
|
+
And this step works # features/step_definitions/steps.rb:21
|
|
76
|
+
|
|
77
|
+
Scenario Outline: S3 # features/f.feature:9
|
|
78
|
+
Given I use announcement <ann> in line <line> # features/f.feature:10
|
|
79
|
+
|
|
80
|
+
Examples:
|
|
81
|
+
| line | ann |
|
|
82
|
+
| 1 | anno1 |
|
|
83
|
+
| 2 | anno2 |
|
|
84
|
+
| 3 | anno3 |
|
|
85
|
+
|
|
86
|
+
Scenario: S4 # features/f.feature:18
|
|
87
|
+
Given I use announce and step fails # features/step_definitions/steps.rb:16
|
|
88
|
+
Announce with fail
|
|
89
|
+
(RuntimeError)
|
|
90
|
+
./features/step_definitions/steps.rb:18:in `/^I use announce and step fails$/'
|
|
91
|
+
features/f.feature:19:in `Given I use announce and step fails'
|
|
92
|
+
And this step works # features/step_definitions/steps.rb:21
|
|
93
|
+
|
|
94
|
+
Scenario Outline: s5 # features/f.feature:22
|
|
95
|
+
Given I use announcement <ann> in line <line> with result <result> # features/step_definitions/steps.rb:10
|
|
96
|
+
|
|
97
|
+
Examples:
|
|
98
|
+
| line | ann | result |
|
|
99
|
+
| 1 | anno1 | fail | Line: 1: anno1
|
|
100
|
+
(RuntimeError)
|
|
101
|
+
./features/step_definitions/steps.rb:13:in `/^I use announcement (.+) in line (.+) (?:with result (.+))$/'
|
|
102
|
+
features/f.feature:23:in `Given I use announcement <ann> in line <line> with result <result>'
|
|
103
|
+
| 2 | anno2 | pass | Line: 2: anno2
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
Scenario: Non-delayed announcements feature (progress formatter)
|
|
107
|
+
When I run cucumber --format progress features/f.feature
|
|
108
|
+
Then the output should contain
|
|
109
|
+
"""
|
|
110
|
+
Ann
|
|
111
|
+
..
|
|
112
|
+
Multiple
|
|
113
|
+
|
|
114
|
+
Announce
|
|
115
|
+
..-UUUUUU
|
|
116
|
+
Announce with fail
|
|
117
|
+
F--
|
|
118
|
+
Line: 1: anno1
|
|
119
|
+
FFF
|
|
120
|
+
Line: 2: anno2
|
|
121
|
+
...
|
|
122
|
+
"""
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
Feature: backgrounds
|
|
2
|
+
In order to provide a context to my scenarios within a feature
|
|
3
|
+
As a feature editor
|
|
4
|
+
I want to write a background section in my features.
|
|
5
|
+
|
|
6
|
+
Scenario: run a specific scenario with a background
|
|
7
|
+
When I run cucumber -q features/background/passing_background.feature:9 --require features
|
|
8
|
+
Then it should pass with
|
|
9
|
+
"""
|
|
10
|
+
Feature: Passing background sample
|
|
11
|
+
|
|
12
|
+
Background:
|
|
13
|
+
Given '10' cukes
|
|
14
|
+
|
|
15
|
+
Scenario: another passing background
|
|
16
|
+
Then I should have '10' cukes
|
|
17
|
+
|
|
18
|
+
1 scenario (1 passed)
|
|
19
|
+
2 steps (2 passed)
|
|
20
|
+
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
Scenario: run a feature with a background that passes
|
|
24
|
+
When I run cucumber -q features/background/passing_background.feature --require features
|
|
25
|
+
Then it should pass with
|
|
26
|
+
"""
|
|
27
|
+
Feature: Passing background sample
|
|
28
|
+
|
|
29
|
+
Background:
|
|
30
|
+
Given '10' cukes
|
|
31
|
+
|
|
32
|
+
Scenario: passing background
|
|
33
|
+
Then I should have '10' cukes
|
|
34
|
+
|
|
35
|
+
Scenario: another passing background
|
|
36
|
+
Then I should have '10' cukes
|
|
37
|
+
|
|
38
|
+
2 scenarios (2 passed)
|
|
39
|
+
4 steps (4 passed)
|
|
40
|
+
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
Scenario: run a feature with scenario outlines that has a background that passes
|
|
44
|
+
When I run cucumber -q features/background/scenario_outline_passing_background.feature --require features
|
|
45
|
+
Then it should pass with
|
|
46
|
+
"""
|
|
47
|
+
Feature: Passing background with scenario outlines sample
|
|
48
|
+
|
|
49
|
+
Background:
|
|
50
|
+
Given '10' cukes
|
|
51
|
+
|
|
52
|
+
Scenario Outline: passing background
|
|
53
|
+
Then I should have '<count>' cukes
|
|
54
|
+
|
|
55
|
+
Examples:
|
|
56
|
+
| count |
|
|
57
|
+
| 10 |
|
|
58
|
+
|
|
59
|
+
Scenario Outline: another passing background
|
|
60
|
+
Then I should have '<count>' cukes
|
|
61
|
+
|
|
62
|
+
Examples:
|
|
63
|
+
| count |
|
|
64
|
+
| 10 |
|
|
65
|
+
|
|
66
|
+
2 scenarios (2 passed)
|
|
67
|
+
4 steps (4 passed)
|
|
68
|
+
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
Scenario: run a feature with scenario outlines that has a background that passes
|
|
72
|
+
When I run cucumber -q features/background/background_tagged_before_on_outline.feature --require features
|
|
73
|
+
Then it should pass with
|
|
74
|
+
"""
|
|
75
|
+
@background_tagged_before_on_outline
|
|
76
|
+
Feature: Background tagged Before on Outline
|
|
77
|
+
|
|
78
|
+
Background:
|
|
79
|
+
Given passing without a table
|
|
80
|
+
|
|
81
|
+
Scenario Outline: passing background
|
|
82
|
+
Then I should have '<count>' cukes
|
|
83
|
+
|
|
84
|
+
Examples:
|
|
85
|
+
| count |
|
|
86
|
+
| 888 |
|
|
87
|
+
|
|
88
|
+
1 scenario (1 passed)
|
|
89
|
+
2 steps (2 passed)
|
|
90
|
+
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
Scenario: run a feature with a background that fails
|
|
94
|
+
When I run cucumber -q features/background/failing_background.feature --require features
|
|
95
|
+
Then it should fail with
|
|
96
|
+
"""
|
|
97
|
+
@after_file
|
|
98
|
+
Feature: Failing background sample
|
|
99
|
+
|
|
100
|
+
Background:
|
|
101
|
+
Given failing without a table
|
|
102
|
+
FAIL (RuntimeError)
|
|
103
|
+
./features/step_definitions/sample_steps.rb:2:in `flunker'
|
|
104
|
+
./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
|
|
105
|
+
features/background/failing_background.feature:5:in `Given failing without a table'
|
|
106
|
+
And '10' cukes
|
|
107
|
+
|
|
108
|
+
Scenario: failing background
|
|
109
|
+
Then I should have '10' cukes
|
|
110
|
+
|
|
111
|
+
Scenario: another failing background
|
|
112
|
+
Then I should have '10' cukes
|
|
113
|
+
|
|
114
|
+
Failing Scenarios:
|
|
115
|
+
cucumber features/background/failing_background.feature:8 # Scenario: failing background
|
|
116
|
+
|
|
117
|
+
2 scenarios (1 failed, 1 skipped)
|
|
118
|
+
6 steps (1 failed, 5 skipped)
|
|
119
|
+
|
|
120
|
+
"""
|
|
121
|
+
And "examples/self_test/tmp/after.txt" should exist
|
|
122
|
+
|
|
123
|
+
Scenario: run a feature with scenario outlines that has a background that fails
|
|
124
|
+
When I run cucumber -q features/background/scenario_outline_failing_background.feature --require features
|
|
125
|
+
Then it should fail with
|
|
126
|
+
"""
|
|
127
|
+
Feature: Failing background with scenario outlines sample
|
|
128
|
+
|
|
129
|
+
Background:
|
|
130
|
+
Given failing without a table
|
|
131
|
+
FAIL (RuntimeError)
|
|
132
|
+
./features/step_definitions/sample_steps.rb:2:in `flunker'
|
|
133
|
+
./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
|
|
134
|
+
features/background/scenario_outline_failing_background.feature:4:in `Given failing without a table'
|
|
135
|
+
|
|
136
|
+
Scenario Outline: failing background
|
|
137
|
+
Then I should have '<count>' cukes
|
|
138
|
+
|
|
139
|
+
Examples:
|
|
140
|
+
| count |
|
|
141
|
+
| 10 |
|
|
142
|
+
|
|
143
|
+
Scenario Outline: another failing background
|
|
144
|
+
Then I should have '<count>' cukes
|
|
145
|
+
|
|
146
|
+
Examples:
|
|
147
|
+
| count |
|
|
148
|
+
| 10 |
|
|
149
|
+
|
|
150
|
+
2 scenarios (1 failed, 1 skipped)
|
|
151
|
+
4 steps (1 failed, 3 skipped)
|
|
152
|
+
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
Scenario: run a feature with a background that is pending
|
|
156
|
+
When I run cucumber -q features/background/pending_background.feature --require features
|
|
157
|
+
Then it should pass with
|
|
158
|
+
"""
|
|
159
|
+
Feature: Pending background sample
|
|
160
|
+
|
|
161
|
+
Background:
|
|
162
|
+
Given pending
|
|
163
|
+
|
|
164
|
+
Scenario: pending background
|
|
165
|
+
Then I should have '10' cukes
|
|
166
|
+
|
|
167
|
+
Scenario: another pending background
|
|
168
|
+
Then I should have '10' cukes
|
|
169
|
+
|
|
170
|
+
2 scenarios (2 undefined)
|
|
171
|
+
4 steps (2 skipped, 2 undefined)
|
|
172
|
+
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
Scenario: background passes with first scenario but fails with second
|
|
176
|
+
When I run cucumber -q features/background/failing_background_after_success.feature --require features
|
|
177
|
+
Then it should fail with
|
|
178
|
+
"""
|
|
179
|
+
Feature: Failing background after previously successful background sample
|
|
180
|
+
|
|
181
|
+
Background:
|
|
182
|
+
Given passing without a table
|
|
183
|
+
And '10' global cukes
|
|
184
|
+
|
|
185
|
+
Scenario: passing background
|
|
186
|
+
Then I should have '10' global cukes
|
|
187
|
+
|
|
188
|
+
Scenario: failing background
|
|
189
|
+
And '10' global cukes
|
|
190
|
+
FAIL (RuntimeError)
|
|
191
|
+
./features/step_definitions/sample_steps.rb:2:in `flunker'
|
|
192
|
+
./features/step_definitions/sample_steps.rb:37:in `/^'(.+)' global cukes$/'
|
|
193
|
+
features/background/failing_background_after_success.feature:5:in `And '10' global cukes'
|
|
194
|
+
Then I should have '10' global cukes
|
|
195
|
+
|
|
196
|
+
Failing Scenarios:
|
|
197
|
+
cucumber features/background/failing_background_after_success.feature:10 # Scenario: failing background
|
|
198
|
+
|
|
199
|
+
2 scenarios (1 failed, 1 passed)
|
|
200
|
+
6 steps (1 failed, 1 skipped, 4 passed)
|
|
201
|
+
|
|
202
|
+
"""
|
|
203
|
+
|
|
204
|
+
Scenario: background with multline args
|
|
205
|
+
When I run cucumber -q features/background/multiline_args_background.feature --require features
|
|
206
|
+
Then it should pass with
|
|
207
|
+
"""
|
|
208
|
+
Feature: Passing background with multiline args
|
|
209
|
+
|
|
210
|
+
Background:
|
|
211
|
+
Given table
|
|
212
|
+
| a | b |
|
|
213
|
+
| c | d |
|
|
214
|
+
And multiline string
|
|
215
|
+
\"\"\"
|
|
216
|
+
I'm a cucumber and I'm okay.
|
|
217
|
+
I sleep all night and I test all day
|
|
218
|
+
\"\"\"
|
|
219
|
+
|
|
220
|
+
Scenario: passing background
|
|
221
|
+
Then the table should be
|
|
222
|
+
| a | b |
|
|
223
|
+
| c | d |
|
|
224
|
+
Then the multiline string should be
|
|
225
|
+
\"\"\"
|
|
226
|
+
I'm a cucumber and I'm okay.
|
|
227
|
+
I sleep all night and I test all day
|
|
228
|
+
\"\"\"
|
|
229
|
+
|
|
230
|
+
Scenario: another passing background
|
|
231
|
+
Then the table should be
|
|
232
|
+
| a | b |
|
|
233
|
+
| c | d |
|
|
234
|
+
Then the multiline string should be
|
|
235
|
+
\"\"\"
|
|
236
|
+
I'm a cucumber and I'm okay.
|
|
237
|
+
I sleep all night and I test all day
|
|
238
|
+
\"\"\"
|
|
239
|
+
|
|
240
|
+
2 scenarios (2 passed)
|
|
241
|
+
8 steps (8 passed)
|
|
242
|
+
|
|
243
|
+
"""
|
|
244
|
+
|
|
245
|
+
Scenario: background with name
|
|
246
|
+
When I run cucumber -q features/background/background_with_name.feature --require features
|
|
247
|
+
Then it should pass with
|
|
248
|
+
"""
|
|
249
|
+
Feature: background with name
|
|
250
|
+
|
|
251
|
+
Background: I'm a background and I'm ok
|
|
252
|
+
Given '10' cukes
|
|
253
|
+
|
|
254
|
+
Scenario: example
|
|
255
|
+
Then I should have '10' cukes
|
|
256
|
+
|
|
257
|
+
1 scenario (1 passed)
|
|
258
|
+
2 steps (2 passed)
|
|
259
|
+
|
|
260
|
+
"""
|
|
261
|
+
|
|
262
|
+
Scenario: https://rspec.lighthouseapp.com/projects/16211/tickets/329
|
|
263
|
+
Given a standard Cucumber project directory structure
|
|
264
|
+
And a file named "features/only_background_and_hooks.feature" with:
|
|
265
|
+
"""
|
|
266
|
+
Feature: woo yeah
|
|
267
|
+
|
|
268
|
+
Background:
|
|
269
|
+
Given whatever
|
|
270
|
+
|
|
271
|
+
"""
|
|
272
|
+
And a file named "features/only_background_and_hooks_steps.rb" with:
|
|
273
|
+
"""
|
|
274
|
+
require 'spec/expectations'
|
|
275
|
+
|
|
276
|
+
Before do
|
|
277
|
+
$before = true
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
After do
|
|
281
|
+
$after = true
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
Given /^whatever$/ do
|
|
285
|
+
$before.should == true
|
|
286
|
+
$step = true
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
at_exit do
|
|
290
|
+
$before.should == true
|
|
291
|
+
$step.should == true
|
|
292
|
+
$after.should == true
|
|
293
|
+
end
|
|
294
|
+
"""
|
|
295
|
+
When I run cucumber features/only_background_and_hooks.feature
|
|
296
|
+
Then it should pass
|
|
297
|
+
And the output should be
|
|
298
|
+
"""
|
|
299
|
+
Feature: woo yeah
|
|
300
|
+
|
|
301
|
+
Background: # features/only_background_and_hooks.feature:3
|
|
302
|
+
Given whatever # features/only_background_and_hooks_steps.rb:11
|
|
303
|
+
|
|
304
|
+
0 scenarios
|
|
305
|
+
1 step (1 passed)
|
|
306
|
+
|
|
307
|
+
"""
|
|
308
|
+
And STDERR should be empty
|