From 5726412cb7289c6cfbc421d9081d690ffa48ba9a Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Fri, 9 Nov 2007 19:19:11 +0100 Subject: tests for #872: check interaction between "replace" and "content" Currently "Puppet::Type::File when used with replace=>false and content should be insync if the file exists and the content is different" fails. --- spec/unit/ral/types/file.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 spec/unit/ral/types/file.rb diff --git a/spec/unit/ral/types/file.rb b/spec/unit/ral/types/file.rb new file mode 100755 index 000000000..823d643b0 --- /dev/null +++ b/spec/unit/ral/types/file.rb @@ -0,0 +1,32 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../../spec_helper' +require 'tempfile' + +describe Puppet::type(:file), " when used with replace=>false and content" do + + before do + @path = Tempfile.new("puppetspec") + @path.close!() + @path = @path.path + @file = Puppet::type(:file).create( { :name => @path, :content => "foo", :replace => :false } ) + end + + after do + end + + it "should be insync if the file exists and the content is different" do + File.open(@path, "w") do |f| f.puts "bar" end + @file.property(:content).insync?("bar").should be_true + end + + it "should be insync if the file exists and the content is right" do + File.open(@path, "w") do |f| f.puts "foo" end + @file.property(:content).insync?("foo").should be_true + end + + it "should not be insync if the file doesnot exist" do + @file.property(:content).insync?(:nil).should be_false + end + +end -- cgit From 445c29c4b108e04b3f077316b36ba50284a7d5d5 Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Fri, 9 Nov 2007 19:25:09 +0100 Subject: fix #872: improve property(:content).insync? This commit applies ctrlaltdel's patch from trac #872 --- lib/puppet/type/pfile/content.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/puppet/type/pfile/content.rb b/lib/puppet/type/pfile/content.rb index 11458ef18..6dcda0aa6 100755 --- a/lib/puppet/type/pfile/content.rb +++ b/lib/puppet/type/pfile/content.rb @@ -33,7 +33,13 @@ module Puppet end # Override this method to provide diffs if asked for. + # Also, fix #872: when content is used, and replace is true, the file + # should be insync when it exists def insync?(is) + if ! @resource.replace? and File.exists?(@resource[:path]) + return true + end + result = super if ! result and Puppet[:show_diff] and File.exists?(@resource[:path]) string_file_diff(@resource[:path], self.should) -- cgit