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.

Reply via email to