6 describe Optionparser do
7 describe "#initialize" do
8 it "should store the included list as an array" do
9 parser = Optionparser.new({}, "included")
10 parser.instance_variable_get("@include").should == ["included"]
12 parser = Optionparser.new({}, ["included"])
13 parser.instance_variable_get("@include").should == ["included"]
16 it "should store the excluded list as an array" do
17 parser = Optionparser.new({}, "", "excluded")
18 parser.instance_variable_get("@exclude").should == ["excluded"]
20 parser = Optionparser.new({}, "", ["excluded"])
21 parser.instance_variable_get("@exclude").should == ["excluded"]
24 it "should gather default options" do
25 Util.expects(:default_options).returns({})
29 it "should merge supplied options with defaults" do
33 Util.expects(:default_options).returns(defaults)
34 defaults.expects(:merge!).with(supplied)
36 Optionparser.new(supplied)
41 it "should yield to the caller" do
42 parser = Optionparser.new(defaults={:default => 1})
46 parser.parse do |p, o|
47 p.class.should == OptionParser
48 o.should == Util.default_options.merge(defaults)
52 block_ran.should == true
55 it "should add required options" do
56 parser = Optionparser.new(defaults={:default => 1})
57 parser.expects(:add_required_options)
61 it "should optionally add common options" do
62 parser = Optionparser.new(defaults={:default => 1})
63 parser.stubs(:add_required_options)
64 parser.expects(:add_common_options)
67 parser = Optionparser.new(defaults={:default => 1}, "", "common")
68 parser.stubs(:add_required_options)
69 parser.expects(:add_common_options).never
73 it "should support adding arbitrary named sections of options" do
74 parser = Optionparser.new(defaults={:default => 1}, "filter")
75 parser.stubs(:add_required_options)
76 parser.stubs(:add_common_options)
77 parser.expects(:add_filter_options)
81 it "should support excluding sections that was specifically included" do
82 parser = Optionparser.new(defaults={:default => 1}, "filter", "filter")
83 parser.stubs(:add_required_options)
84 parser.stubs(:add_common_options)
85 parser.expects(:add_filter_options).never
89 it "should parse MCOLLECTIVE_EXTRA_OPTS" do
90 ENV["MCOLLECTIVE_EXTRA_OPTS"] = "--dt 999"
91 @parser = Optionparser.new
92 @parser.parse[:disctimeout].should == 999
93 ENV.delete("MCOLLECTIVE_EXTRA_OPTS")
96 it "should not set the active collective from the config class if given on the cli" do
97 parser = Optionparser.new(defaults={:collective => "rspec"})
98 parser.stubs(:add_required_options)
99 parser.stubs(:add_common_options)
100 Config.instance.expects(:main_collective).never
104 it "should set the active collective from the config class if not given on the cli" do
105 parser = Optionparser.new(defaults={})
106 parser.stubs(:add_required_options)
107 parser.stubs(:add_common_options)
108 Config.instance.expects(:main_collective).returns(:rspec).once
109 parser.parse[:collective].should == :rspec