Browse Source

Add validation for key_val_separator

For now, the key_val_separator is required to contain
exactly one '=' character.  This commit simply validates
that that is the case.
Chris Price 11 years ago
parent
commit
e527908
2 changed files with 26 additions and 0 deletions
  1. 6 0
      lib/puppet/type/ini_setting.rb
  2. 20 0
      spec/unit/puppet/provider/ini_setting/ruby_spec.rb

+ 6 - 0
lib/puppet/type/ini_setting.rb

@@ -35,6 +35,12 @@ Puppet::Type.newtype(:ini_setting) do
         'Defaults to " = ", but you could use this to override e.g. whether ' +
         'or not the separator should include whitespace.'
     defaultto(" = ")
+
+    validate do |value|
+      unless value.scan('=').size == 1
+        raise Puppet::Error, ":key_val_separator must contain exactly one = character."
+      end
+    end
   end
 
 end

+ 20 - 0
spec/unit/puppet/provider/ini_setting/ruby_spec.rb

@@ -400,6 +400,26 @@ foo=bar
       EOS
     }
 
+    it "should fail if the separator doesn't include an equals sign" do
+      expect {
+        Puppet::Type::Ini_setting.new(common_params.merge(
+                                         :section           => 'section2',
+                                         :setting           => 'foo',
+                                         :value             => 'yippee',
+                                         :key_val_separator => '+'))
+      }.to raise_error Puppet::Error, /must contain exactly one/
+    end
+
+    it "should fail if the separator includes more than one equals sign" do
+      expect {
+        Puppet::Type::Ini_setting.new(common_params.merge(
+                                         :section           => 'section2',
+                                         :setting           => 'foo',
+                                         :value             => 'yippee',
+                                         :key_val_separator => ' = foo = '))
+      }.to raise_error Puppet::Error, /must contain exactly one/
+    end
+
     it "should modify an existing setting" do
       resource = Puppet::Type::Ini_setting.new(common_params.merge(
                                                    :section           => 'section2',