> 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.

Reply via email to