Forráskód Böngészése

Merge pull request #5 from jtopjian/jtopjian-colon

Added support for colons in section names
Chris Price 12 éve
szülő
commit
310a4b1575

+ 2 - 2
lib/puppet/util/ini_file.rb

@@ -5,7 +5,7 @@ module Puppet
 module Util
   class IniFile
 
-    SECTION_REGEX = /^\s*\[([\w\d\.\\\/\-]+)\]\s*$/
+    SECTION_REGEX = /^\s*\[([\w\d\.\\\/\-\:]+)\]\s*$/
     SETTING_REGEX = /^\s*([\w\d\.\\\/\-]+)\s*=\s*([\S]+)\s*$/
 
     def initialize(path)
@@ -133,4 +133,4 @@ module Util
 
   end
 end
-end
+end

+ 3 - 0
spec/spec_helper.rb

@@ -6,3 +6,6 @@ require 'puppetlabs_spec_helper/puppetlabs_spec_helper'
 
 require 'puppetlabs_spec_helper/puppetlabs_spec/files'
 
+RSpec.configure do |config|
+  config.mock_with :rspec
+end

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

@@ -43,6 +43,8 @@ master = true
 foo= foovalue2
 baz=bazvalue
 url = http://192.168.1.1:8080
+[section:sub]
+subby=bar
     #another comment
  ; yet another comment
       EOS
@@ -67,6 +69,36 @@ master = true
 foo= foovalue2
 baz=bazvalue
 url = http://192.168.1.1:8080
+yahoo = yippee
+[section:sub]
+subby=bar
+    #another comment
+ ; yet another comment
+      EOS
+)
+    end
+
+    it "should add a missing setting to the correct section with colon" do
+      resource = Puppet::Type::Ini_setting.new(common_params.merge(
+          :section => 'section:sub', :setting => 'yahoo', :value => 'yippee'))
+      provider = described_class.new(resource)
+      provider.exists?.should == false
+      provider.create
+      validate_file(<<-EOS
+# This is a comment
+[section1]
+; This is also a comment
+foo=foovalue
+
+bar = barvalue
+master = true
+[section2]
+
+foo= foovalue2
+baz=bazvalue
+url = http://192.168.1.1:8080
+[section:sub]
+subby=bar
     #another comment
  ; yet another comment
 yahoo = yippee
@@ -93,6 +125,35 @@ master = true
 foo= foovalue2
 baz = bazvalue2
 url = http://192.168.1.1:8080
+[section:sub]
+subby=bar
+    #another comment
+ ; yet another comment
+      EOS
+      )
+    end
+
+    it "should modify an existing setting with a different value - with colon in section" do
+      resource = Puppet::Type::Ini_setting.new(common_params.merge(
+           :section => 'section:sub', :setting => 'subby', :value => 'foo'))
+      provider = described_class.new(resource)
+      provider.exists?.should == false
+      provider.create
+      validate_file(<<-EOS
+# This is a comment
+[section1]
+; This is also a comment
+foo=foovalue
+
+bar = barvalue
+master = true
+[section2]
+
+foo= foovalue2
+baz=bazvalue
+url = http://192.168.1.1:8080
+[section:sub]
+subby = foo
     #another comment
  ; yet another comment
       EOS
@@ -119,6 +180,8 @@ master = true
 foo= foovalue2
 baz=bazvalue
 url = http://192.168.0.1:8080
+[section:sub]
+subby=bar
     #another comment
  ; yet another comment
     EOS
@@ -151,6 +214,8 @@ master = true
 foo= foovalue2
 baz=bazvalue
 url = http://192.168.1.1:8080
+[section:sub]
+subby=bar
     #another comment
  ; yet another comment
 
@@ -160,6 +225,36 @@ huzzah = shazaam
       )
     end
 
+    it "should add a new section if the section does not exist - with colon" do
+      resource = Puppet::Type::Ini_setting.new(common_params.merge(
+          :section => "section:subsection", :setting => 'huzzah', :value => 'shazaam'))
+      provider = described_class.new(resource)
+      provider.exists?.should == false
+      provider.create
+      validate_file(<<-EOS
+# This is a comment
+[section1]
+; This is also a comment
+foo=foovalue
+
+bar = barvalue
+master = true
+[section2]
+
+foo= foovalue2
+baz=bazvalue
+url = http://192.168.1.1:8080
+[section:sub]
+subby=bar
+    #another comment
+ ; yet another comment
+
+[section:subsection]
+huzzah = shazaam
+      EOS
+      )
+    end
+
     it "should add a new section if no sections exists" do
       resource = Puppet::Type::Ini_setting.new(common_params.merge(
           :section => "section1", :setting => 'setting1', :value => 'hellowworld', :path => emptyfile))
@@ -172,6 +267,18 @@ setting1 = hellowworld
 ", emptyfile)
     end
 
+    it "should add a new section with colon if no sections exists" do
+      resource = Puppet::Type::Ini_setting.new(common_params.merge(
+          :section => "section:subsection", :setting => 'setting1', :value => 'hellowworld', :path => emptyfile))
+      provider = described_class.new(resource)
+      provider.exists?.should == false
+      provider.create
+      validate_file("
+[section:subsection]
+setting1 = hellowworld
+", emptyfile)
+    end
+
     it "should be able to handle variables of any type" do
       resource = Puppet::Type::Ini_setting.new(common_params.merge(
           :section => "section1", :setting => 'master', :value => true))