2011-07-27 00:27:42 +02:00
|
|
|
require 'puppet'
|
|
|
|
require 'tempfile'
|
2011-08-05 04:17:48 +02:00
|
|
|
provider_class = Puppet::Type.type(:file_line).provider(:ruby)
|
2011-07-27 00:27:42 +02:00
|
|
|
describe provider_class do
|
2012-02-09 15:56:09 +01:00
|
|
|
context "add" do
|
|
|
|
before :each do
|
|
|
|
tmp = Tempfile.new('tmp')
|
|
|
|
@tmpfile = tmp.path
|
|
|
|
tmp.close!
|
|
|
|
@resource = Puppet::Type::File_line.new(
|
|
|
|
{:name => 'foo', :path => @tmpfile, :line => 'foo'}
|
|
|
|
)
|
|
|
|
@provider = provider_class.new(@resource)
|
2011-07-27 00:27:42 +02:00
|
|
|
end
|
2012-02-09 15:56:09 +01:00
|
|
|
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'
|
2011-07-27 00:27:42 +02:00
|
|
|
end
|
|
|
|
end
|
2012-02-09 15:56:09 +01:00
|
|
|
|
|
|
|
context "remove" do
|
|
|
|
before :each do
|
|
|
|
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
|
2011-07-27 00:27:42 +02:00
|
|
|
end
|
|
|
|
end
|