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.
