diff options
-rw-r--r-- | lib/puppet/parser/templatewrapper.rb | 10 | ||||
-rwxr-xr-x | spec/unit/parser/templatewrapper.rb | 14 |
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/puppet/parser/templatewrapper.rb b/lib/puppet/parser/templatewrapper.rb index 3b74e62d4..fc716b0fd 100644 --- a/lib/puppet/parser/templatewrapper.rb +++ b/lib/puppet/parser/templatewrapper.rb @@ -37,6 +37,16 @@ class Puppet::Parser::TemplateWrapper end end + # Allow templates to access the defined classes + def classes + return scope.catalog.classes + end + + # Allow templates to access the defined tags + def tags + return scope.catalog.tags + end + # Ruby treats variables like methods, so we used to expose variables # within scope to the ERB code via method_missing. As per RedMine #1427, # though, this means that conflicts between methods in our inheritance diff --git a/spec/unit/parser/templatewrapper.rb b/spec/unit/parser/templatewrapper.rb index 2d4bd141b..20ea76921 100755 --- a/spec/unit/parser/templatewrapper.rb +++ b/spec/unit/parser/templatewrapper.rb @@ -55,6 +55,20 @@ describe Puppet::Parser::TemplateWrapper do tw.has_variable?("chicken").should eql(false) end + it "should allow you to retrieve the defined classes with classes" do + catalog = mock 'catalog', :classes => ["class1", "class2"] + @scope.expects(:catalog).returns( catalog ) + tw = Puppet::Parser::TemplateWrapper.new(@scope, @file) + tw.classes().should == ["class1", "class2"] + end + + it "should allow you to retrieve the defined tags with tags" do + catalog = mock 'catalog', :tags => ["tag1", "tag2"] + @scope.expects(:catalog).returns( catalog ) + tw = Puppet::Parser::TemplateWrapper.new(@scope, @file) + tw.tags().should == ["tag1","tag2"] + end + it "should set all of the scope's variables as instance variables" do template_mock = mock("template", :result => "woot!") File.expects(:read).with("/tmp/fake_template").returns("template contents") |