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.

Reply via email to