diff options
| author | Luke Kanies <luke@madstop.com> | 2008-01-07 12:19:21 -0600 |
|---|---|---|
| committer | Luke Kanies <luke@madstop.com> | 2008-01-07 12:19:21 -0600 |
| commit | 927dff41df8f1c236c54eaee9fa1db7a3efaf02a (patch) | |
| tree | efa1e512c63104b0ea32c208e751860d44a3b431 | |
| parent | 117926c92c8bdf2a45724c0ae758586f5ae23979 (diff) | |
| download | puppet-927dff41df8f1c236c54eaee9fa1db7a3efaf02a.tar.gz puppet-927dff41df8f1c236c54eaee9fa1db7a3efaf02a.tar.xz puppet-927dff41df8f1c236c54eaee9fa1db7a3efaf02a.zip | |
Fixing #971 -- classes can once again be included multiple
times.
| -rw-r--r-- | CHANGELOG | 3 | ||||
| -rw-r--r-- | lib/puppet/parser/compile.rb | 3 | ||||
| -rwxr-xr-x | spec/unit/parser/compile.rb | 15 |
3 files changed, 20 insertions, 1 deletions
@@ -1,3 +1,6 @@ + Fixed #971 -- classes can once again be included multiple + times. + Added builtin support for Nagios types using Naginator to parse and generate the files. diff --git a/lib/puppet/parser/compile.rb b/lib/puppet/parser/compile.rb index fdd0cbcf2..c065e3f38 100644 --- a/lib/puppet/parser/compile.rb +++ b/lib/puppet/parser/compile.rb @@ -122,9 +122,12 @@ class Puppet::Parser::Compile classes.each do |name| # If we can find the class, then make a resource that will evaluate it. if klass = scope.findclass(name) + found << name and next if class_scope(klass) + # Create a resource to model this class, and then add it to the list # of resources. resource = Puppet::Parser::Resource.new(:type => "class", :title => klass.classname, :scope => scope, :source => scope.source) + store_resource(scope, resource) # If they've disabled lazy evaluation (which the :include function does), diff --git a/spec/unit/parser/compile.rb b/spec/unit/parser/compile.rb index 2ae99b5fd..092bece0c 100755 --- a/spec/unit/parser/compile.rb +++ b/spec/unit/parser/compile.rb @@ -106,7 +106,7 @@ describe Puppet::Parser::Compile, " when evaluating found classes" do @class = stub 'class', :classname => "my::class" @scope.stubs(:findclass).with("myclass").returns(@class) - @resource = mock 'resource' + @resource = stub 'resource', :ref => 'Class[myclass]' end it "should create a resource for each found class" do @@ -156,6 +156,19 @@ describe Puppet::Parser::Compile, " when evaluating found classes" do @compile.evaluate_classes(%w{myclass}, @scope, false) end + it "should skip classes that have already been evaluated" do + @compile.catalog.stubs(:tag) + + @compile.expects(:class_scope).with(@class).returns("something") + + @compile.expects(:store_resource).never + + @resource.expects(:evaluate).never + + Puppet::Parser::Resource.expects(:new).never + @compile.evaluate_classes(%w{myclass}, @scope, false) + end + it "should return the list of found classes" do @compile.catalog.stubs(:tag) |
