summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-10-18 17:06:28 -0700
committerLuke Kanies <luke@madstop.com>2009-10-18 17:06:28 -0700
commit6ba122f62bf22c955a6923604a46a8ab22d8770b (patch)
tree251e36e5753ea15af4a3da4afaea2778fbaa5114
parentbca3b70437666a8b840af032cab20fc1ea4f18a2 (diff)
downloadpuppet-6ba122f62bf22c955a6923604a46a8ab22d8770b.tar.gz
puppet-6ba122f62bf22c955a6923604a46a8ab22d8770b.tar.xz
puppet-6ba122f62bf22c955a6923604a46a8ab22d8770b.zip
Fixing #2735 - node classes are immed. added to classlist
This commit adds any external node classes to the classlist at compiler initialization, so that at least those classes will be isolated from any ordering issues encountered when testing the contents of the class list during compilation. Signed-off-by: Luke Kanies <luke@madstop.com>
-rw-r--r--lib/puppet/parser/compiler.rb3
-rwxr-xr-xspec/unit/parser/compiler.rb10
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/puppet/parser/compiler.rb b/lib/puppet/parser/compiler.rb
index 521bf1cb5..77b0bb98e 100644
--- a/lib/puppet/parser/compiler.rb
+++ b/lib/puppet/parser/compiler.rb
@@ -415,6 +415,9 @@ class Puppet::Parser::Compiler
# local resource array to maintain resource ordering
@resources = []
+
+ # Make sure any external node classes are in our class list
+ @catalog.add_class(*@node.classes)
end
# Set the node's parameters into the top-scope as variables.
diff --git a/spec/unit/parser/compiler.rb b/spec/unit/parser/compiler.rb
index 41f03f2ac..adc9732dc 100755
--- a/spec/unit/parser/compiler.rb
+++ b/spec/unit/parser/compiler.rb
@@ -86,6 +86,16 @@ describe Puppet::Parser::Compiler do
it "should copy the parser version to the catalog" do
@compiler.catalog.version.should == @parser.version
end
+
+ it "should copy any node classes into the class list" do
+ node = Puppet::Node.new("mynode")
+ node.classes = %w{foo bar}
+ compiler = Puppet::Parser::Compiler.new(node, @parser)
+ p compiler.classlist
+
+ compiler.classlist.should include("foo")
+ compiler.classlist.should include("bar")
+ end
end
describe "when managing scopes" do