We were previously failing if param names were
nil, and a lot of tests had these param names
nil.

Signed-off-by: Luke Kanies <[email protected]>
---
Local-branch: refactor/master/8233-refactor_parameter_management
 lib/puppet/type.rb     |    5 +++++
 spec/unit/type_spec.rb |   12 ++++++++++++
 2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index 462d741..5117570 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -224,6 +224,7 @@ class Type
 
   # This returns the class for a given parameter, or nil.
   def self.parameter(name)
+    return nil unless name
     name = name.to_sym
     @parameters_by_name ||= {}
     if self == Puppet::Type
@@ -235,6 +236,7 @@ class Type
 
   # What kind of parameter do we have - property, parameter, or metaparameter?
   def self.parameter_type(name)
+    return nil unless name
     name = name.to_sym
     return nil unless klass = parameter(name)
     klass.parameter_type
@@ -252,6 +254,7 @@ class Type
   # Is the provided name a valid parameter?
   # This method is used in both Puppet::Type and Puppet::Resource.
   def self.valid_parameter?(name)
+    return false unless name
     name = name.to_sym
     return true if name == :name and self != Puppet::Type
     return true if parameter(name)
@@ -474,6 +477,7 @@ class Type
   # value, but you can also specifically return 'is' and 'should'
   # values using 'object.is(:property)' or 'object.should(:property)'.
   def [](name)
+    name = symbolize(name)
     fail("Invalid parameter #{name}(#{name.inspect})") unless 
self.class.valid_parameter?(name)
 
     if name == :name && nv = name_var
@@ -493,6 +497,7 @@ class Type
   # access to always be symbols, not strings.  This sets the 'should'
   # value on properties, and otherwise just sets the appropriate parameter.
   def []=(name,value)
+    name = symbolize(name)
     fail("Invalid parameter #{name}") unless self.class.valid_parameter?(name)
 
     if name == :name && nv = name_var
diff --git a/spec/unit/type_spec.rb b/spec/unit/type_spec.rb
index 4c5c176..b43d3d8 100755
--- a/spec/unit/type_spec.rb
+++ b/spec/unit/type_spec.rb
@@ -140,6 +140,10 @@ describe Puppet::Type do
       @type.parameter(:foo).should be_instance_of(Class)
     end
 
+    it "should return nil when provided a nil parameter name" do
+      @type.parameter(nil).should be_nil
+    end
+
     it "should support retrieving parameters specified with a string" do
       @type.newparam(:foo)
       @type.parameter("foo").should be_instance_of(Class)
@@ -224,6 +228,10 @@ describe Puppet::Type do
       @type.parameter(:noop).should be_instance_of(Class)
     end
 
+    it "should return nil when asked for the parameter type of a nil parameter 
name" do
+      @type.parameter_type(nil).should be_nil
+    end
+
     it "should consider subclasses of Property to be properties" do
       @type.newproperty(:foo)
       @type.parameter_type(:foo).should == :property
@@ -243,6 +251,10 @@ describe Puppet::Type do
       @type.parameter_type(:foo).should == :parameter
     end
 
+    it "should consider a nil parameter to be invalid" do
+      @type.should_not be_valid_parameter(nil)
+    end
+
     it "should consider a defined parameter to be valid" do
       @type.newparam(:foo)
       @type.should be_valid_parameter(:foo)
-- 
1.7.3.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