"none", "mtime", and "ctime" aren't real checksums, but they still need
to fully implement the checksum_stream interface, so that the code
inside the supplied block will run.

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.

Reply via email to