diff options
-rwxr-xr-x | lib/puppet/type/tidy.rb | 11 | ||||
-rwxr-xr-x | spec/unit/type/tidy.rb | 15 |
2 files changed, 23 insertions, 3 deletions
diff --git a/lib/puppet/type/tidy.rb b/lib/puppet/type/tidy.rb index f45171d90..b5ccb3fb1 100755 --- a/lib/puppet/type/tidy.rb +++ b/lib/puppet/type/tidy.rb @@ -247,8 +247,15 @@ Puppet::Type.newtype(:tidy) do def generate return [] unless stat(self[:path]) - if self[:recurse] - files = Puppet::FileServing::Fileset.new(self[:path], :recurse => self[:recurse]).files.collect do |f| + case self[:recurse] + when Integer, Fixnum, Bignum, /^\d+$/ + parameter = { :recurse => true, :recurselimit => self[:recurse] } + when true, :true, :inf + parameter = { :recurse => true } + end + + if parameter + files = Puppet::FileServing::Fileset.new(self[:path], parameter).files.collect do |f| f == "." ? self[:path] : File.join(self[:path], f) end else diff --git a/spec/unit/type/tidy.rb b/spec/unit/type/tidy.rb index caf5b22b7..88e2e280a 100755 --- a/spec/unit/type/tidy.rb +++ b/spec/unit/type/tidy.rb @@ -7,6 +7,10 @@ tidy = Puppet::Type.type(:tidy) describe tidy do before do Puppet.settings.stubs(:use) + + # for an unknown reason some of these specs fails when run individually + # with a failed expectation on File.lstat in the autoloader. + File.stubs(:lstat) end it "should use :lstat when stating a file" do @@ -161,7 +165,7 @@ describe tidy do Puppet::FileServing::Fileset.stubs(:new).returns @fileset end - it "should use a Fileset for recursion" do + it "should use a Fileset for infinite recursion" do Puppet::FileServing::Fileset.expects(:new).with("/what/ever", :recurse => true).returns @fileset @fileset.expects(:files).returns %w{. one two} @tidy.stubs(:tidy?).returns false @@ -169,6 +173,15 @@ describe tidy do @tidy.generate end + it "should use a Fileset for limited recursion" do + @tidy[:recurse] = 42 + Puppet::FileServing::Fileset.expects(:new).with("/what/ever", :recurse => true, :recurselimit => 42).returns @fileset + @fileset.expects(:files).returns %w{. one two} + @tidy.stubs(:tidy?).returns false + + @tidy.generate + end + it "should generate a file resource for every file that should be tidied but not for files that should not be tidied" do @fileset.expects(:files).returns %w{. one two} |