diff options
| author | Brice Figureau <brice-puppet@daysofwonder.com> | 2010-02-09 22:25:38 +0100 |
|---|---|---|
| committer | test branch <puppet-dev@googlegroups.com> | 2010-02-17 06:50:53 -0800 |
| commit | c694c4d34fea8b45695222321930e64b8991887a (patch) | |
| tree | 08640321e2e770b69fa44fb711fd206827103fe9 | |
| parent | 075f3c8df516bd52d412dc8d88fe194cf4edfb5b (diff) | |
| download | puppet-c694c4d34fea8b45695222321930e64b8991887a.tar.gz puppet-c694c4d34fea8b45695222321930e64b8991887a.tar.xz puppet-c694c4d34fea8b45695222321930e64b8991887a.zip | |
Fix #3150 - require function doesn't like ::class syntax
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
| -rw-r--r-- | lib/puppet/parser/functions/require.rb | 7 | ||||
| -rwxr-xr-x | spec/unit/parser/functions/require.rb | 11 |
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/require.rb b/lib/puppet/parser/functions/require.rb index d72169af5..3e7961933 100644 --- a/lib/puppet/parser/functions/require.rb +++ b/lib/puppet/parser/functions/require.rb @@ -37,6 +37,13 @@ fail if used with earlier clients. vals = [vals] unless vals.is_a?(Array) vals.each do |klass| + # lookup the class in the scopes + if classobj = find_hostclass(klass) + klass = classobj.classname + else + raise Puppet::ParseError, "Could not find class %s" % klass + end + # This is a bit hackish, in some ways, but it's the only way # to configure a dependency that will make it to the client. # The 'obvious' way is just to add an edge in the catalog, diff --git a/spec/unit/parser/functions/require.rb b/spec/unit/parser/functions/require.rb index 577a52a42..532c06900 100755 --- a/spec/unit/parser/functions/require.rb +++ b/spec/unit/parser/functions/require.rb @@ -13,6 +13,8 @@ describe "the require function" do @scope.stubs(:resource).returns @resource @scope.stubs(:findresource) @scope.stubs(:compiler).returns(@compiler) + @klass = stub 'class', :classname => "myclass" + @scope.stubs(:find_hostclass).returns(@klass) end it "should exist" do @@ -45,4 +47,13 @@ describe "the require function" do @scope.function_require("myclass") end + + it "should lookup the absolute class path" do + @scope.stubs(:function_include) + + @scope.expects(:find_hostclass).with("myclass").returns(@klass) + @klass.expects(:classname).returns("myclass") + + @scope.function_require("myclass") + end end |
