summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien Thebo <git@somethingsinistral.net>2013-05-15 10:58:04 -0700
committerAdrien Thebo <git@somethingsinistral.net>2013-05-15 10:58:04 -0700
commitdad3a2948fb9ebc5c45975340bc8796c9c041d9a (patch)
treeec211cd78e4b7f01d4ef52f2cc488258d60899f2
parent1ffd72daaaf21e71e762b6cd543043680bdb6694 (diff)
parentb975bd66aa7345a5eeb54eb79dd0f708934609f8 (diff)
downloadpuppet-stdlib-dad3a2948fb9ebc5c45975340bc8796c9c041d9a.tar.gz
puppet-stdlib-dad3a2948fb9ebc5c45975340bc8796c9c041d9a.tar.bz2
Merge pull request #147 from mhellmic/master
don't fail on undef variable in merge
-rw-r--r--lib/puppet/parser/functions/merge.rb1
-rw-r--r--spec/unit/puppet/parser/functions/merge_spec.rb5
2 files changed, 6 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/merge.rb b/lib/puppet/parser/functions/merge.rb
index 6ec085e..1b39f20 100644
--- a/lib/puppet/parser/functions/merge.rb
+++ b/lib/puppet/parser/functions/merge.rb
@@ -22,6 +22,7 @@ module Puppet::Parser::Functions
accumulator = Hash.new
# Merge into the accumulator hash
args.each do |arg|
+ next if arg.is_a? String and arg.empty? # empty string is synonym for puppet's undef
unless arg.is_a?(Hash)
raise Puppet::ParseError, "merge: unexpected argument type #{arg.class}, only expects hash arguments"
end
diff --git a/spec/unit/puppet/parser/functions/merge_spec.rb b/spec/unit/puppet/parser/functions/merge_spec.rb
index 04169e7..8a170bb 100644
--- a/spec/unit/puppet/parser/functions/merge_spec.rb
+++ b/spec/unit/puppet/parser/functions/merge_spec.rb
@@ -26,6 +26,11 @@ describe Puppet::Parser::Functions.function(:merge) do
describe 'when calling merge on the scope instance' do
it 'should require all parameters are hashes' do
expect { new_hash = scope.function_merge([{}, '2'])}.to raise_error(Puppet::ParseError, /unexpected argument type String/)
+ expect { new_hash = scope.function_merge([{}, 2])}.to raise_error(Puppet::ParseError, /unexpected argument type Fixnum/)
+ end
+
+ it 'should accept empty strings as puppet undef' do
+ expect { new_hash = scope.function_merge([{}, ''])}.not_to raise_error(Puppet::ParseError, /unexpected argument type String/)
end
it 'should be able to merge two hashes' do