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?
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]. > 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]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
