+1 On Oct 26, 2009, at 12:57 AM, Jesse Wolfe wrote:
> > This patch changes Puppet::Parser::Resource to check if it has been > passed two Puppet::Parser::Resource::Param objects with the same name. > > Signed-off-by: Jesse Wolfe <[email protected]> > --- > lib/puppet/parser/resource.rb | 6 ++++++ > spec/unit/parser/resource.rb | 15 ++++++++++++++- > 2 files changed, 20 insertions(+), 1 deletions(-) > > diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/ > resource.rb > index b8aaf27..651ed42 100644 > --- a/lib/puppet/parser/resource.rb > +++ b/lib/puppet/parser/resource.rb > @@ -139,6 +139,12 @@ class Puppet::Parser::Resource > if params = options[:params] > options.delete(:params) > params.each do |param| > + # Don't set the same parameter twice > + if @params[param.name] > + self.fail Puppet::ParseError, "Duplicate > parameter '%s' for on %s" % > + [param.name, self.to_s] > + end > + > set_parameter(param) > end > end > diff --git a/spec/unit/parser/resource.rb b/spec/unit/parser/ > resource.rb > index 0a67c4b..3f08de9 100755 > --- a/spec/unit/parser/resource.rb > +++ b/spec/unit/parser/resource.rb > @@ -25,7 +25,7 @@ describe Puppet::Parser::Resource do > params = args[:params] || {:one => "yay", :three => "rah"} > if args[:params] == :none > args.delete(:params) > - else > + elsif not args[:params].is_a? Array > args[:params] = paramify(args[:source], params) > end > > @@ -483,5 +483,18 @@ describe Puppet::Parser::Resource do > result = @parser_resource.to_resource > result[:fee].should == ["a", > Puppet::Resource::Reference.new(:file, "/my/file1"), > Puppet::Resource::Reference.new(:file, "/my/file2")] > end > + > + it "should fail if the same param is declared twice" do > + lambda do > + @parser_resource = mkresource :source => > @source, :params => [ > + Puppet::Parser::Resource::Param.new( > + :name => :foo, :value => "bar", :source => > @source > + ), > + Puppet::Parser::Resource::Param.new( > + :name => :foo, :value => "baz", :source => > @source > + ) > + ] > + end.should raise_error(Puppet::ParseError) > + end > end > end > -- > 1.6.3.3 > > > > -- It's not the voting that's democracy, it's the counting. -- Tom Stoppard --------------------------------------------------------------------- Luke Kanies | http://reductivelabs.com | http://madstop.com --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
