diff options
author | Luke Kanies <luke@madstop.com> | 2007-08-24 18:31:00 -0500 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2007-08-24 18:31:00 -0500 |
commit | c6e201cdd4ca5ee11a04cac77bf32faf40640b6d (patch) | |
tree | 7bcd93a091a327563d5641fb3c78aab548fed2fc /spec/unit | |
parent | 520aaafbb87805a79283386e37deb4b3093a1144 (diff) | |
download | puppet-c6e201cdd4ca5ee11a04cac77bf32faf40640b6d.tar.gz puppet-c6e201cdd4ca5ee11a04cac77bf32faf40640b6d.tar.xz puppet-c6e201cdd4ca5ee11a04cac77bf32faf40640b6d.zip |
I have added basic support for a search path, altho not yet with any ability to manipulate it. All config tests pass in both the old tests and the new ones, so it is time to add the hooks for manipulating the search path.
Diffstat (limited to 'spec/unit')
-rwxr-xr-x | spec/unit/util/config.rb | 120 |
1 files changed, 100 insertions, 20 deletions
diff --git a/spec/unit/util/config.rb b/spec/unit/util/config.rb index ef0c00262..69a2268ab 100755 --- a/spec/unit/util/config.rb +++ b/spec/unit/util/config.rb @@ -15,7 +15,7 @@ describe Puppet::Util::Config, " when specifying defaults" do @config.setdefaults(:section, :myvalue => ["defaultval", "my description"]) end - it "should fail when a parameter has already been defined" do + it "should not allow duplicate parameter specifications" do @config.setdefaults(:section, :myvalue => ["a", "b"]) lambda { @config.setdefaults(:section, :myvalue => ["c", "d"]) }.should raise_error(ArgumentError) end @@ -85,12 +85,32 @@ describe Puppet::Util::Config, " when setting values" do #@config.set(:myval, "new value", :cli) #@config[:myval].should == "new value" end + + it "should call passed blocks when values are set" do + values = [] + @config.setdefaults(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }}) + values.should == [] + + @config[:hooker] = "something" + values.should == %w{something} + end + + it "should munge values using the element-specific methods" do + @config[:bool] = "false" + @config[:bool].should == false + end + + it "should prefer cli values to values set in Ruby code" do + @config.handlearg("--myval", "cliarg") + @config[:myval] = "memarg" + @config[:myval].should == "cliarg" + end end describe Puppet::Util::Config, " when returning values" do before do @config = Puppet::Util::Config.new - @config.setdefaults :section, :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"] + @config.setdefaults :section, :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"], :four => ["$two $three FOUR", "d"] end it "should provide a mechanism for returning set values" do @@ -110,17 +130,39 @@ describe Puppet::Util::Config, " when returning values" do pending "Still no clear idea how this will work" end - it "should interpolate other parameters into returned parameter values" do + it "should interpolate default values for other parameters into returned parameter values" do @config[:one].should == "ONE" @config[:two].should == "ONE TWO" @config[:three].should == "ONE ONE TWO THREE" end + it "should interpolate default values that themselves need to be interpolated" do + @config[:four].should == "ONE TWO ONE ONE TWO THREE FOUR" + end + + it "should interpolate set values for other parameters into returned parameter values" do + @config[:one] = "on3" + @config[:two] = "$one tw0" + @config[:three] = "$one $two thr33" + @config[:four] = "$one $two $three f0ur" + @config[:one].should == "on3" + @config[:two].should == "on3 tw0" + @config[:three].should == "on3 on3 tw0 thr33" + @config[:four].should == "on3 on3 tw0 on3 on3 tw0 thr33 f0ur" + end + it "should not cache interpolated values such that stale information is returned" do @config[:two].should == "ONE TWO" @config[:one] = "one" @config[:two].should == "one TWO" end + + it "should have a name determined by the 'name' parameter" do + @config.setdefaults(:whatever, :name => ["something", "yayness"]) + @config.name.should == :something + @config[:name] = :other + @config.name.should == :other + end end describe Puppet::Util::Config, " when parsing its configuration" do @@ -142,6 +184,14 @@ describe Puppet::Util::Config, " when parsing its configuration" do @config[:two].should == "mval TWO" end + #484 - this should probably be in the regression area + it "should not throw an exception on unknown parameters" do + text = "[main]\nnosuchparam = mval\n" + file = "/some/file" + @config.expects(:read_file).with(file).returns(text) + lambda { @config.parse(file) }.should_not raise_error + end + it "should support an old parse method when per-executable configuration files still exist" do # I'm not going to bother testing this method. @config.should respond_to(:old_parse) @@ -223,27 +273,57 @@ describe Puppet::Util::Config, " when reparsing its configuration" do end it "should retain parameters set by cli when configuration files are reparsed" do - @config.handlearg("--one", "myval") - @config[:two] = "otherval" - end -end + @config.handlearg("--one", "clival") -describe Puppet::Util::Config, " when being used to manage the host machine" do - it "should provide a method that writes files with the correct modes" - - it "should provide a method that creates directories with the correct modes" - - it "should provide a method to declare what directories should exist" - - it "should provide a method to trigger enforcing of file modes on existing files and directories" + text = "[main]\none = on-disk\n" + file = mock 'file' + file.stubs(:file).returns("/test/file") + @config.stubs(:read_file).with(file).returns(text) + @config.parse(file) - it "should provide a method to convert the file mode enforcement into a Puppet manifest" + @config[:one].should == "clival" + end - it "should provide an option to create needed users and groups" + it "should remove in-memory values that are no longer set in the file" do + # Init the value + text = "[main]\none = disk-init\n" + file = mock 'file' + file.stubs(:changed?).returns(true) + file.stubs(:file).returns("/test/file") + @config.expects(:read_file).with(file).returns(text) + @config.parse(file) + @config[:one].should == "disk-init" - it "should provide a method to print out the current configuration" + # Now replace the value + text = "[main]\ntwo = disk-replace\n" + @config.expects(:read_file).with(file).returns(text) + @config.parse(file) + #@config.reparse - it "should be able to provide all of its parameters in a format compatible with GetOpt::Long" + # The originally-overridden value should be replaced with the default + @config[:one].should == "ONE" - it "should not attempt to manage files within /dev" + # and we should now have the new value in memory + @config[:two].should == "disk-replace" + end end + +#describe Puppet::Util::Config, " when being used to manage the host machine" do +# it "should provide a method that writes files with the correct modes" +# +# it "should provide a method that creates directories with the correct modes" +# +# it "should provide a method to declare what directories should exist" +# +# it "should provide a method to trigger enforcing of file modes on existing files and directories" +# +# it "should provide a method to convert the file mode enforcement into a Puppet manifest" +# +# it "should provide an option to create needed users and groups" +# +# it "should provide a method to print out the current configuration" +# +# it "should be able to provide all of its parameters in a format compatible with GetOpt::Long" +# +# it "should not attempt to manage files within /dev" +#end |