diff --git a/lib/puppetx/filemapper.rb b/lib/puppetx/filemapper.rb index 3707712..f8d93c6 100644 --- a/lib/puppetx/filemapper.rb +++ b/lib/puppetx/filemapper.rb @@ -296,7 +296,7 @@ def perform_write(filename, contents) @mapped_files[filename][:filetype] ||= Puppet::Util::FileType.filetype(self.filetype).new(filename) filetype = @mapped_files[filename][:filetype] - filetype.backup + filetype.backup if filetype.respond_to? :backup filetype.write(contents) end @@ -308,7 +308,7 @@ def remove_empty_file(filename) @mapped_files[filename][:filetype] ||= Puppet::Util::FileType.filetype(self.filetype).new(filename) filetype = @mapped_files[filename][:filetype] - filetype.backup + filetype.backup if filetype.respond_to? :backup File.unlink(filename) end diff --git a/spec/unit/puppetx/filemapper_spec.rb b/spec/unit/puppetx/filemapper_spec.rb index 0f0356c..a40c853 100644 --- a/spec/unit/puppetx/filemapper_spec.rb +++ b/spec/unit/puppetx/filemapper_spec.rb @@ -505,6 +505,33 @@ def select_file; '/single/file/provider'; end subject.load_all_providers_from_disk end + describe 'that does not implement backup' do + let(:resource) { resource = dummytype.new(params_yay) } + let(:stub_filetype) { stub() } + + before :each do + subject.mapped_files['/multiple/file/provider-flush'][:filetype] = stub_filetype + subject.dirty_file!('/multiple/file/provider-flush') + + stub_filetype.expects(:respond_to?).with(:backup).returns(false) + stub_filetype.expects(:backup).never + end + + it 'should not call backup when writing files' do + stub_filetype.stubs(:write) + + resource.flush + end + + it 'should not call backup when unlinking files' do + subject.unlink_empty_files = true + subject.stubs(:format_file).returns '' + File.stubs(:exist?).with('/multiple/file/provider-flush').returns true + File.stubs(:unlink) + + resource.flush + end + end end describe 'flush hooks' do