diff options
-rw-r--r-- | CHANGELOG | 3 | ||||
-rw-r--r-- | lib/puppet/module.rb | 22 | ||||
-rwxr-xr-x | spec/unit/module.rb | 13 |
3 files changed, 30 insertions, 8 deletions
@@ -1,4 +1,7 @@ 0.24.x + Fixed #1637 - With an inexistant (global) templatedir, modules + can't access their templates + Fixed #1202 - Collection attribute matching doesn't parse arrays Fixed #1473 - Puppetd stops with error after puppetmasterd diff --git a/lib/puppet/module.rb b/lib/puppet/module.rb index b34f2f8b0..9385812b1 100644 --- a/lib/puppet/module.rb +++ b/lib/puppet/module.rb @@ -73,17 +73,23 @@ class Puppet::Module end template_paths = templatepath(environment) - default_template_path = File::join(template_paths.first, template) + if template_paths + # If we can find the template in :templatedir, we return that. + td_file = template_paths.collect { |path| + File::join(path, template) + }.find { |f| File.exists?(f) } - # If we can find the template in :templatedir, we return that. - td_file = template_paths.collect { |path| - File::join(path, template) - }.find { |f| File.exists?(f) } - - return td_file unless td_file == nil + return td_file unless td_file == nil + end td_file = find_template_for_module(template, environment) - td_file ||= default_template_path + + # check in the default template dir, if there is one + if td_file.nil? + raise Puppet::Error, "No valid template directory found, please check templatedir settings" if template_paths.nil? + td_file = File::join(template_paths.first, template) + end + td_file end def self.find_template_for_module(template, environment = nil) diff --git a/spec/unit/module.rb b/spec/unit/module.rb index 4d66550b5..a6608fc1b 100755 --- a/spec/unit/module.rb +++ b/spec/unit/module.rb @@ -89,6 +89,19 @@ describe Puppet::Module, " when searching for templates" do Puppet::Module.find_template("mymod/mytemplate").should == "/my/templates/mymod/mytemplate" end + it "should raise an error if no valid templatedir exists" do + Puppet::Module.stubs(:templatepath).with(nil).returns(nil) + lambda { Puppet::Module.find_template("mytemplate") }.should raise_error + end + + it "should not raise an error if no valid templatedir exists and the template exists in a module" do + Puppet::Module.stubs(:templatepath).with(nil).returns(nil) + Puppet[:modulepath] = "/one:/two" + File.stubs(:directory?).returns(true) + File.stubs(:exists?).returns(true) + Puppet::Module.find_template("mymod/mytemplate").should == "/one/mymod/templates/mytemplate" + end + it "should use the main templatedir if no module is found" do Puppet::Module.stubs(:templatepath).with(nil).returns(["/my/templates"]) Puppet::Module.expects(:find).with("mymod", nil).returns(nil) |