summaryrefslogtreecommitdiff
path: root/spec/unit/puppet/provider/ini_setting/ruby_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/puppet/provider/ini_setting/ruby_spec.rb')
-rw-r--r--spec/unit/puppet/provider/ini_setting/ruby_spec.rb186
1 files changed, 53 insertions, 133 deletions
diff --git a/spec/unit/puppet/provider/ini_setting/ruby_spec.rb b/spec/unit/puppet/provider/ini_setting/ruby_spec.rb
index 7eb4c6d..91d3050 100644
--- a/spec/unit/puppet/provider/ini_setting/ruby_spec.rb
+++ b/spec/unit/puppet/provider/ini_setting/ruby_spec.rb
@@ -5,7 +5,6 @@ provider_class = Puppet::Type.type(:ini_setting).provider(:ruby)
describe provider_class do
include PuppetlabsSpec::Files
-
let(:tmpfile) { tmpfilename("ini_setting_test") }
let(:orig_content) {
<<-EOS
@@ -38,20 +37,15 @@ baz=bazvalue
context "when ensuring that a setting is present" do
let(:common_params) { {
:title => 'ini_setting_ensure_present_test',
- :file => tmpfile,
+ :path => tmpfile,
:section => 'section2',
} }
it "should add a missing setting to the correct section" do
- puts "common params (#{common_params.class}:"
- require 'pp'
- pp common_params
resource = Puppet::Type::Ini_setting.new(common_params.merge(
:setting => 'yahoo', :value => 'yippee'))
- puts "parse title..."
- pp resource.parse_title
provider = described_class.new(resource)
- provider.exists?.should be_nil
+ provider.exists?.should == false
provider.create
validate_file(<<-EOS
# This is a comment
@@ -72,133 +66,59 @@ yahoo = yippee
end
it "should modify an existing setting with a different value" do
- fail
+ resource = Puppet::Type::Ini_setting.new(common_params.merge(
+ :setting => 'baz', :value => 'bazvalue2'))
+ 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
+[section2]
+
+foo= foovalue2
+baz = bazvalue2
+ #another comment
+ ; yet another comment
+ EOS
+ )
end
- it "should recognize an existing setting with the specified value and leave it intact" do
- fail
+ it "should recognize an existing setting with the specified value" do
+ resource = Puppet::Type::Ini_setting.new(common_params.merge(
+ :setting => 'baz', :value => 'bazvalue'))
+ provider = described_class.new(resource)
+ provider.exists?.should == true
+ end
+
+ it "should add a new section if the section does not exist" do
+ resource = Puppet::Type::Ini_setting.new(common_params.merge(
+ :section => "section3", :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
+[section2]
+
+foo= foovalue2
+baz=bazvalue
+ #another comment
+ ; yet another comment
+
+[section3]
+huzzah = shazaam
+ EOS
+ )
end
end
- #it "should pass" do
- # File.read(@tmpfile).should == orig_content
- #end
-
- #context "when adding" do
- # before :each do
- # #tmp = tmpfilename
- # #
- # #@resource = Puppet::Type::File_line.new(
- # # {:name => 'foo', :path => @tmpfile, :line => 'foo'}
- # #)
- # #@provider = provider_class.new(@resource)
- # end
- # it 'should detect if the line exists in the file' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write('foo')
- # end
- # @provider.exists?.should be_true
- # end
- # it 'should detect if the line does not exist in the file' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write('foo1')
- # end
- # @provider.exists?.should be_nil
- # end
- # it 'should append to an existing file when creating' do
- # @provider.create
- # File.read(@tmpfile).chomp.should == 'foo'
- # end
- #end
- #
- #context "when matching" do
- # before :each do
- # # TODO: these should be ported over to use the PuppetLabs spec_helper
- # # file fixtures once the following pull request has been merged:
- # # https://github.com/puppetlabs/puppetlabs-stdlib/pull/73/files
- # tmp = Tempfile.new('tmp')
- # @tmpfile = tmp.path
- # tmp.close!
- # @resource = Puppet::Type::File_line.new(
- # {
- # :name => 'foo',
- # :path => @tmpfile,
- # :line => 'foo = bar',
- # :match => '^foo\s*=.*$',
- # }
- # )
- # @provider = provider_class.new(@resource)
- # end
- #
- # it 'should raise an error if more than one line matches, and should not have modified the file' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write("foo1\nfoo=blah\nfoo2\nfoo=baz")
- # end
- # @provider.exists?.should be_nil
- # expect { @provider.create }.to raise_error(Puppet::Error, /More than one line.*matches/)
- # File.read(@tmpfile).should eql("foo1\nfoo=blah\nfoo2\nfoo=baz")
- # end
- #
- # it 'should replace a line that matches' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write("foo1\nfoo=blah\nfoo2")
- # end
- # @provider.exists?.should be_nil
- # @provider.create
- # File.read(@tmpfile).chomp.should eql("foo1\nfoo = bar\nfoo2")
- # end
- # it 'should add a new line if no lines match' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write("foo1\nfoo2")
- # end
- # @provider.exists?.should be_nil
- # @provider.create
- # File.read(@tmpfile).should eql("foo1\nfoo2\nfoo = bar\n")
- # end
- # it 'should do nothing if the exact line already exists' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write("foo1\nfoo = bar\nfoo2")
- # end
- # @provider.exists?.should be_true
- # @provider.create
- # File.read(@tmpfile).chomp.should eql("foo1\nfoo = bar\nfoo2")
- # end
- #end
- #
- #context "when removing" do
- # before :each do
- # # TODO: these should be ported over to use the PuppetLabs spec_helper
- # # file fixtures once the following pull request has been merged:
- # # https://github.com/puppetlabs/puppetlabs-stdlib/pull/73/files
- # tmp = Tempfile.new('tmp')
- # @tmpfile = tmp.path
- # tmp.close!
- # @resource = Puppet::Type::File_line.new(
- # {:name => 'foo', :path => @tmpfile, :line => 'foo', :ensure => 'absent' }
- # )
- # @provider = provider_class.new(@resource)
- # end
- # it 'should remove the line if it exists' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write("foo1\nfoo\nfoo2")
- # end
- # @provider.destroy
- # File.read(@tmpfile).should eql("foo1\nfoo2")
- # end
- #
- # it 'should remove the line without touching the last new line' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write("foo1\nfoo\nfoo2\n")
- # end
- # @provider.destroy
- # File.read(@tmpfile).should eql("foo1\nfoo2\n")
- # end
- #
- # it 'should remove any occurence of the line' do
- # File.open(@tmpfile, 'w') do |fh|
- # fh.write("foo1\nfoo\nfoo2\nfoo\nfoo")
- # end
- # @provider.destroy
- # File.read(@tmpfile).should eql("foo1\nfoo2\n")
- # end
- #end
end