summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/type/file.rb6
-rwxr-xr-xspec/unit/type/file.rb18
2 files changed, 21 insertions, 3 deletions
diff --git a/lib/puppet/type/file.rb b/lib/puppet/type/file.rb
index f62af871e..34dc4454e 100644
--- a/lib/puppet/type/file.rb
+++ b/lib/puppet/type/file.rb
@@ -237,10 +237,10 @@ module Puppet
# Autorequire any parent directories.
autorequire(:file) do
- if self[:path]
- File.dirname(self[:path])
+ basedir = File.dirname(self[:path])
+ if basedir != self[:path]
+ basedir
else
- Puppet.err "no path for %s, somehow; cannot setup autorequires" % self.ref
nil
end
end
diff --git a/spec/unit/type/file.rb b/spec/unit/type/file.rb
index 6ec86e7a1..1b3fe6a60 100755
--- a/spec/unit/type/file.rb
+++ b/spec/unit/type/file.rb
@@ -71,6 +71,24 @@ describe Puppet::Type.type(:file) do
@file.must_not be_should_be_file
end
+ it "should autorequire its parent directory" do
+ catalog = Puppet::Resource::Catalog.new
+ file = Puppet::Type::File.new(:name => "/foo/bar")
+ dir = Puppet::Type::File.new(:name => "/foo")
+ catalog.add_resource file
+ catalog.add_resource dir
+ reqs = file.autorequire
+ reqs[0].source.must == dir
+ reqs[0].target.must == file
+ end
+
+ it "should not autorequire its parent dir if its parent dir is itself" do
+ catalog = Puppet::Resource::Catalog.new
+ file = Puppet::Type::File.new(:name => "/")
+ catalog.add_resource file
+ file.autorequire.should be_empty
+ end
+
describe "when validating attributes" do
%w{path backup recurse recurselimit source replace force ignore links purge sourceselect}.each do |attr|
it "should have a '#{attr}' parameter" do