> What's the behavior with this patch when checksum=none and specifying a > source or content? How does the system compare the current file to the > desired file? >
It overwrites the file every time. That might not be the most desirable behavior, but it's more correct than *truncating* the file every time. > > On Dec 16, 2010, at 2:41 PM, Jesse Wolfe wrote: > > > The #write method in lib/puppet/type/file/content.rb relies on the block > > passed to #sum_stream getting executed. "none", "mtime", and "ctime" > > aren't real checksums, so they violated that assumption and just > > returned empty results. This patch causes that block to get executed. > > > > Signed-off-by: Jesse Wolfe <[email protected]> > > --- > > lib/puppet/util/checksums.rb | 11 +++++++++++ > > spec/unit/util/checksums_spec.rb | 10 +++++++++- > > 2 files changed, 20 insertions(+), 1 deletions(-) > > > > diff --git a/lib/puppet/util/checksums.rb b/lib/puppet/util/checksums.rb > > index 5aebd83..6fdf14e 100644 > > --- a/lib/puppet/util/checksums.rb > > +++ b/lib/puppet/util/checksums.rb > > @@ -1,6 +1,12 @@ > > # A stand-alone module for calculating checksums > > # in a generic way. > > module Puppet::Util::Checksums > > + class FakeChecksum > > + def <<(*args) > > + self > > + end > > + end > > + > > # Is the provided string a checksum? > > def checksum?(string) > > string =~ /^\{(\w{3,5})\}\S+/ > > @@ -55,7 +61,10 @@ module Puppet::Util::Checksums > > end > > > > # by definition this doesn't exist > > + # but we still need to execute the block given > > def mtime_stream > > + noop_digest = FakeChecksum.new > > + yield noop_digest > > nil > > end > > > > @@ -105,6 +114,8 @@ module Puppet::Util::Checksums > > end > > > > def none_stream > > + noop_digest = FakeChecksum.new > > + yield noop_digest > > "" > > end > > > > diff --git a/spec/unit/util/checksums_spec.rb > b/spec/unit/util/checksums_spec.rb > > index e018581..a8bc12b 100755 > > --- a/spec/unit/util/checksums_spec.rb > > +++ b/spec/unit/util/checksums_spec.rb > > @@ -140,7 +140,9 @@ describe Puppet::Util::Checksums do > > end > > > > it "should return nil for streams" do > > - @summer.send(sum.to_s + "_stream").should be_nil > > + expectation = stub "expectation" > > + expectation.expects(:do_something!).at_least_once > > + @summer.send(sum.to_s + "_stream"){ |checksum| checksum << > "anything" ; expectation.do_something! }.should be_nil > > end > > end > > end > > @@ -149,5 +151,11 @@ describe Puppet::Util::Checksums do > > it "should return an empty string" do > > @summer.none_file("/my/file").should == "" > > end > > + > > + it "should return an empty string for streams" do > > + expectation = stub "expectation" > > + expectation.expects(:do_something!).at_least_once > > + @summer.none_stream{ |checksum| checksum << "anything" ; > expectation.do_something! }.should == "" > > + end > > end > > end > > -- > > 1.7.0.4 > > > > -- > > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > [email protected]<puppet-dev%[email protected]> > . > > For more options, visit this group at > http://groups.google.com/group/puppet-dev?hl=en. > > > > > -- > If you can't be a good example, then you'll just have to be a > horrible warning. -- Catherine Aird > --------------------------------------------------------------------- > Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199 > > > > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<puppet-dev%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/puppet-dev?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
