summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/node/catalog.rb4
-rwxr-xr-xspec/unit/node/catalog.rb20
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/puppet/node/catalog.rb b/lib/puppet/node/catalog.rb
index ecda472be..c4d697244 100644
--- a/lib/puppet/node/catalog.rb
+++ b/lib/puppet/node/catalog.rb
@@ -483,6 +483,10 @@ class Puppet::Node::Catalog < Puppet::PGraph
if resource.is_a?(Puppet::TransObject)
resource = resource.dup
resource.catalog = result
+ elsif resource.is_a?(Puppet::Parser::Resource)
+ resource = resource.to_transobject
+ p resource
+ resource.catalog = result
end
newres = resource.send(convert)
diff --git a/spec/unit/node/catalog.rb b/spec/unit/node/catalog.rb
index 8178f953a..ff9ab6930 100755
--- a/spec/unit/node/catalog.rb
+++ b/spec/unit/node/catalog.rb
@@ -292,6 +292,26 @@ describe Puppet::Node::Catalog, " when converting to a RAL catalog" do
@catalog.vertices.each { |v| v.catalog.object_id.should equal(@catalog.object_id) }
end
+ it "should convert parser resources to transobjects and set the catalog" do
+ catalog = Puppet::Node::Catalog.new("mynode")
+
+ result = mock 'catalog'
+ result.stub_everything
+
+ Puppet::Node::Catalog.expects(:new).returns result
+
+ trans = mock 'trans'
+ resource = Puppet::Parser::Resource.new(:scope => mock("scope"), :source => mock("source"), :type => :file, :title => "/eh")
+ resource.expects(:to_transobject).returns trans
+ trans.expects(:catalog=).with result
+
+ trans.stub_everything
+
+ catalog.add_resource(resource)
+
+ catalog.to_ral
+ end
+
# This tests #931.
it "should not lose track of resources whose names vary" do
changer = Puppet::TransObject.new 'changer', 'test'