Thanks Markus - i've been busy the last few days so didn't get chance to update my Github.
It's http://github.com/mikepea for future reference btw. Cheers for your help getting this into 0.25.5 - we can finally upgrade! Mike On 25 Mar 2010, at 02:42, Markus Roberts wrote: > This is the patch from Mike Pountney <[email protected]> off > the list with the additional test Luke requested. > > Signed-off-by: Markus Roberts <[email protected]> > --- > lib/puppet/util/settings.rb | 7 +++++-- > spec/unit/util/settings.rb | 18 ++++++++++++++++-- > 2 files changed, 21 insertions(+), 4 deletions(-) > > diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb > index df07d5c..469fc33 100644 > --- a/lib/puppet/util/settings.rb > +++ b/lib/puppet/util/settings.rb > @@ -147,6 +147,7 @@ class Puppet::Util::Settings > @cache.clear > value = munge_value(value) if value > str = opt.sub(/^--/,'') > + > bool = true > newstr = str.sub(/^no-/, '') > if newstr != str > @@ -155,8 +156,10 @@ class Puppet::Util::Settings > end > str = str.intern > > - if value == "" or value.nil? > - value = bool > + if @config[str].is_a?(Puppet::Util::Settings::BooleanSetting) > + if value == "" or value.nil? > + value = bool > + end > end > > set_value(str, value, :cli) > diff --git a/spec/unit/util/settings.rb b/spec/unit/util/settings.rb > index 5642813..dc4de3f 100755 > --- a/spec/unit/util/settings.rb > +++ b/spec/unit/util/settings.rb > @@ -79,6 +79,7 @@ describe Puppet::Util::Settings do > end > > it "should support a getopt-specific mechanism for turning booleans > off" do > + @settings[:bool] = true > @settings.handlearg("--no-bool", "") > @settings[:bool].should == false > end > @@ -97,20 +98,33 @@ describe Puppet::Util::Settings do > @settings[:bool].should == true > end > > - it "should consider a cli setting with an empty string as an > argument to be a boolean" do > + it "should consider a cli setting with an empty string as an > argument to be a boolean, if the setting itself is a boolean" do > # Turn it off first > @settings[:bool] = false > @settings.handlearg("--bool", "") > @settings[:bool].should == true > end > > + it "should consider a cli setting with an empty string as an > argument to be an empty argument, if the setting itself is not a boolean" do > + @settings[:myval] = "bob" > + @settings.handlearg("--myval", "") > + @settings[:myval].should == "" > + end > + > it "should consider a cli setting with a boolean as an argument to be > a boolean" do > # Turn it off first > @settings[:bool] = false > - @settings.handlearg("--bool", true) > + @settings.handlearg("--bool", "true") > @settings[:bool].should == true > end > > + it "should not consider a cli setting of a non boolean with a boolean > as an argument to be a boolean" do > + # Turn it off first > + @settings[:myval] = "bob" > + @settings.handlearg("--no-myval", "") > + @settings[:myval].should == "" > + end > + > it "should clear the cache when setting getopt-specific values" do > @settings.setdefaults :mysection, :one => ["whah", "yay"], :two > => ["$one yay", "bah"] > @settings[:two].should == "whah yay" > -- > 1.6.4 > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/puppet-dev?hl=en. > -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
