cucumber 0.1.10 → 0.2.0
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 +223 -5
- data/License.txt +1 -1
- data/Manifest.txt +174 -85
- data/README.txt +2 -39
- data/Rakefile +1 -2
- data/bin/cucumber +2 -2
- data/config/hoe.rb +9 -3
- data/examples/cs/README.textile +1 -22
- data/examples/cs/Rakefile +1 -1
- 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/i18n/README.textile +1 -1
- data/examples/i18n/Rakefile +20 -4
- data/examples/i18n/ar/features/addition.feature +10 -11
- data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +4 -12
- data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +4 -2
- data/examples/i18n/de/features/addition.feature +10 -11
- data/examples/i18n/de/features/division.feature +0 -1
- data/examples/i18n/de/features/step_definitons/calculator_steps.rb +5 -11
- data/examples/i18n/en/features/addition.feature +10 -11
- data/examples/i18n/en/features/division.feature +0 -1
- data/examples/i18n/en/features/step_definitons/calculator_steps.rb +5 -12
- 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/features/adicion.feature +11 -12
- data/examples/i18n/es/features/step_definitons/calculador_steps.rb +10 -11
- data/examples/i18n/es/lib/calculador.rb +4 -1
- data/examples/i18n/et/features/jagamine.feature +9 -0
- data/examples/i18n/et/features/liitmine.feature +10 -11
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +7 -9
- data/examples/i18n/et/lib/kalkulaator.rb +5 -1
- data/examples/i18n/fi/Rakefile +6 -0
- data/examples/i18n/fi/features/jakolasku.feature +9 -0
- data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
- data/examples/i18n/fi/features/yhteenlasku.feature +16 -0
- data/examples/i18n/fi/lib/laskin.rb +14 -0
- data/examples/i18n/fr/features/addition.feature +16 -12
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +14 -11
- data/examples/i18n/fr/lib/calculatrice.rb +1 -1
- data/examples/i18n/id/features/addition.feature +10 -11
- data/examples/i18n/id/features/division.feature +0 -1
- data/examples/i18n/id/features/step_definitons/calculator_steps.rb +5 -12
- data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +4 -2
- data/examples/i18n/ja/features/addition.feature +10 -11
- data/examples/i18n/ja/features/division.feature +2 -3
- data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +6 -12
- data/examples/i18n/ko/Rakefile +6 -0
- data/examples/i18n/ko/features/addition.feature +16 -0
- data/examples/i18n/ko/features/division.feature +10 -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/features/addition.feature +11 -11
- data/examples/i18n/lt/features/division.feature +0 -1
- data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +5 -12
- data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +4 -9
- data/examples/i18n/no/features/summering.feature +1 -0
- data/examples/i18n/no/features/support/env.rb +6 -0
- data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +4 -2
- data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +4 -2
- data/examples/i18n/ru/Rakefile +6 -0
- data/examples/i18n/ru/features/addition.feature +10 -0
- data/examples/i18n/ru/features/consecutive_calculations.feature +16 -0
- data/examples/i18n/ru/features/division.feature +15 -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 +7 -0
- data/examples/i18n/ru/lib/calculator.rb +24 -0
- data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +4 -2
- data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +5 -3
- data/examples/i18n/zh-TW/Rakefile +6 -0
- data/examples/i18n/zh-TW/features/addition.feature +16 -0
- data/examples/i18n/zh-TW/features/division.feature +10 -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/features/step_definitons/hello_steps.rb +1 -1
- data/examples/java/features/step_definitons/tree_steps.rb +1 -1
- data/examples/jbehave/README.textile +20 -0
- data/examples/jbehave/features/support/env.rb +7 -0
- data/examples/jbehave/features/trading.feature +28 -0
- data/examples/jbehave/pom.xml +53 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/converters/TraderConverter.java +32 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Stock.java +42 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Trader.java +29 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/persistence/TraderPersister.java +22 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/scenarios/TraderSteps.java +70 -0
- data/examples/selenium/features/search.feature +1 -1
- data/examples/selenium/features/step_definitons/search_steps.rb +13 -0
- data/examples/selenium/features/support/env.rb +19 -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 +41 -0
- data/examples/self_test/README.textile +6 -0
- data/examples/self_test/Rakefile +6 -0
- data/examples/self_test/features/background/failing_background.feature +11 -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/outline_sample.feature +15 -0
- data/examples/self_test/features/sample.feature +19 -0
- data/examples/self_test/features/step_definitions/sample_steps.rb +64 -0
- data/examples/self_test/features/support/env.rb +1 -0
- data/examples/self_test/features/support/tag_count_formatter.rb +25 -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 +20 -0
- data/examples/sinatra/views/add.erb +5 -0
- data/examples/sinatra/views/layout.erb +8 -0
- data/examples/tickets/Rakefile +13 -8
- data/examples/tickets/cucumber.yml +2 -1
- 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/236.feature +13 -0
- data/examples/tickets/features/241.feature +13 -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/scenario_outline_steps.rb +42 -0
- data/examples/tickets/features/step_definitons/tickets_steps.rb +46 -5
- data/examples/tickets/features/tickets.feature +5 -1
- data/examples/watir/README.textile +16 -0
- data/examples/watir/features/step_definitons/search_steps.rb +24 -0
- data/examples/watir/features/support/env.rb +32 -0
- data/features/background.feature +221 -0
- data/features/cucumber_cli.feature +389 -0
- data/features/cucumber_cli_diff_disabled.feature +45 -0
- data/features/cucumber_cli_outlines.feature +81 -0
- data/features/custom_formatter.feature +11 -0
- data/features/report_called_undefined_steps.feature +34 -0
- data/features/step_definitions/cucumber_steps.rb +30 -0
- data/features/step_definitions/extra_steps.rb +2 -0
- data/features/support/env.rb +8 -0
- data/gem_tasks/deployment.rake +0 -23
- data/gem_tasks/features.rake +1 -1
- data/gem_tasks/fix_cr_lf.rake +1 -1
- data/gem_tasks/flog.rake +1 -1
- data/gem_tasks/gemspec.rake +4 -0
- data/gem_tasks/jar.rake +67 -0
- data/gem_tasks/rspec.rake +31 -15
- data/gem_tasks/yard.rake +8 -0
- data/lib/autotest/cucumber_mixin.rb +41 -25
- data/lib/cucumber/ast/background.rb +50 -0
- data/lib/cucumber/ast/comment.rb +26 -0
- data/lib/cucumber/ast/examples.rb +38 -0
- data/lib/cucumber/ast/feature.rb +62 -0
- data/lib/cucumber/ast/feature_element.rb +46 -0
- data/lib/cucumber/ast/features.rb +20 -0
- data/lib/cucumber/ast/outline_table.rb +81 -0
- data/lib/cucumber/ast/py_string.rb +58 -0
- data/lib/cucumber/ast/scenario.rb +64 -0
- data/lib/cucumber/ast/scenario_outline.rb +90 -0
- data/lib/cucumber/ast/step.rb +122 -0
- data/lib/cucumber/ast/step_collection.rb +66 -0
- data/lib/cucumber/ast/step_invocation.rb +110 -0
- data/lib/cucumber/ast/table.rb +318 -0
- data/lib/cucumber/ast/tags.rb +33 -0
- data/lib/cucumber/ast/visitor.rb +125 -0
- data/lib/cucumber/ast.rb +29 -0
- data/lib/cucumber/broadcaster.rb +2 -9
- data/lib/cucumber/cli/configuration.rb +364 -0
- data/lib/cucumber/cli/language_help_formatter.rb +59 -0
- data/lib/cucumber/cli/main.rb +109 -0
- data/lib/cucumber/core_ext/exception.rb +53 -0
- data/lib/cucumber/core_ext/instance_exec.rb +54 -0
- data/lib/cucumber/core_ext/proc.rb +29 -65
- data/lib/cucumber/core_ext/string.rb +26 -0
- data/lib/cucumber/formatter/ansicolor.rb +102 -0
- data/lib/cucumber/formatter/color_io.rb +23 -0
- data/lib/cucumber/formatter/console.rb +109 -0
- data/lib/cucumber/formatter/cucumber.css +55 -0
- data/lib/cucumber/formatter/cucumber.sass +49 -0
- data/lib/cucumber/formatter/html.rb +133 -0
- data/lib/cucumber/formatter/pretty.rb +179 -0
- data/lib/cucumber/formatter/profile.rb +77 -0
- data/lib/cucumber/formatter/progress.rb +60 -0
- data/lib/cucumber/formatter/rerun.rb +35 -0
- data/lib/cucumber/formatter/unicode.rb +35 -0
- data/lib/cucumber/formatter.rb +1 -0
- data/lib/cucumber/formatters/unicode.rb +2 -0
- data/lib/cucumber/jbehave.rb +97 -0
- data/lib/cucumber/languages.yml +214 -72
- data/lib/cucumber/parser/basic.rb +0 -0
- data/lib/cucumber/parser/feature.rb +1487 -0
- data/lib/cucumber/parser/feature.tt +193 -0
- data/lib/cucumber/parser/i18n.tt +31 -0
- data/lib/cucumber/parser/table.rb +402 -0
- data/lib/cucumber/parser/table.tt +59 -0
- data/lib/cucumber/parser/treetop_ext.rb +75 -0
- data/lib/cucumber/parser.rb +43 -0
- data/lib/cucumber/platform.rb +13 -8
- data/lib/cucumber/rails/rspec.rb +6 -10
- data/lib/cucumber/rails/world.rb +8 -8
- data/lib/cucumber/rake/task.rb +46 -9
- data/lib/cucumber/step_definition.rb +103 -0
- data/lib/cucumber/step_match.rb +49 -0
- data/lib/cucumber/step_mother.rb +184 -65
- data/lib/cucumber/version.rb +4 -3
- data/lib/cucumber/world.rb +53 -0
- data/lib/cucumber.rb +45 -21
- data/rails_generators/cucumber/cucumber_generator.rb +23 -3
- data/rails_generators/cucumber/templates/cucumber +2 -1
- data/rails_generators/cucumber/templates/cucumber.rake +13 -5
- data/rails_generators/cucumber/templates/env.rb +11 -2
- data/rails_generators/cucumber/templates/paths.rb +19 -0
- data/rails_generators/cucumber/templates/webrat_steps.rb +60 -40
- data/rails_generators/feature/feature_generator.rb +26 -2
- data/rails_generators/feature/templates/feature.erb +15 -12
- data/rails_generators/feature/templates/steps.erb +14 -16
- data/spec/cucumber/ast/background_spec.rb +49 -0
- data/spec/cucumber/ast/feature_factory.rb +63 -0
- data/spec/cucumber/ast/feature_spec.rb +37 -0
- data/spec/cucumber/ast/py_string_spec.rb +47 -0
- data/spec/cucumber/ast/scenario_outline_spec.rb +67 -0
- data/spec/cucumber/ast/scenario_spec.rb +65 -0
- data/spec/cucumber/ast/step_collection_spec.rb +8 -0
- data/spec/cucumber/ast/step_spec.rb +66 -0
- data/spec/cucumber/ast/table_spec.rb +149 -0
- data/spec/cucumber/ast/tags_spec.rb +19 -0
- data/spec/cucumber/broadcaster_spec.rb +6 -18
- data/spec/cucumber/cli/configuration_spec.rb +275 -0
- data/spec/cucumber/cli/main_spec.rb +203 -0
- data/spec/cucumber/core_ext/proc_spec.rb +27 -35
- data/spec/cucumber/core_ext/string_spec.rb +8 -0
- data/spec/cucumber/formatter/ansicolor_spec.rb +35 -0
- data/spec/cucumber/formatter/color_io_spec.rb +26 -0
- data/spec/cucumber/formatter/html/cucumber.css +37 -0
- data/spec/cucumber/formatter/html/cucumber.js +13 -0
- data/spec/cucumber/formatter/html/index.html +45 -0
- data/spec/cucumber/formatter/html/jquery-1.3.min.js +19 -0
- data/spec/cucumber/formatter/html/jquery.uitableedit.js +100 -0
- data/spec/cucumber/formatters/profile_formatter_spec.rb +22 -16
- data/spec/cucumber/parser/feature_parser_spec.rb +282 -0
- data/spec/cucumber/parser/table_parser_spec.rb +48 -0
- data/spec/cucumber/rails/stubs/mini_rails.rb +4 -3
- data/spec/cucumber/step_definition_spec.rb +81 -0
- data/spec/cucumber/step_mother_spec.rb +50 -51
- data/spec/cucumber/treetop_parser/empty_feature.feature +1 -1
- data/spec/cucumber/treetop_parser/empty_scenario_outline.feature +3 -0
- data/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +7 -0
- data/spec/cucumber/treetop_parser/multiple_tables.feature +6 -8
- data/spec/cucumber/treetop_parser/scenario_outline.feature +16 -0
- data/spec/cucumber/treetop_parser/spaces.feature +3 -1
- data/spec/cucumber/treetop_parser/with_comments.feature +1 -1
- data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
- data/spec/cucumber/world/pending_spec.rb +47 -0
- data/spec/spec_helper.rb +4 -3
- metadata +192 -95
- data/TODO.txt +0 -26
- data/examples/calculator_ruby_features/features/addition.rb +0 -23
- data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +0 -43
- data/examples/cs/features/hello.feature +0 -11
- data/examples/cs/features/step_definitons/hello_steps.rb +0 -25
- data/examples/cs/features/step_definitons/tree_steps.rb +0 -14
- data/examples/cs/features/tree.feature +0 -9
- data/examples/cs/src/Hello.cs +0 -18
- data/examples/i18n/ja/README.txt +0 -5
- data/examples/selenium/features/step_definitons/stories_steps.rb +0 -41
- data/examples/watir/features/step_definitons/stories_steps.rb +0 -51
- data/features/see_features.feature +0 -8
- data/features/steps/features_steps.rb +0 -9
- data/gem_tasks/treetop.rake +0 -41
- data/lib/cucumber/cli.rb +0 -279
- data/lib/cucumber/executor.rb +0 -190
- data/lib/cucumber/formatters/ansicolor.rb +0 -109
- data/lib/cucumber/formatters/autotest_formatter.rb +0 -23
- data/lib/cucumber/formatters/cucumber.css +0 -132
- data/lib/cucumber/formatters/cucumber.js +0 -11
- data/lib/cucumber/formatters/html_formatter.rb +0 -128
- data/lib/cucumber/formatters/jquery.js +0 -32
- data/lib/cucumber/formatters/pretty_formatter.rb +0 -234
- data/lib/cucumber/formatters/profile_formatter.rb +0 -92
- data/lib/cucumber/formatters/progress_formatter.rb +0 -58
- data/lib/cucumber/formatters.rb +0 -1
- data/lib/cucumber/model/table.rb +0 -28
- data/lib/cucumber/model.rb +0 -1
- data/lib/cucumber/step_methods.rb +0 -49
- data/lib/cucumber/tree/feature.rb +0 -63
- data/lib/cucumber/tree/features.rb +0 -21
- data/lib/cucumber/tree/given_scenario.rb +0 -13
- data/lib/cucumber/tree/scenario.rb +0 -174
- data/lib/cucumber/tree/step.rb +0 -134
- data/lib/cucumber/tree/table.rb +0 -26
- data/lib/cucumber/tree/top_down_visitor.rb +0 -23
- data/lib/cucumber/tree.rb +0 -18
- data/lib/cucumber/treetop_parser/feature.treetop.erb +0 -206
- data/lib/cucumber/treetop_parser/feature_ar.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_cy.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_da.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_de.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_en-tx.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_en.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_es.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_et.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_fr.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_id.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_it.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_ja.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_lt.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_nl.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_no.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_parser.rb +0 -34
- data/lib/cucumber/treetop_parser/feature_pl.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_pt.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_ro.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_ro2.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_ru.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_se.rb +0 -1591
- data/lib/cucumber/treetop_parser/feature_zh-CN.rb +0 -1591
- data/script/console +0 -10
- data/script/console.cmd +0 -1
- data/script/destroy +0 -14
- data/script/destroy.cmd +0 -1
- data/script/generate +0 -14
- data/script/generate.cmd +0 -1
- data/script/txt2html +0 -74
- data/script/txt2html.cmd +0 -1
- data/setup.rb +0 -1585
- data/spec/cucumber/cli_spec.rb +0 -274
- data/spec/cucumber/executor_spec.rb +0 -298
- data/spec/cucumber/formatters/ansicolor_spec.rb +0 -35
- data/spec/cucumber/formatters/autotest_formatter_spec.rb +0 -26
- data/spec/cucumber/formatters/features.html +0 -269
- data/spec/cucumber/formatters/html_formatter_spec.rb +0 -74
- data/spec/cucumber/formatters/pretty_formatter_spec.rb +0 -204
- data/spec/cucumber/formatters/progress_formatter_spec.rb +0 -65
- data/spec/cucumber/model/table_spec.rb +0 -20
- data/spec/cucumber/tree/feature_spec.rb +0 -43
- data/spec/cucumber/tree/row_scenario_spec.rb +0 -55
- data/spec/cucumber/tree/scenario_spec.rb +0 -76
- data/spec/cucumber/tree/step_spec.rb +0 -50
- data/spec/cucumber/treetop_parser/feature_parser_spec.rb +0 -98
- /data/examples/{calculator_ruby_features → selenium_webrat}/Rakefile +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
require 'cucumber/step_mother'
|
|
3
|
+
require 'cucumber/ast'
|
|
4
|
+
require 'cucumber/core_ext/string'
|
|
5
|
+
|
|
6
|
+
module Cucumber
|
|
7
|
+
module Ast
|
|
8
|
+
describe Step do
|
|
9
|
+
it "should replace arguments in name" do
|
|
10
|
+
step = Step.new(1, 'Given', 'a <color> cucumber')
|
|
11
|
+
|
|
12
|
+
invocation_table = Table.new([
|
|
13
|
+
%w{color taste},
|
|
14
|
+
%w{green juicy}
|
|
15
|
+
])
|
|
16
|
+
cells = invocation_table.cells_rows[1]
|
|
17
|
+
step_invocation = step.step_invocation_from_cells(cells)
|
|
18
|
+
|
|
19
|
+
step_invocation.name.should == 'a green cucumber'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should use empty string for the replacement of arguments in name when replace value is nil" do
|
|
23
|
+
step = Step.new(1, 'Given', 'a <color>cucumber')
|
|
24
|
+
|
|
25
|
+
invocation_table = Table.new([
|
|
26
|
+
['color'],
|
|
27
|
+
[nil]
|
|
28
|
+
])
|
|
29
|
+
cells = invocation_table.cells_rows[1]
|
|
30
|
+
step_invocation = step.step_invocation_from_cells(cells)
|
|
31
|
+
|
|
32
|
+
step_invocation.name.should == 'a cucumber'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should replace arguments in table arg" do
|
|
36
|
+
arg_table = Table.new([%w{taste_<taste> color_<color>}])
|
|
37
|
+
|
|
38
|
+
step = Step.new(1, 'Given', 'a <color> cucumber', arg_table)
|
|
39
|
+
|
|
40
|
+
invocation_table = Table.new([
|
|
41
|
+
%w{color taste},
|
|
42
|
+
%w{green juicy}
|
|
43
|
+
])
|
|
44
|
+
cells = invocation_table.cells_rows[1]
|
|
45
|
+
step_invocation = step.step_invocation_from_cells(cells)
|
|
46
|
+
|
|
47
|
+
step_invocation.instance_variable_get('@multiline_arg').raw.should == [%w{taste_juicy color_green}]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should replace arguments in py string arg" do
|
|
51
|
+
py_string = PyString.new(1, 2, 'taste_<taste> color_<color>', 0)
|
|
52
|
+
|
|
53
|
+
step = Step.new(1, 'Given', 'a <color> cucumber', py_string)
|
|
54
|
+
|
|
55
|
+
invocation_table = Table.new([
|
|
56
|
+
%w{color taste},
|
|
57
|
+
%w{green juicy}
|
|
58
|
+
])
|
|
59
|
+
cells = invocation_table.cells_rows[1]
|
|
60
|
+
step_invocation = step.step_invocation_from_cells(cells)
|
|
61
|
+
|
|
62
|
+
step_invocation.instance_variable_get('@multiline_arg').to_s.should == 'taste_juicy color_green'
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
require 'cucumber/ast/table'
|
|
3
|
+
|
|
4
|
+
module Cucumber
|
|
5
|
+
module Ast
|
|
6
|
+
describe Table do
|
|
7
|
+
before do
|
|
8
|
+
@table = Table.new([
|
|
9
|
+
%w{one four seven},
|
|
10
|
+
%w{4444 55555 666666}
|
|
11
|
+
])
|
|
12
|
+
def @table.cells_rows; super; end
|
|
13
|
+
def @table.columns; super; end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should have rows" do
|
|
17
|
+
@table.cells_rows[0].map{|cell| cell.value}.should == %w{one four seven}
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should have columns" do
|
|
21
|
+
@table.columns[1].map{|cell| cell.value}.should == %w{four 55555}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should have same cell objects in rows and columns" do
|
|
25
|
+
# 666666
|
|
26
|
+
@table.cells_rows[1].__send__(:[], 2).should equal(@table.columns[2].__send__(:[], 1))
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should know about max width of a row" do
|
|
30
|
+
@table.columns[1].__send__(:width).should == 5
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should be convertible to an array of hashes" do
|
|
34
|
+
@table.hashes.should == [
|
|
35
|
+
{'one' => '4444', 'four' => '55555', 'seven' => '666666'}
|
|
36
|
+
]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should accept symbols as keys for the hashes" do
|
|
40
|
+
@table.hashes.first[:one].should == '4444'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should allow map'ing columns" do
|
|
44
|
+
@table.map_column!('one') { |v| v.to_i }
|
|
45
|
+
@table.hashes.first['one'].should == 4444
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should pass silently if a mapped column does not exist in non-strict mode" do
|
|
49
|
+
lambda {
|
|
50
|
+
@table.map_column!('two', false) { |v| v.to_i }
|
|
51
|
+
}.should_not raise_error
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should fail if a mapped column does not exist in strict mode" do
|
|
55
|
+
lambda {
|
|
56
|
+
@table.map_column!('two', true) { |v| v.to_i }
|
|
57
|
+
}.should raise_error('The column named "two" does not exist')
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe ".transpose" do
|
|
61
|
+
before(:each) do
|
|
62
|
+
@table = Table.new([
|
|
63
|
+
%w{one 1111},
|
|
64
|
+
%w{two 22222}
|
|
65
|
+
])
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should be convertible in to an array where each row is a hash" do
|
|
69
|
+
@table.transpose.hashes[0].should == {'one' => '1111', 'two' => '22222'}
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should allow renaming columns" do
|
|
74
|
+
table2 = @table.map_headers('one' => :three)
|
|
75
|
+
table2.hashes.first[:three].should == '4444'
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should copy column mappings when mapping headers" do
|
|
79
|
+
@table.map_column!('one') { |v| v.to_i }
|
|
80
|
+
table2 = @table.map_headers('one' => 'three')
|
|
81
|
+
table2.hashes.first['three'].should == 4444
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
describe "replacing arguments" do
|
|
85
|
+
|
|
86
|
+
before(:each) do
|
|
87
|
+
@table = table = Table.new([
|
|
88
|
+
%w{qty book},
|
|
89
|
+
%w{<qty> <book>}
|
|
90
|
+
])
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "should return a new table with arguments replaced with values" do
|
|
94
|
+
table_with_replaced_args = @table.arguments_replaced({'<book>' => 'Unbearable lightness of being', '<qty>' => '5'})
|
|
95
|
+
|
|
96
|
+
table_with_replaced_args.hashes[0]['book'].should == 'Unbearable lightness of being'
|
|
97
|
+
table_with_replaced_args.hashes[0]['qty'].should == '5'
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "should replace nil values with nil" do
|
|
101
|
+
table_with_replaced_args = @table.arguments_replaced({'<book>' => nil})
|
|
102
|
+
|
|
103
|
+
table_with_replaced_args.hashes[0]['book'].should == nil
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "should preserve values which don't match a placeholder when replacing with nil" do
|
|
107
|
+
table = Table.new([
|
|
108
|
+
%w{book},
|
|
109
|
+
%w{cat}
|
|
110
|
+
])
|
|
111
|
+
table_with_replaced_args = table.arguments_replaced({'<book>' => nil})
|
|
112
|
+
|
|
113
|
+
table_with_replaced_args.hashes[0]['book'].should == 'cat'
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "should not change the original table" do
|
|
117
|
+
@table.arguments_replaced({'<book>' => 'Unbearable lightness of being'})
|
|
118
|
+
|
|
119
|
+
@table.hashes[0]['book'].should_not == 'Unbearable lightness of being'
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "should not raise an error when there are nil values in the table" do
|
|
123
|
+
table = Table.new([
|
|
124
|
+
['book', 'qty'],
|
|
125
|
+
['<book>', nil],
|
|
126
|
+
])
|
|
127
|
+
lambda{
|
|
128
|
+
table.arguments_replaced({'<book>' => nil, '<qty>' => '5'})
|
|
129
|
+
}.should_not raise_error
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "should convert to sexp" do
|
|
135
|
+
@table.to_sexp.should ==
|
|
136
|
+
[:table,
|
|
137
|
+
[:row,
|
|
138
|
+
[:cell, "one"],
|
|
139
|
+
[:cell, "four"],
|
|
140
|
+
[:cell, "seven"]
|
|
141
|
+
],
|
|
142
|
+
[:row,
|
|
143
|
+
[:cell, "4444"],
|
|
144
|
+
[:cell, "55555"],
|
|
145
|
+
[:cell, "666666"]]]
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
module Cucumber
|
|
4
|
+
module Ast
|
|
5
|
+
describe Tags do
|
|
6
|
+
before do
|
|
7
|
+
@tags = Tags.new(-1, %w{one two three})
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should be among other tags" do
|
|
11
|
+
@tags.should have_tags(%w{one})
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should not be among other tags with irrelevent tag" do
|
|
15
|
+
@tags.should_not have_tags(%w{bacon})
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -2,26 +2,14 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
|
2
2
|
|
|
3
3
|
module Cucumber
|
|
4
4
|
describe Broadcaster do
|
|
5
|
+
before do
|
|
6
|
+
@receiver = mock('receiver')
|
|
7
|
+
@broadcaster = Broadcaster.new([@receiver])
|
|
8
|
+
end
|
|
5
9
|
|
|
6
10
|
it "should broadcast methods to registered objects" do
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
mock_receiver.should_receive(:konbanwa).with('good evening')
|
|
11
|
-
broadcaster.register(mock_receiver)
|
|
12
|
-
|
|
13
|
-
broadcaster.konbanwa('good evening')
|
|
11
|
+
@receiver.should_receive(:konbanwa).with('good evening')
|
|
12
|
+
@broadcaster.konbanwa('good evening')
|
|
14
13
|
end
|
|
15
|
-
|
|
16
|
-
it "should not call methods on registered objects if they dont support the method" do
|
|
17
|
-
broadcaster = Broadcaster.new
|
|
18
|
-
mock_receiver = mock('receiver', :respond_to? => false)
|
|
19
|
-
|
|
20
|
-
mock_receiver.should_not_receive(:konbanwa)
|
|
21
|
-
broadcaster.register(mock_receiver)
|
|
22
|
-
|
|
23
|
-
broadcaster.konbanwa()
|
|
24
|
-
end
|
|
25
|
-
|
|
26
14
|
end
|
|
27
15
|
end
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
require 'yaml'
|
|
3
|
+
|
|
4
|
+
module Cucumber
|
|
5
|
+
module Cli
|
|
6
|
+
describe Configuration do
|
|
7
|
+
|
|
8
|
+
def given_cucumber_yml_defined_as(hash_or_string)
|
|
9
|
+
File.stub!(:exist?).and_return(true)
|
|
10
|
+
cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
|
|
11
|
+
IO.stub!(:read).with('cucumber.yml').and_return(cucumber_yml)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
before(:each) do
|
|
15
|
+
Kernel.stub!(:exit).and_return(nil)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should require files in support paths first" do
|
|
19
|
+
File.stub!(:directory?).and_return(true)
|
|
20
|
+
Dir.stub!(:[]).and_return(["/features/step_definitions/foo.rb","/features/support/bar.rb"])
|
|
21
|
+
|
|
22
|
+
config = Configuration.new(StringIO.new)
|
|
23
|
+
config.parse!(%w{--require /features})
|
|
24
|
+
|
|
25
|
+
config.files_to_require.should == [
|
|
26
|
+
"/features/support/bar.rb",
|
|
27
|
+
"/features/step_definitions/foo.rb"
|
|
28
|
+
]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should require env.rb files first" do
|
|
32
|
+
File.stub!(:directory?).and_return(true)
|
|
33
|
+
Dir.stub!(:[]).and_return(["/features/support/a_file.rb","/features/support/env.rb"])
|
|
34
|
+
|
|
35
|
+
config = Configuration.new(StringIO.new)
|
|
36
|
+
config.parse!(%w{--require /features})
|
|
37
|
+
|
|
38
|
+
config.files_to_require.should == [
|
|
39
|
+
"/features/support/env.rb",
|
|
40
|
+
"/features/support/a_file.rb"
|
|
41
|
+
]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should expand args from YAML file" do
|
|
45
|
+
given_cucumber_yml_defined_as({'bongo' => '--require from/yml'})
|
|
46
|
+
|
|
47
|
+
config = Configuration.new
|
|
48
|
+
config.parse!(%w{--format progress --profile bongo})
|
|
49
|
+
config.options[:formats].should == {'progress' => STDOUT}
|
|
50
|
+
config.options[:require].should == ['from/yml']
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should expand args from YAML file's default if there are no args" do
|
|
54
|
+
given_cucumber_yml_defined_as({'default' => '--require from/yml'})
|
|
55
|
+
|
|
56
|
+
config = Configuration.new
|
|
57
|
+
config.parse!([])
|
|
58
|
+
config.options[:require].should == ['from/yml']
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should provide a helpful error message when a specified profile does not exists in YAML file" do
|
|
62
|
+
given_cucumber_yml_defined_as({'default' => '--require from/yml', 'html_report' => '--format html'})
|
|
63
|
+
|
|
64
|
+
config = Configuration.new(StringIO.new, error = StringIO.new)
|
|
65
|
+
config.parse!(%w{--profile i_do_not_exist})
|
|
66
|
+
|
|
67
|
+
expected_message = <<-END_OF_MESSAGE
|
|
68
|
+
Could not find profile: 'i_do_not_exist'
|
|
69
|
+
|
|
70
|
+
Defined profiles in cucumber.yml:
|
|
71
|
+
* default
|
|
72
|
+
* html_report
|
|
73
|
+
END_OF_MESSAGE
|
|
74
|
+
|
|
75
|
+
error.string.should == expected_message
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should provide a helpful error message when a specified profile is not a String" do
|
|
79
|
+
given_cucumber_yml_defined_as({'foo' => [1,2,3]})
|
|
80
|
+
|
|
81
|
+
config = Configuration.new(StringIO.new, error = StringIO.new)
|
|
82
|
+
config.parse!(%w{--profile foo})
|
|
83
|
+
|
|
84
|
+
error.string.should == "Profiles must be defined as a String. The 'foo' profile was [1, 2, 3] (Array).\n"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "should provide a helpful error message when a specified profile exists but is nil or blank" do
|
|
88
|
+
[nil, ' '].each do |bad_input|
|
|
89
|
+
given_cucumber_yml_defined_as({'foo' => bad_input})
|
|
90
|
+
|
|
91
|
+
config = Configuration.new(StringIO.new, error = StringIO.new)
|
|
92
|
+
config.parse!(%w{--profile foo})
|
|
93
|
+
|
|
94
|
+
error.string.should match(/The 'foo' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml./)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should provide a helpful error message when no YAML file exists and a profile is specified" do
|
|
99
|
+
File.should_receive(:exist?).with('cucumber.yml').and_return(false)
|
|
100
|
+
|
|
101
|
+
config = Configuration.new(StringIO.new, error = StringIO.new)
|
|
102
|
+
config.parse!(%w{--profile i_do_not_exist})
|
|
103
|
+
|
|
104
|
+
error.string.should match(/cucumber.yml was not found. Please refer to cucumber's documentaion on defining profiles in cucumber.yml./)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "should provide a helpful error message when cucumber.yml is blank or malformed" do
|
|
108
|
+
expected_error_message = /cucumber.yml was found, but was blank or malformed. Please refer to cucumber's documentaion on correct profile usage./
|
|
109
|
+
|
|
110
|
+
['', 'sfsadfs', "--- \n- an\n- array\n", "---dddfd"].each do |bad_input|
|
|
111
|
+
given_cucumber_yml_defined_as(bad_input)
|
|
112
|
+
|
|
113
|
+
config = Configuration.new(StringIO.new, error = StringIO.new)
|
|
114
|
+
config.parse!([])
|
|
115
|
+
|
|
116
|
+
error.string.should match(expected_error_message)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "should procide a helpful error message when the YAML can not be parsed" do
|
|
121
|
+
expected_error_message = /cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentaion on correct profile usage./
|
|
122
|
+
|
|
123
|
+
given_cucumber_yml_defined_as("input that causes an exception in YAML loading")
|
|
124
|
+
YAML.should_receive(:load).and_raise Exception
|
|
125
|
+
|
|
126
|
+
config = Configuration.new(StringIO.new, error = StringIO.new)
|
|
127
|
+
config.parse!([])
|
|
128
|
+
|
|
129
|
+
error.string.should match(expected_error_message)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "should accept --dry-run option" do
|
|
133
|
+
config = Configuration.new(StringIO.new)
|
|
134
|
+
config.parse!(%w{--dry-run})
|
|
135
|
+
config.options[:dry_run].should be_true
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "should accept --no-source option" do
|
|
139
|
+
config = Configuration.new
|
|
140
|
+
config.parse!(%w{--no-source})
|
|
141
|
+
|
|
142
|
+
config.options[:source].should be_false
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "should accept --no-snippets option" do
|
|
146
|
+
config = Configuration.new
|
|
147
|
+
config.parse!(%w{--no-snippets})
|
|
148
|
+
|
|
149
|
+
config.options[:snippets].should be_false
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "should set snippets and source to false with --quiet option" do
|
|
153
|
+
config = Configuration.new
|
|
154
|
+
config.parse!(%w{--quiet})
|
|
155
|
+
|
|
156
|
+
config.options[:snippets].should be_nil
|
|
157
|
+
config.options[:source].should be_nil
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
it "should accept --verbose option" do
|
|
161
|
+
config = Configuration.new
|
|
162
|
+
config.parse!(%w{--verbose})
|
|
163
|
+
|
|
164
|
+
config.options[:verbose].should be_true
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
it "should accept --out option" do
|
|
168
|
+
config = Configuration.new(StringIO.new)
|
|
169
|
+
config.parse!(%w{--out jalla.txt})
|
|
170
|
+
config.options[:formats]['pretty'].should == 'jalla.txt'
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
it "should accept multiple --out options" do
|
|
174
|
+
config = Configuration.new(StringIO.new)
|
|
175
|
+
config.parse!(%w{--format progress --out file1 --out file2})
|
|
176
|
+
config.options[:formats].should == {'progress' => 'file2'}
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it "should accept multiple --format options" do
|
|
180
|
+
config = Configuration.new(StringIO.new)
|
|
181
|
+
config.parse!(%w{--format pretty --format progress})
|
|
182
|
+
config.options[:formats].should have_key('pretty')
|
|
183
|
+
config.options[:formats].should have_key('progress')
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
it "should associate --out to previous --format" do
|
|
187
|
+
config = Configuration.new(StringIO.new)
|
|
188
|
+
config.parse!(%w{--format progress --out file1 --format profile --out file2})
|
|
189
|
+
config.options[:formats].should == {"profile"=>"file2", "progress"=>"file1"}
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
it "should accept --color option" do
|
|
193
|
+
Term::ANSIColor.should_receive(:coloring=).with(true)
|
|
194
|
+
config = Configuration.new(StringIO.new)
|
|
195
|
+
config.parse!(['--color'])
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
it "should accept --no-color option" do
|
|
199
|
+
Term::ANSIColor.should_receive(:coloring=).with(false)
|
|
200
|
+
config = Configuration.new(StringIO.new)
|
|
201
|
+
config.parse!(['--no-color'])
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it "should parse tags" do
|
|
205
|
+
config = Configuration.new(nil)
|
|
206
|
+
includes, excludes = config.parse_tags("one,~two,@three,~@four")
|
|
207
|
+
includes.should == ['one', 'three']
|
|
208
|
+
excludes.should == ['two', 'four']
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
describe "--backtrace" do
|
|
212
|
+
before do
|
|
213
|
+
Exception.cucumber_full_backtrace = false
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
it "should show full backtrace when --backtrace is present" do
|
|
217
|
+
config = Main.new(['--backtrace'])
|
|
218
|
+
begin
|
|
219
|
+
"x".should == "y"
|
|
220
|
+
rescue => e
|
|
221
|
+
e.backtrace[0].should_not == "#{__FILE__}:#{__LINE__ - 2}"
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
xit "should strip gems when --backtrace is absent" do
|
|
226
|
+
config = Main.new(['--'])
|
|
227
|
+
begin
|
|
228
|
+
"x".should == "y"
|
|
229
|
+
rescue => e
|
|
230
|
+
e.backtrace[0].should == "#{__FILE__}:#{__LINE__ - 2}"
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
after do
|
|
235
|
+
Exception.cucumber_full_backtrace = false
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
describe "diff output" do
|
|
240
|
+
|
|
241
|
+
it "is enabled by default" do
|
|
242
|
+
config = Configuration.new
|
|
243
|
+
config.diff_enabled?.should be_true
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
it "is disabled when the --no-diff option is supplied" do
|
|
247
|
+
config = Configuration.new
|
|
248
|
+
config.parse!(%w{--no-diff})
|
|
249
|
+
|
|
250
|
+
config.diff_enabled?.should be_false
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
it "should accept multiple --scenario options" do
|
|
256
|
+
config = Configuration.new
|
|
257
|
+
config.parse!(['--scenario', "User logs in", '--scenario', "User signs up"])
|
|
258
|
+
|
|
259
|
+
config.options[:scenario_names].should include("User logs in")
|
|
260
|
+
config.options[:scenario_names].should include("User signs up")
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
it "should search for all features in the specified directory" do
|
|
264
|
+
File.stub!(:directory?).and_return(true)
|
|
265
|
+
Dir.should_receive(:[]).with("feature_directory/**/*.feature").any_number_of_times.and_return(["cucumber.feature"])
|
|
266
|
+
|
|
267
|
+
config = Configuration.new(StringIO)
|
|
268
|
+
config.parse!(%w{feature_directory/})
|
|
269
|
+
|
|
270
|
+
config.feature_files.should == ["cucumber.feature"]
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
end
|