diff options
author | Adrien Thebo <git@somethingsinistral.net> | 2013-09-17 11:07:21 -0700 |
---|---|---|
committer | Adrien Thebo <git@somethingsinistral.net> | 2013-09-17 11:07:21 -0700 |
commit | 5cc5e293cfe866c0136e0a7a14262147ca63a717 (patch) | |
tree | 7598b174bc7ae6281d439309c4a8c3093316c795 | |
parent | ebec9de534bf7ffd32117273002e1508f2726ea9 (diff) | |
parent | c14cbf31e26b5749623947727ffac64817b5bb5f (diff) |
Merge pull request #178 from lmello/fix_bug_20681
bug # 20681 delete() function should not remove elements from original list
-rw-r--r-- | lib/puppet/parser/functions/delete.rb | 2 | ||||
-rwxr-xr-x | spec/unit/puppet/parser/functions/delete_spec.rb | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/puppet/parser/functions/delete.rb b/lib/puppet/parser/functions/delete.rb index f814344..d03a293 100644 --- a/lib/puppet/parser/functions/delete.rb +++ b/lib/puppet/parser/functions/delete.rb @@ -27,7 +27,7 @@ string, or key from a hash. "given #{arguments.size} for 2.") end - collection = arguments[0] + collection = arguments[0].dup item = arguments[1] case collection diff --git a/spec/unit/puppet/parser/functions/delete_spec.rb b/spec/unit/puppet/parser/functions/delete_spec.rb index 2f29c93..06238f1 100755 --- a/spec/unit/puppet/parser/functions/delete_spec.rb +++ b/spec/unit/puppet/parser/functions/delete_spec.rb @@ -35,4 +35,22 @@ describe "the delete function" do result.should(eq({ 'a' => 1, 'c' => 3 })) end + it "should not change origin array passed as argument" do + origin_array = ['a','b','c','d'] + result = scope.function_delete([origin_array, 'b']) + origin_array.should(eq(['a','b','c','d'])) + end + + it "should not change the origin string passed as argument" do + origin_string = 'foobarbabarz' + result = scope.function_delete([origin_string,'bar']) + origin_string.should(eq('foobarbabarz')) + end + + it "should not change origin hash passed as argument" do + origin_hash = { 'a' => 1, 'b' => 2, 'c' => 3 } + result = scope.function_delete([origin_hash, 'b']) + origin_hash.should(eq({ 'a' => 1, 'b' => 2, 'c' => 3 })) + end + end |