From ac6287e49290016d6e4850d321f33ea14d045534 Mon Sep 17 00:00:00 2001 From: Soren Hansen Date: Thu, 7 Jun 2012 16:42:25 +0200 Subject: [PATCH] Fix parsing of boolean values in flagfiles Previously, settings in flagfiles without a value were considered false. This change makes them true and also parses values with a "no" prefix as false. Unit tests included. --- lib/puppet/provider/nova_config/parsed.rb | 5 ++++- spec/unit/provider/nova_config/parsed_spec.rb | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/puppet/provider/nova_config/parsed.rb b/lib/puppet/provider/nova_config/parsed.rb index b72d857e3..fe1a58f31 100644 --- a/lib/puppet/provider/nova_config/parsed.rb +++ b/lib/puppet/provider/nova_config/parsed.rb @@ -23,9 +23,12 @@ Puppet::Type.type(:nova_config).provide( if hash[:line] =~ /^\s*(\S+?)\s*=\s*([\S ]+)\s*$/ hash[:name]=$1 hash[:value]=$2 - elsif hash[:line] =~ /^\s*(\S+)\s*$/ + elsif hash[:line] =~ /^\s*no(\S+)\s*$/ hash[:name]=$1 hash[:value]=false + elsif hash[:line] =~ /^\s*(\S+)\s*$/ + hash[:name]=$1 + hash[:value]=true else raise Puppet::Error, "Invalid line: #{hash[:line]}" end diff --git a/spec/unit/provider/nova_config/parsed_spec.rb b/spec/unit/provider/nova_config/parsed_spec.rb index 90715eab7..5dbd7d997 100644 --- a/spec/unit/provider/nova_config/parsed_spec.rb +++ b/spec/unit/provider/nova_config/parsed_spec.rb @@ -19,6 +19,18 @@ describe provider_class do record[:value].should == 'bar' record[:record_type].should == :parsed end + it 'should be able to parse settings without values' do + record = @provider.class.parse('--foo').first + record[:name].should == 'foo' + record[:value].should == true + record[:record_type].should == :parsed + end + it 'should be able to parse negated settings without values' do + record = @provider.class.parse('--nofoo').first + record[:name].should == 'foo' + record[:value].should == false + record[:record_type].should == :parsed + end it 'should be able to parse values that have spaces' do record = @provider.class.parse('--foo = bar or baz').first record[:name].should == 'foo'