I found some cases where duplicate resources
weren't correctly skipped, but I couldn't get
the test to really demonstrate them.

The code at least is demonstrated to work,
anyway.

Signed-off-by: Luke Kanies <[email protected]>
---
 lib/puppet/transaction.rb |    9 ++++-----
 spec/unit/transaction.rb  |    1 +
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/puppet/transaction.rb b/lib/puppet/transaction.rb
index 80e0d49..1f4cb3e 100644
--- a/lib/puppet/transaction.rb
+++ b/lib/puppet/transaction.rb
@@ -349,19 +349,18 @@ class Transaction
         end
         return [] unless made
         made = [made] unless made.is_a?(Array)
-        made.uniq!
-        made.each do |res|
+        made.uniq.find_all do |res|
             begin
                 @catalog.add_resource(res) do |r|
                     r.finish
                     make_parent_child_relationship(resource, [r])
                 end
+                true
             rescue Puppet::Resource::Catalog::DuplicateResourceError
-                made.delete(res)
-                next
+                res.info "Duplicate generated resource; skipping"
+                false
             end
         end
-        made
     end
 
     # Collect any dynamically generated resources.  This method is called
diff --git a/spec/unit/transaction.rb b/spec/unit/transaction.rb
index 2589f7f..37870f1 100755
--- a/spec/unit/transaction.rb
+++ b/spec/unit/transaction.rb
@@ -47,6 +47,7 @@ describe Puppet::Transaction do
             
@catalog.expects(:add_resource).raises(Puppet::Resource::Catalog::DuplicateResourceError.new("foo"))
 
             resource.expects(:finish).never
+            resource.expects(:info) # log that it's skipped
 
             @transaction.generate_additional_resources(generator, 
:generate).should be_empty
         end
-- 
1.6.1


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to