From 1808c50ea15f48eab7110f34685fbb4c84b6a00a Mon Sep 17 00:00:00 2001 From: luke Date: Thu, 1 Mar 2007 17:41:00 +0000 Subject: Apparently the include function was not failing when it could not find asked-for classes. Now it does. git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2250 980ebf18-57e1-0310-9a29-db15c13687c0 --- lib/puppet/parser/functions.rb | 2 +- lib/puppet/parser/scope.rb | 1 + test/language/functions.rb | 30 ++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/puppet/parser/functions.rb b/lib/puppet/parser/functions.rb index 288a3bd68..0b94ca76e 100644 --- a/lib/puppet/parser/functions.rb +++ b/lib/puppet/parser/functions.rb @@ -110,7 +110,7 @@ module Functions klasses = evalclasses(*vals) missing = vals.find_all do |klass| - ! klass.include?(klass) + ! klasses.include?(klass) end # Throw an error if we didn't evaluate all of the classes. diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb index 6bb8872ee..e81862dad 100644 --- a/lib/puppet/parser/scope.rb +++ b/lib/puppet/parser/scope.rb @@ -195,6 +195,7 @@ class Puppet::Parser::Scope retval << klass end end + retval end def exported? diff --git a/test/language/functions.rb b/test/language/functions.rb index 1484a1312..e3ab1ca1e 100755 --- a/test/language/functions.rb +++ b/test/language/functions.rb @@ -415,6 +415,36 @@ class TestLangFunctions < Test::Unit::TestCase assert(ffun, "Could not find definition in 'fun' namespace") assert(ffoo, "Could not find definition in 'foo' namespace") end + + def test_include + interp = mkinterp + scope = mkscope(:interp => interp) + + assert_raise(Puppet::ParseError, "did not throw error on missing class") do + scope.function_include("nosuchclass") + end + + interp.newclass("myclass") + + assert_nothing_raised do + scope.function_include "myclass" + end + + assert(scope.classlist.include?("myclass"), + "class was not evaluated") + + # Now try multiple classes at once + classes = %w{one two three}.each { |c| interp.newclass(c) } + + assert_nothing_raised do + scope.function_include classes + end + + classes.each do |c| + assert(scope.classlist.include?(c), + "class %s was not evaluated" % c) + end + end end # $Id$ -- cgit