rspec-puppet matchers are defined for tests which exist in
spec/functions, but the function unit tests lived in
spec/unit/puppet/parser/functions. This moves them to the correct place
for using rspec-puppet
The issue #20681 describe the error of delete() function
removing the elements from the origin array/hash/string.
This issue affected other delete functions. Because
ruby delete and delete_if functions make destructive
changes to the origin array/hash.
The delete_undef_values removed elements from the
origin hash and this is not the desired behaviour.
To solve this, we should dup or clone the hash
before using the delete or delete_if ruby functions.
This fix the problem and add unit tests, so we could
enforce this behaviour and prevent regressions.