dwaite-cucumber 0.3.101
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/History.txt +1067 -0
- data/License.txt +22 -0
- data/Manifest.txt +453 -0
- data/README.txt +4 -0
- data/Rakefile +9 -0
- data/bin/cucumber +17 -0
- data/config/hoe.rb +78 -0
- data/config/requirements.rb +15 -0
- data/cucumber.yml +2 -0
- data/examples/cs/README.textile +1 -0
- data/examples/cs/Rakefile +12 -0
- data/examples/cs/compile.bat +1 -0
- data/examples/cs/features/addition.feature +16 -0
- data/examples/cs/features/step_definitons/calculator_steps.rb +19 -0
- data/examples/cs/src/demo/Calculator.cs +20 -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/step_definitons/kalkulator_steps.rb +24 -0
- data/examples/i18n/da/features/summering.feature +18 -0
- data/examples/i18n/da/lib/kalkulator.rb +11 -0
- data/examples/i18n/de/Rakefile +6 -0
- data/examples/i18n/de/features/addition.feature +17 -0
- data/examples/i18n/de/features/division.feature +10 -0
- data/examples/i18n/de/features/step_definitons/calculator_steps.rb +24 -0
- data/examples/i18n/de/lib/calculator.rb +14 -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/en-lol/Rakefile +6 -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/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/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/step_definitions/calculatrice_steps.rb +25 -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/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/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/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/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/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/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/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/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 +6 -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/Rakefile +6 -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/java/README.textile +18 -0
- data/examples/java/build.xml +33 -0
- data/examples/java/features/hello.feature +11 -0
- data/examples/java/features/step_definitons/hello_steps.rb +23 -0
- data/examples/java/features/step_definitons/tree_steps.rb +14 -0
- data/examples/java/features/tree.feature +9 -0
- data/examples/java/src/cucumber/demo/Hello.java +16 -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/pure_java/README.textile +5 -0
- data/examples/python/features/fibonacci.feature +19 -0
- data/examples/python/features/step_definitions/fib_steps.py +3 -0
- data/examples/python/features/step_definitions/fib_steps.rb +7 -0
- data/examples/python/features/support/env.rb +21 -0
- data/examples/python/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/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 +93 -0
- data/examples/self_test/features/support/env.rb +24 -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/transform_sample.feature +10 -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 +32 -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/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 +16 -0
- data/examples/tickets/features/172.feature +28 -0
- data/examples/tickets/features/177/1.feature +29 -0
- data/examples/tickets/features/177/2.feature +21 -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 +13 -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 +6 -0
- data/examples/watir/features/search.feature +12 -0
- data/examples/watir/features/step_definitons/search_steps.rb +26 -0
- data/examples/watir/features/support/env.rb +32 -0
- data/features/background.feature +311 -0
- data/features/bug_371.feature +32 -0
- data/features/cucumber_cli.feature +667 -0
- data/features/cucumber_cli_diff_disabled.feature +54 -0
- data/features/cucumber_cli_outlines.feature +109 -0
- data/features/custom_formatter.feature +11 -0
- data/features/drb_server_integration.feature +173 -0
- data/features/exception_in_after_block.feature +102 -0
- data/features/exception_in_after_step_block.feature +104 -0
- data/features/exception_in_before_block.feature +47 -0
- data/features/exclude_files.feature +20 -0
- data/features/expand.feature +49 -0
- data/features/html_formatter/a.html +183 -0
- data/features/html_formatter.feature +7 -0
- data/features/junit_formatter.feature +89 -0
- data/features/language_from_header.feature +30 -0
- data/features/multiline_names.feature +43 -0
- data/features/post_configuration_hook.feature +37 -0
- data/features/profiles.feature +112 -0
- data/features/rake_task.feature +178 -0
- data/features/report_called_undefined_steps.feature +35 -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/steps_formatter.feature +25 -0
- data/features/support/env.rb +139 -0
- data/features/table_diffing.feature +45 -0
- data/features/transform.feature +24 -0
- data/features/unicode_table.feature +35 -0
- data/features/usage.feature +132 -0
- data/features/work_in_progress.feature +158 -0
- data/gem_tasks/contributors.rake +12 -0
- data/gem_tasks/deployment.rake +11 -0
- data/gem_tasks/environment.rake +7 -0
- data/gem_tasks/features.rake +11 -0
- data/gem_tasks/fix_cr_lf.rake +10 -0
- data/gem_tasks/flog.rake +4 -0
- data/gem_tasks/gemspec.rake +10 -0
- data/gem_tasks/rspec.rake +45 -0
- data/gem_tasks/sass.rake +4 -0
- data/gem_tasks/sdoc.rake +7 -0
- data/lib/README.rdoc +12 -0
- data/lib/autotest/cucumber.rb +6 -0
- data/lib/autotest/cucumber_mixin.rb +125 -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/ast/background.rb +63 -0
- data/lib/cucumber/ast/comment.rb +31 -0
- data/lib/cucumber/ast/examples.rb +32 -0
- data/lib/cucumber/ast/feature.rb +81 -0
- data/lib/cucumber/ast/feature_element.rb +61 -0
- data/lib/cucumber/ast/features.rb +40 -0
- data/lib/cucumber/ast/outline_table.rb +146 -0
- data/lib/cucumber/ast/py_string.rb +57 -0
- data/lib/cucumber/ast/scenario.rb +108 -0
- data/lib/cucumber/ast/scenario_outline.rb +96 -0
- data/lib/cucumber/ast/step.rb +116 -0
- data/lib/cucumber/ast/step_collection.rb +76 -0
- data/lib/cucumber/ast/step_invocation.rb +166 -0
- data/lib/cucumber/ast/table.rb +626 -0
- data/lib/cucumber/ast/tags.rb +44 -0
- data/lib/cucumber/ast/visitor.rb +115 -0
- data/lib/cucumber/ast.rb +29 -0
- data/lib/cucumber/broadcaster.rb +13 -0
- data/lib/cucumber/cli/configuration.rb +190 -0
- data/lib/cucumber/cli/drb_client.rb +26 -0
- data/lib/cucumber/cli/language_help_formatter.rb +61 -0
- data/lib/cucumber/cli/main.rb +116 -0
- data/lib/cucumber/cli/options.rb +394 -0
- data/lib/cucumber/cli/profile_loader.rb +70 -0
- data/lib/cucumber/constantize.rb +28 -0
- data/lib/cucumber/core_ext/instance_exec.rb +93 -0
- data/lib/cucumber/core_ext/proc.rb +29 -0
- data/lib/cucumber/core_ext/string.rb +48 -0
- data/lib/cucumber/feature_file.rb +54 -0
- data/lib/cucumber/filter.rb +52 -0
- data/lib/cucumber/formatter/ansicolor.rb +143 -0
- data/lib/cucumber/formatter/color_io.rb +23 -0
- data/lib/cucumber/formatter/console.rb +185 -0
- data/lib/cucumber/formatter/cucumber.css +132 -0
- data/lib/cucumber/formatter/cucumber.sass +139 -0
- data/lib/cucumber/formatter/duration.rb +13 -0
- data/lib/cucumber/formatter/html.rb +261 -0
- data/lib/cucumber/formatter/junit.rb +121 -0
- data/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
- data/lib/cucumber/formatter/pdf.rb +217 -0
- data/lib/cucumber/formatter/pretty.rb +222 -0
- data/lib/cucumber/formatter/profile.rb +78 -0
- data/lib/cucumber/formatter/progress.rb +67 -0
- data/lib/cucumber/formatter/rerun.rb +46 -0
- data/lib/cucumber/formatter/steps.rb +50 -0
- data/lib/cucumber/formatter/tag_cloud.rb +29 -0
- data/lib/cucumber/formatter/unicode.rb +35 -0
- data/lib/cucumber/formatter/usage.rb +86 -0
- data/lib/cucumber/formatters/unicode.rb +7 -0
- data/lib/cucumber/language_support/language_methods.rb +75 -0
- data/lib/cucumber/language_support/step_definition_methods.rb +46 -0
- data/lib/cucumber/language_support.rb +30 -0
- data/lib/cucumber/languages.yml +561 -0
- data/lib/cucumber/parser/feature.rb +1838 -0
- data/lib/cucumber/parser/feature.tt +351 -0
- data/lib/cucumber/parser/i18n.tt +42 -0
- data/lib/cucumber/parser/natural_language.rb +72 -0
- data/lib/cucumber/parser/table.rb +417 -0
- data/lib/cucumber/parser/table.tt +71 -0
- data/lib/cucumber/parser/treetop_ext.rb +53 -0
- data/lib/cucumber/parser.rb +6 -0
- data/lib/cucumber/platform.rb +27 -0
- data/lib/cucumber/py_support/py_dsl.py +8 -0
- data/lib/cucumber/py_support/py_language.py +2 -0
- data/lib/cucumber/py_support/py_language.rb +68 -0
- data/lib/cucumber/rails/rspec.rb +10 -0
- data/lib/cucumber/rails/world.rb +100 -0
- data/lib/cucumber/rake/task.rb +241 -0
- data/lib/cucumber/rb_support/rb_dsl.rb +100 -0
- data/lib/cucumber/rb_support/rb_hook.rb +18 -0
- data/lib/cucumber/rb_support/rb_language.rb +153 -0
- data/lib/cucumber/rb_support/rb_step_definition.rb +60 -0
- data/lib/cucumber/rb_support/rb_world.rb +93 -0
- data/lib/cucumber/rspec_neuter.rb +23 -0
- data/lib/cucumber/step_match.rb +61 -0
- data/lib/cucumber/step_mother.rb +307 -0
- data/lib/cucumber/version.rb +10 -0
- data/lib/cucumber/webrat/element_locator.rb +87 -0
- data/lib/cucumber/webrat/table_locator.rb +1 -0
- data/lib/cucumber.rb +10 -0
- data/rails_generators/cucumber/USAGE +11 -0
- data/rails_generators/cucumber/cucumber_generator.rb +70 -0
- data/rails_generators/cucumber/templates/cucumber +9 -0
- data/rails_generators/cucumber/templates/cucumber.rake +36 -0
- data/rails_generators/cucumber/templates/cucumber_environment.rb +26 -0
- data/rails_generators/cucumber/templates/env.rb +27 -0
- data/rails_generators/cucumber/templates/paths.rb +27 -0
- data/rails_generators/cucumber/templates/spork_env.rb +35 -0
- data/rails_generators/cucumber/templates/webrat_steps.rb +236 -0
- data/rails_generators/feature/USAGE +12 -0
- data/rails_generators/feature/feature_generator.rb +40 -0
- data/rails_generators/feature/templates/feature.erb +31 -0
- data/rails_generators/feature/templates/steps.erb +14 -0
- data/spec/cucumber/ast/background_spec.rb +60 -0
- data/spec/cucumber/ast/feature_element_spec.rb +40 -0
- data/spec/cucumber/ast/feature_factory.rb +62 -0
- data/spec/cucumber/ast/feature_spec.rb +44 -0
- data/spec/cucumber/ast/py_string_spec.rb +51 -0
- data/spec/cucumber/ast/scenario_outline_spec.rb +72 -0
- data/spec/cucumber/ast/scenario_spec.rb +43 -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 +394 -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 +331 -0
- data/spec/cucumber/cli/profile_loader_spec.rb +10 -0
- data/spec/cucumber/core_ext/proc_spec.rb +68 -0
- data/spec/cucumber/core_ext/string_spec.rb +43 -0
- data/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
- data/spec/cucumber/formatter/color_io_spec.rb +27 -0
- data/spec/cucumber/formatter/duration_spec.rb +22 -0
- data/spec/cucumber/formatter/html_spec.rb +18 -0
- data/spec/cucumber/formatter/progress_spec.rb +33 -0
- data/spec/cucumber/parser/feature_parser_spec.rb +396 -0
- data/spec/cucumber/parser/table_parser_spec.rb +52 -0
- data/spec/cucumber/rails/stubs/mini_rails.rb +18 -0
- data/spec/cucumber/rails/stubs/test_help.rb +1 -0
- data/spec/cucumber/rails/world_spec.rb +16 -0
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +123 -0
- data/spec/cucumber/sell_cucumbers.feature +19 -0
- data/spec/cucumber/step_mother_spec.rb +282 -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/world/pending_spec.rb +46 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +18 -0
- metadata +561 -0
@@ -0,0 +1,109 @@
|
|
1
|
+
Feature: Cucumber command line
|
2
|
+
In order to write better software
|
3
|
+
Developers should be able to execute requirements as tests
|
4
|
+
|
5
|
+
@mri186
|
6
|
+
Scenario: Run scenario outline with filtering on outline name
|
7
|
+
When I run cucumber -q features --name "Test state"
|
8
|
+
Then it should fail with
|
9
|
+
"""
|
10
|
+
Feature: Outline Sample
|
11
|
+
|
12
|
+
Scenario Outline: Test state
|
13
|
+
Given <state> without a table
|
14
|
+
Given <other_state> without a table
|
15
|
+
|
16
|
+
Examples: Rainbow colours
|
17
|
+
| state | other_state |
|
18
|
+
| missing | passing |
|
19
|
+
| passing | passing |
|
20
|
+
| failing | passing |
|
21
|
+
FAIL (RuntimeError)
|
22
|
+
./features/step_definitions/sample_steps.rb:2:in `flunker'
|
23
|
+
./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
|
24
|
+
features/outline_sample.feature:6:in `Given <state> without a table'
|
25
|
+
|
26
|
+
Examples: Only passing
|
27
|
+
| state | other_state |
|
28
|
+
| passing | passing |
|
29
|
+
|
30
|
+
4 scenarios (1 failed, 1 undefined, 2 passed)
|
31
|
+
8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
|
32
|
+
|
33
|
+
"""
|
34
|
+
|
35
|
+
@mri186
|
36
|
+
Scenario: Run scenario outline steps only
|
37
|
+
When I run cucumber -q features/outline_sample.feature:7
|
38
|
+
Then it should fail with
|
39
|
+
"""
|
40
|
+
Feature: Outline Sample
|
41
|
+
|
42
|
+
Scenario Outline: Test state
|
43
|
+
Given <state> without a table
|
44
|
+
Given <other_state> without a table
|
45
|
+
|
46
|
+
Examples: Rainbow colours
|
47
|
+
| state | other_state |
|
48
|
+
| missing | passing |
|
49
|
+
| passing | passing |
|
50
|
+
| failing | passing |
|
51
|
+
FAIL (RuntimeError)
|
52
|
+
./features/step_definitions/sample_steps.rb:2:in `flunker'
|
53
|
+
./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
|
54
|
+
features/outline_sample.feature:6:in `Given <state> without a table'
|
55
|
+
|
56
|
+
Examples: Only passing
|
57
|
+
| state | other_state |
|
58
|
+
| passing | passing |
|
59
|
+
|
60
|
+
4 scenarios (1 failed, 1 undefined, 2 passed)
|
61
|
+
8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
|
62
|
+
|
63
|
+
"""
|
64
|
+
|
65
|
+
@mri186
|
66
|
+
Scenario: Run single failing scenario outline table row
|
67
|
+
When I run cucumber features/outline_sample.feature:12
|
68
|
+
Then it should fail with
|
69
|
+
"""
|
70
|
+
Feature: Outline Sample
|
71
|
+
|
72
|
+
Scenario Outline: Test state # features/outline_sample.feature:5
|
73
|
+
Given <state> without a table # features/step_definitions/sample_steps.rb:15
|
74
|
+
Given <other_state> without a table # features/step_definitions/sample_steps.rb:12
|
75
|
+
|
76
|
+
Examples: Rainbow colours
|
77
|
+
| state | other_state |
|
78
|
+
| failing | passing |
|
79
|
+
FAIL (RuntimeError)
|
80
|
+
./features/step_definitions/sample_steps.rb:2:in `flunker'
|
81
|
+
./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
|
82
|
+
features/outline_sample.feature:6:in `Given <state> without a table'
|
83
|
+
|
84
|
+
1 scenario (1 failed)
|
85
|
+
2 steps (1 failed, 1 skipped)
|
86
|
+
|
87
|
+
"""
|
88
|
+
|
89
|
+
# There are 10 characters in the progress, but only 8 reported steps. Needs investigation.
|
90
|
+
# Looks like we're outputting too many characters.
|
91
|
+
@mri186
|
92
|
+
Scenario: Run all with progress formatter
|
93
|
+
When I run cucumber -q --format progress features/outline_sample.feature
|
94
|
+
Then it should fail with
|
95
|
+
"""
|
96
|
+
--U-..F-..
|
97
|
+
|
98
|
+
(::) failed steps (::)
|
99
|
+
|
100
|
+
FAIL (RuntimeError)
|
101
|
+
./features/step_definitions/sample_steps.rb:2:in `flunker'
|
102
|
+
./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
|
103
|
+
features/outline_sample.feature:6:in `Given <state> without a table'
|
104
|
+
|
105
|
+
5 scenarios (1 failed, 1 undefined, 3 passed)
|
106
|
+
8 steps (1 failed, 2 skipped, 1 undefined, 4 passed)
|
107
|
+
|
108
|
+
"""
|
109
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Feature: Custom Formatter
|
2
|
+
|
3
|
+
Scenario: count tags
|
4
|
+
When I run cucumber --format Cucumber::Formatter::TagCloud features
|
5
|
+
Then it should fail with
|
6
|
+
"""
|
7
|
+
| after_file | background_tagged_before_on_outline | four | lots | one | sample_four | sample_one | sample_three | sample_two | three | two |
|
8
|
+
| 1 | 1 | 1 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 1 |
|
9
|
+
|
10
|
+
"""
|
11
|
+
|
@@ -0,0 +1,173 @@
|
|
1
|
+
Feature: DRb Server Integration
|
2
|
+
To prevent waiting for Rails and other large Ruby applications to load their environments
|
3
|
+
for each feature run Cucumber ships with a DRb client that can speak to a server which
|
4
|
+
loads up the environment only once.
|
5
|
+
|
6
|
+
Background: App with Spork support
|
7
|
+
Spork is a gem that has a DRb server and the scenarios below illustrate how to use it.
|
8
|
+
However, any DRb server that adheres to the protocol that the client expects would work.
|
9
|
+
|
10
|
+
Given a standard Cucumber project directory structure
|
11
|
+
And a file named "features/support/env.rb" with:
|
12
|
+
"""
|
13
|
+
require 'rubygems'
|
14
|
+
require 'spork'
|
15
|
+
|
16
|
+
Spork.prefork do
|
17
|
+
puts "I'm loading all the heavy stuff..."
|
18
|
+
end
|
19
|
+
|
20
|
+
Spork.each_run do
|
21
|
+
puts "I'm loading the stuff just for this run..."
|
22
|
+
end
|
23
|
+
"""
|
24
|
+
And a file named "features/sample.feature" with:
|
25
|
+
"""
|
26
|
+
# language: en
|
27
|
+
Feature: Sample
|
28
|
+
Scenario: this is a test
|
29
|
+
Given I am just testing stuff
|
30
|
+
"""
|
31
|
+
And a file named "features/essai.feature" with:
|
32
|
+
"""
|
33
|
+
# language: fr
|
34
|
+
Fonction: Essai
|
35
|
+
Scenario: ceci est un test
|
36
|
+
Soit je teste
|
37
|
+
"""
|
38
|
+
And a file named "features/step_definitions/all_your_steps_are_belong_to_us.rb" with:
|
39
|
+
"""
|
40
|
+
Given /^I am just testing stuff$/ do
|
41
|
+
# no-op
|
42
|
+
end
|
43
|
+
|
44
|
+
Soit /^je teste$/ do
|
45
|
+
# no-op
|
46
|
+
end
|
47
|
+
"""
|
48
|
+
|
49
|
+
Scenario: Feature Passing with --drb flag
|
50
|
+
Given I am running spork in the background
|
51
|
+
|
52
|
+
When I run cucumber features --drb
|
53
|
+
Then it should pass
|
54
|
+
And STDERR should be empty
|
55
|
+
And the output should contain
|
56
|
+
"""
|
57
|
+
1 step (1 passed)
|
58
|
+
"""
|
59
|
+
And the output should contain
|
60
|
+
"""
|
61
|
+
I'm loading the stuff just for this run...
|
62
|
+
"""
|
63
|
+
And the output should not contain
|
64
|
+
"""
|
65
|
+
I'm loading all the heavy stuff...
|
66
|
+
"""
|
67
|
+
|
68
|
+
Scenario: Feature Failing with --drb flag
|
69
|
+
Given a file named "features/step_definitions/all_your_steps_are_belong_to_us.rb" with:
|
70
|
+
"""
|
71
|
+
Given /^I am just testing stuff$/ do
|
72
|
+
raise "Oh noes!"
|
73
|
+
end
|
74
|
+
"""
|
75
|
+
And I am running spork in the background
|
76
|
+
|
77
|
+
When I run cucumber features --drb
|
78
|
+
Then it should fail
|
79
|
+
And the output should contain
|
80
|
+
"""
|
81
|
+
1 step (1 failed)
|
82
|
+
"""
|
83
|
+
And the output should contain
|
84
|
+
"""
|
85
|
+
I'm loading the stuff just for this run...
|
86
|
+
"""
|
87
|
+
And the output should not contain
|
88
|
+
"""
|
89
|
+
I'm loading all the heavy stuff...
|
90
|
+
"""
|
91
|
+
|
92
|
+
Scenario: Feature Run with --drb flag with no DRb server running
|
93
|
+
Cucumber will fall back on running the features locally in this case.
|
94
|
+
|
95
|
+
Given I am not running a DRb server in the background
|
96
|
+
|
97
|
+
When I run cucumber features --drb
|
98
|
+
Then it should pass
|
99
|
+
And STDERR should match
|
100
|
+
"""
|
101
|
+
No DRb server is running. Running features locally:
|
102
|
+
"""
|
103
|
+
And the output should contain
|
104
|
+
"""
|
105
|
+
I'm loading all the heavy stuff...
|
106
|
+
I'm loading the stuff just for this run...
|
107
|
+
"""
|
108
|
+
And the output should contain
|
109
|
+
"""
|
110
|
+
1 step (1 passed)
|
111
|
+
"""
|
112
|
+
|
113
|
+
|
114
|
+
Scenario: Feature Run with --drb flag *defined in a profile* with no DRb server running
|
115
|
+
|
116
|
+
Given I am not running a DRb server in the background
|
117
|
+
And the following profile is defined:
|
118
|
+
"""
|
119
|
+
server: --drb features
|
120
|
+
"""
|
121
|
+
|
122
|
+
When I run cucumber --profile server
|
123
|
+
Then it should pass
|
124
|
+
And STDERR should match
|
125
|
+
"""
|
126
|
+
No DRb server is running. Running features locally:
|
127
|
+
"""
|
128
|
+
And the output should contain
|
129
|
+
"""
|
130
|
+
I'm loading all the heavy stuff...
|
131
|
+
I'm loading the stuff just for this run...
|
132
|
+
"""
|
133
|
+
|
134
|
+
Scenario: Feature Run with --drb specifying a non-standard port
|
135
|
+
|
136
|
+
Given I am running spork in the background on port 9000
|
137
|
+
|
138
|
+
When I run cucumber features --drb --port 9000
|
139
|
+
Then it should pass
|
140
|
+
And STDERR should be empty
|
141
|
+
And the output should contain
|
142
|
+
"""
|
143
|
+
1 step (1 passed)
|
144
|
+
"""
|
145
|
+
And the output should contain
|
146
|
+
"""
|
147
|
+
I'm loading the stuff just for this run...
|
148
|
+
"""
|
149
|
+
And the output should not contain
|
150
|
+
"""
|
151
|
+
I'm loading all the heavy stuff...
|
152
|
+
"""
|
153
|
+
|
154
|
+
Scenario: Feature Run with $CUCUMBER_DRB environment variable
|
155
|
+
|
156
|
+
Given I have environment variable CUCUMBER_DRB set to "9000"
|
157
|
+
And I am running spork in the background on port 9000
|
158
|
+
|
159
|
+
When I run cucumber features/ --drb
|
160
|
+
Then it should pass
|
161
|
+
And STDERR should be empty
|
162
|
+
And the output should contain
|
163
|
+
"""
|
164
|
+
1 step (1 passed)
|
165
|
+
"""
|
166
|
+
And the output should contain
|
167
|
+
"""
|
168
|
+
I'm loading the stuff just for this run...
|
169
|
+
"""
|
170
|
+
And the output should not contain
|
171
|
+
"""
|
172
|
+
I'm loading all the heavy stuff...
|
173
|
+
"""
|
@@ -0,0 +1,102 @@
|
|
1
|
+
Feature: Exception in After Block
|
2
|
+
In order to use custom assertions at the end of each scenario
|
3
|
+
As a developer
|
4
|
+
I want exceptions raised in After blocks to be handled gracefully and reported by the formatters
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/step_definitions/steps.rb" with:
|
9
|
+
"""
|
10
|
+
Given /^this step does something naughty$/ do
|
11
|
+
@naughty = true
|
12
|
+
end
|
13
|
+
|
14
|
+
Given /^this step works$/ do
|
15
|
+
end
|
16
|
+
"""
|
17
|
+
And a file named "features/support/env.rb" with:
|
18
|
+
"""
|
19
|
+
class NaughtyScenarioException < Exception; end
|
20
|
+
After do
|
21
|
+
if @naughty
|
22
|
+
raise NaughtyScenarioException.new("This scenario has been very very naughty")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
"""
|
26
|
+
|
27
|
+
@mri186
|
28
|
+
Scenario: Handle Exception in standard scenario step and carry on
|
29
|
+
Given a file named "features/naughty_step_in_scenario.feature" with:
|
30
|
+
"""
|
31
|
+
Feature: Sample
|
32
|
+
|
33
|
+
Scenario: Naughty Step
|
34
|
+
Given this step does something naughty
|
35
|
+
|
36
|
+
Scenario: Success
|
37
|
+
Given this step works
|
38
|
+
"""
|
39
|
+
When I run cucumber features
|
40
|
+
Then it should fail with
|
41
|
+
"""
|
42
|
+
Feature: Sample
|
43
|
+
|
44
|
+
Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
|
45
|
+
Given this step does something naughty # features/step_definitions/steps.rb:1
|
46
|
+
This scenario has been very very naughty (NaughtyScenarioException)
|
47
|
+
./features/support/env.rb:4:in `After'
|
48
|
+
|
49
|
+
Scenario: Success # features/naughty_step_in_scenario.feature:6
|
50
|
+
Given this step works # features/step_definitions/steps.rb:5
|
51
|
+
|
52
|
+
Failing Scenarios:
|
53
|
+
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
|
54
|
+
|
55
|
+
2 scenarios (1 failed, 1 passed)
|
56
|
+
2 steps (2 passed)
|
57
|
+
|
58
|
+
"""
|
59
|
+
|
60
|
+
@mri186
|
61
|
+
Scenario: Handle Exception in scenario outline table row and carry on
|
62
|
+
Given a file named "features/naughty_step_in_scenario_outline.feature" with:
|
63
|
+
"""
|
64
|
+
Feature: Sample
|
65
|
+
|
66
|
+
Scenario Outline: Naughty Step
|
67
|
+
Given this step <Might Work>
|
68
|
+
|
69
|
+
Examples:
|
70
|
+
| Might Work |
|
71
|
+
| works |
|
72
|
+
| does something naughty |
|
73
|
+
| works |
|
74
|
+
|
75
|
+
Scenario: Success
|
76
|
+
Given this step works
|
77
|
+
|
78
|
+
"""
|
79
|
+
When I run cucumber features
|
80
|
+
Then it should fail with
|
81
|
+
"""
|
82
|
+
Feature: Sample
|
83
|
+
|
84
|
+
Scenario Outline: Naughty Step # features/naughty_step_in_scenario_outline.feature:3
|
85
|
+
Given this step <Might Work> # features/step_definitions/steps.rb:5
|
86
|
+
|
87
|
+
Examples:
|
88
|
+
| Might Work |
|
89
|
+
| works |
|
90
|
+
| does something naughty |
|
91
|
+
This scenario has been very very naughty (NaughtyScenarioException)
|
92
|
+
./features/support/env.rb:4:in `After'
|
93
|
+
| works |
|
94
|
+
|
95
|
+
Scenario: Success # features/naughty_step_in_scenario_outline.feature:12
|
96
|
+
Given this step works # features/step_definitions/steps.rb:5
|
97
|
+
|
98
|
+
4 scenarios (1 failed, 3 passed)
|
99
|
+
4 steps (4 passed)
|
100
|
+
|
101
|
+
"""
|
102
|
+
|
@@ -0,0 +1,104 @@
|
|
1
|
+
Feature: Exception in AfterStep Block
|
2
|
+
In order to use custom assertions at the end of each step
|
3
|
+
As a developer
|
4
|
+
I want exceptions raised in AfterStep blocks to be handled gracefully and reported by the formatters
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/step_definitions/steps.rb" with:
|
9
|
+
"""
|
10
|
+
Given /^this step does something naughty$/ do
|
11
|
+
@naughty = true
|
12
|
+
end
|
13
|
+
|
14
|
+
Given /^this step works$/ do
|
15
|
+
end
|
16
|
+
"""
|
17
|
+
And a file named "features/support/env.rb" with:
|
18
|
+
"""
|
19
|
+
class NaughtyStepException < Exception; end
|
20
|
+
AfterStep do
|
21
|
+
if @naughty
|
22
|
+
raise NaughtyStepException.new("This step has been very very naughty")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
"""
|
26
|
+
|
27
|
+
@mri186
|
28
|
+
Scenario: Handle Exception in standard scenario step and carry on
|
29
|
+
Given a file named "features/naughty_step_in_scenario.feature" with:
|
30
|
+
"""
|
31
|
+
Feature: Sample
|
32
|
+
|
33
|
+
Scenario: Naughty Step
|
34
|
+
Given this step does something naughty
|
35
|
+
|
36
|
+
Scenario: Success
|
37
|
+
Given this step works
|
38
|
+
"""
|
39
|
+
When I run cucumber features
|
40
|
+
Then it should fail with
|
41
|
+
"""
|
42
|
+
Feature: Sample
|
43
|
+
|
44
|
+
Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
|
45
|
+
Given this step does something naughty # features/step_definitions/steps.rb:1
|
46
|
+
This step has been very very naughty (NaughtyStepException)
|
47
|
+
./features/support/env.rb:4:in `AfterStep'
|
48
|
+
features/naughty_step_in_scenario.feature:4:in `Given this step does something naughty'
|
49
|
+
|
50
|
+
Scenario: Success # features/naughty_step_in_scenario.feature:6
|
51
|
+
Given this step works # features/step_definitions/steps.rb:5
|
52
|
+
|
53
|
+
Failing Scenarios:
|
54
|
+
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
|
55
|
+
|
56
|
+
2 scenarios (1 failed, 1 passed)
|
57
|
+
2 steps (1 failed, 1 passed)
|
58
|
+
|
59
|
+
"""
|
60
|
+
|
61
|
+
@mri186
|
62
|
+
Scenario: Handle Exception in scenario outline table row and carry on
|
63
|
+
Given a file named "features/naughty_step_in_scenario_outline.feature" with:
|
64
|
+
"""
|
65
|
+
Feature: Sample
|
66
|
+
|
67
|
+
Scenario Outline: Naughty Step
|
68
|
+
Given this step <Might Work>
|
69
|
+
|
70
|
+
Examples:
|
71
|
+
| Might Work |
|
72
|
+
| works |
|
73
|
+
| does something naughty |
|
74
|
+
| works |
|
75
|
+
|
76
|
+
Scenario: Success
|
77
|
+
Given this step works
|
78
|
+
|
79
|
+
"""
|
80
|
+
When I run cucumber features
|
81
|
+
Then it should fail with
|
82
|
+
"""
|
83
|
+
Feature: Sample
|
84
|
+
|
85
|
+
Scenario Outline: Naughty Step # features/naughty_step_in_scenario_outline.feature:3
|
86
|
+
Given this step <Might Work> # features/step_definitions/steps.rb:5
|
87
|
+
|
88
|
+
Examples:
|
89
|
+
| Might Work |
|
90
|
+
| works |
|
91
|
+
| does something naughty |
|
92
|
+
This step has been very very naughty (NaughtyStepException)
|
93
|
+
./features/support/env.rb:4:in `AfterStep'
|
94
|
+
features/naughty_step_in_scenario_outline.feature:4:in `Given this step <Might Work>'
|
95
|
+
| works |
|
96
|
+
|
97
|
+
Scenario: Success # features/naughty_step_in_scenario_outline.feature:12
|
98
|
+
Given this step works # features/step_definitions/steps.rb:5
|
99
|
+
|
100
|
+
4 scenarios (1 failed, 3 passed)
|
101
|
+
4 steps (1 failed, 3 passed)
|
102
|
+
|
103
|
+
"""
|
104
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
Feature: Exception in Before Block
|
2
|
+
In order to know with confidence that my before blocks have run OK
|
3
|
+
As a developer
|
4
|
+
I want exceptions raised in Before blocks to be handled gracefully and reported by the formatters
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/step_definitions/steps.rb" with:
|
9
|
+
"""
|
10
|
+
Given /^this step works$/ do
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
And a file named "features/support/env.rb" with:
|
14
|
+
"""
|
15
|
+
class SomeSetupException < Exception; end
|
16
|
+
class BadStepException < Exception; end
|
17
|
+
Before do
|
18
|
+
raise SomeSetupException.new("I cannot even start this scenario")
|
19
|
+
end
|
20
|
+
"""
|
21
|
+
|
22
|
+
@mri186
|
23
|
+
Scenario: Handle Exception in standard scenario step and carry on
|
24
|
+
Given a file named "features/naughty_step_in_scenario.feature" with:
|
25
|
+
"""
|
26
|
+
Feature: Sample
|
27
|
+
|
28
|
+
Scenario: Run a good step
|
29
|
+
Given this step works
|
30
|
+
"""
|
31
|
+
When I run cucumber features
|
32
|
+
Then it should fail with
|
33
|
+
"""
|
34
|
+
Feature: Sample
|
35
|
+
|
36
|
+
Scenario: Run a good step # features/naughty_step_in_scenario.feature:3
|
37
|
+
I cannot even start this scenario (SomeSetupException)
|
38
|
+
./features/support/env.rb:4:in `Before'
|
39
|
+
Given this step works # features/step_definitions/steps.rb:1
|
40
|
+
|
41
|
+
Failing Scenarios:
|
42
|
+
cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Run a good step
|
43
|
+
|
44
|
+
1 scenario (1 failed)
|
45
|
+
1 step (1 skipped)
|
46
|
+
|
47
|
+
"""
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature: Exclude ruby and feature files from runs
|
2
|
+
Developers should be able to easily exclude files from cucumber runs
|
3
|
+
This is a nice feature to have in conjunction with profiles, so you can exclude
|
4
|
+
certain environment files from certain runs.
|
5
|
+
|
6
|
+
Scenario: exclude ruby files
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/support/dont_require_me.rb"
|
9
|
+
And a file named "features/step_definitions/fooz.rb"
|
10
|
+
And a file named "features/step_definitions/foof.rb"
|
11
|
+
And a file named "features/step_definitions/foot.rb"
|
12
|
+
And a file named "features/support/require_me.rb"
|
13
|
+
|
14
|
+
When I run cucumber features -q --verbose --exclude features/support/dont --exclude foo[zf]
|
15
|
+
|
16
|
+
Then "features/support/require_me.rb" should be required
|
17
|
+
And "features/step_definitions/foot.rb" should be required
|
18
|
+
And "features/support/dont_require_me.rb" should not be required
|
19
|
+
And "features/step_definitions/foof.rb" should not be required
|
20
|
+
And "features/step_definitions/fooz.rb" should not be required
|
@@ -0,0 +1,49 @@
|
|
1
|
+
Feature: --expand option
|
2
|
+
In order to make it easier to writhe certain editor plugins
|
3
|
+
and also for some people to understand scenarios, Cucumber
|
4
|
+
should expand examples in outlines.
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a standard Cucumber project directory structure
|
8
|
+
And a file named "features/expand_me.feature" with:
|
9
|
+
"""
|
10
|
+
Feature: submit guess
|
11
|
+
Scenario Outline: submit guess
|
12
|
+
Given the secret code is <code>
|
13
|
+
When I guess <guess>
|
14
|
+
Then the mark should be <mark>
|
15
|
+
|
16
|
+
Examples: all colors correct
|
17
|
+
| code | guess | mark |
|
18
|
+
| r g y c | r g y c | bbbb |
|
19
|
+
| r g y c | r g c y | bbww |
|
20
|
+
"""
|
21
|
+
|
22
|
+
Scenario: Expand the outline
|
23
|
+
When I run cucumber -i -q --expand features/expand_me.feature
|
24
|
+
Then STDERR should be empty
|
25
|
+
And it should pass with
|
26
|
+
"""
|
27
|
+
Feature: submit guess
|
28
|
+
|
29
|
+
Scenario Outline: submit guess
|
30
|
+
Given the secret code is <code>
|
31
|
+
When I guess <guess>
|
32
|
+
Then the mark should be <mark>
|
33
|
+
|
34
|
+
Examples: all colors correct
|
35
|
+
|
36
|
+
Scenario: | r g y c | r g y c | bbbb |
|
37
|
+
Given the secret code is r g y c
|
38
|
+
When I guess r g y c
|
39
|
+
Then the mark should be bbbb
|
40
|
+
|
41
|
+
Scenario: | r g y c | r g c y | bbww |
|
42
|
+
Given the secret code is r g y c
|
43
|
+
When I guess r g c y
|
44
|
+
Then the mark should be bbww
|
45
|
+
|
46
|
+
2 scenarios (2 undefined)
|
47
|
+
6 steps (6 undefined)
|
48
|
+
|
49
|
+
"""
|