diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-07-09 00:06:13 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-07-09 00:06:13 +0000 |
commit | 1bcca319521987f5b7aa94ef16d3b3f0d41bde7f (patch) | |
tree | bc55678cfbe72986bd896bd263b58a3a753eb92e | |
parent | 8a7fe9fedfcf67f9415a2ecf7fd74f6032d39d8b (diff) | |
download | puppet-1bcca319521987f5b7aa94ef16d3b3f0d41bde7f.tar.gz puppet-1bcca319521987f5b7aa94ef16d3b3f0d41bde7f.tar.xz puppet-1bcca319521987f5b7aa94ef16d3b3f0d41bde7f.zip |
Fixing #687.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2662 980ebf18-57e1-0310-9a29-db15c13687c0
-rw-r--r-- | CHANGELOG | 2 | ||||
-rw-r--r-- | lib/puppet/parser/interpreter.rb | 2 | ||||
-rwxr-xr-x | test/language/interpreter.rb | 12 |
3 files changed, 15 insertions, 1 deletions
@@ -1,3 +1,5 @@ + External node sources can now return undefined classes (#687). + Puppet clients now have http proxy support (#701). The parser now throws an error when a resource reference diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb index 11f5aa15d..bdb49da4c 100644 --- a/lib/puppet/parser/interpreter.rb +++ b/lib/puppet/parser/interpreter.rb @@ -28,7 +28,7 @@ class Puppet::Parser::Interpreter # Then evaluate the classes. begin - options[:scope].function_include(classes) + options[:scope].function_include(classes.find_all { |c| options[:scope].findclass(c) }) rescue => detail raise Puppet::ParseError, "Could not evaluate classes for %s: %s" % [name, detail] end diff --git a/test/language/interpreter.rb b/test/language/interpreter.rb index 1eeb65b1a..302c7e336 100755 --- a/test/language/interpreter.rb +++ b/test/language/interpreter.rb @@ -853,6 +853,18 @@ class TestInterpreter < PuppetTest::TestCase assert(scope.classlist.include?("sub"), "NodeDef did not evaluate class") assert(scope.classlist.include?("other"), "NodeDef did not evaluate other class") + + # Now make sure nodedef doesn't fail when some classes are not defined (#687). + assert_nothing_raised("Could not create a node definition with some invalid classes") do + node = NodeDef.new :name => "yay", :classes => %w{base unknown} + end + + scope = mkscope :interp => interp + assert_nothing_raised("Could not evaluate the node definition with some invalid classes") do + node.evaluate(:scope => scope) + end + + assert(scope.classlist.include?("base"), "NodeDef did not evaluate class") end # This can stay in the main test suite because it doesn't actually use ldapsearch, |