[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35

Markus Roberts Markus at reality.com
Wed Jul 14 10:35:34 UTC 2010


The following commit has been merged in the upstream branch:
commit 9afc67a465f030a2a1cad0e7ec58e30862f28b4d
Author: Markus Roberts <Markus at reality.com>
Date:   Mon Jun 28 12:00:55 2010 -0700

    Fix for pre 1.8.7 compatibility in namvar patch
    
    There was a subtle 1.8.7 dependence in the composite key / namevar patch;
    Nick discovered that our assumtion that hashes could be used as hash keys
    does not hold in earlier bersions of ruby.  This patch replaces the hash
    valued uniqueness_key with an array of the values of the (ordered) key
    attributes.

diff --git a/lib/puppet/resource.rb b/lib/puppet/resource.rb
index 6ffaa2f..393211e 100644
--- a/lib/puppet/resource.rb
+++ b/lib/puppet/resource.rb
@@ -213,11 +213,7 @@ class Puppet::Resource
     end
 
     def uniqueness_key
-        h = {}
-        key_attributes.each do |attribute|
-            h[attribute] = self.to_hash[attribute]
-        end
-        return h
+        self.to_hash.values_at(*key_attributes.sort_by { |k| k.to_s })
     end
 
     def key_attributes
diff --git a/spec/unit/resource_spec.rb b/spec/unit/resource_spec.rb
index 4bcfbd3..712bc2c 100755
--- a/spec/unit/resource_spec.rb
+++ b/spec/unit/resource_spec.rb
@@ -298,7 +298,7 @@ describe Puppet::Resource do
     describe "when referring to a resource with name canonicalization" do
         it "should canonicalize its own name" do
             res = Puppet::Resource.new("file", "/path/")
-            res.uniqueness_key.should == {:path => "/path"}
+            res.uniqueness_key.should == ["/path"]
             res.ref.should == "File[/path/]"
         end
     end
@@ -793,16 +793,13 @@ describe Puppet::Resource do
     end
 
     describe "when generating the uniqueness key" do
-        it "should include all of the key_attributes" do
+        it "should include all of the key_attributes in alphabetical order by attribute name" do
             Puppet::Type.type(:file).stubs(:key_attributes).returns [:myvar, :owner, :path]
             Puppet::Type.type(:file).stubs(:title_patterns).returns(
                 [ [ /(.*)/, [ [:path, lambda{|x| x} ] ] ] ]
             )
-            Puppet::Resource.new("file", "/my/file", :parameters => {:owner => 'root', :content => 'hello'}).uniqueness_key.should == {
-                :myvar => nil,
-                :owner => 'root',
-                :path => '/my/file',
-            }
+            res = Puppet::Resource.new("file", "/my/file", :parameters => {:owner => 'root', :content => 'hello'})
+            res.uniqueness_key.should == [ nil, 'root', '/my/file']
         end
     end
 end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list