Skip to content

Commit 7ccf8cf

Browse files
committed
Merge pull request #184 from lmello/fix_bug_20681_delete_undef_values
delete_undef_values function fix bug #20681
2 parents c2f584d + 80a8b7b commit 7ccf8cf

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

lib/puppet/parser/functions/delete_undef_values.rb

+6-6
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ module Puppet::Parser::Functions
1818
raise(Puppet::ParseError,
1919
"delete_undef_values(): Wrong number of arguments given " +
2020
"(#{args.size})") if args.size < 1
21-
22-
result = args[0]
21+
22+
unless args[0].is_a? Array or args[0].is_a? Hash
23+
raise(Puppet::ParseError,
24+
"delete_undef_values(): expected an array or hash, got #{args[0]} type #{args[0].class} ")
25+
end
26+
result = args[0].dup
2327
if result.is_a?(Hash)
2428
result.delete_if {|key, val| val.equal? :undef}
2529
elsif result.is_a?(Array)
2630
result.delete :undef
27-
else
28-
raise(Puppet::ParseError,
29-
"delete_undef_values(): Wrong argument type #{args[0].class} " +
30-
"for first argument")
3131
end
3232
result
3333
end

spec/unit/puppet/parser/functions/delete_undef_values_spec.rb

+12
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,16 @@
2626
result = scope.function_delete_undef_values([{'a'=>'A','b'=>:undef,'c'=>'C','d'=>'undef'}])
2727
result.should(eq({'a'=>'A','c'=>'C','d'=>'undef'}))
2828
end
29+
30+
it "should not change origin array passed as argument" do
31+
origin_array = ['a',:undef,'c','undef']
32+
result = scope.function_delete_undef_values([origin_array])
33+
origin_array.should(eq(['a',:undef,'c','undef']))
34+
end
35+
36+
it "should not change origin hash passed as argument" do
37+
origin_hash = { 'a' => 1, 'b' => :undef, 'c' => 'undef' }
38+
result = scope.function_delete_undef_values([origin_hash])
39+
origin_hash.should(eq({ 'a' => 1, 'b' => :undef, 'c' => 'undef' }))
40+
end
2941
end

0 commit comments

Comments
 (0)