Update stdlib
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / validate_string.rb
index c841f6a..6675d86 100644 (file)
@@ -13,22 +13,25 @@ module Puppet::Parser::Functions
 
         validate_string(true)
         validate_string([ 'some', 'array' ])
-        
+
     Note: validate_string(undef) will not fail in this version of the
     functions API (incl. current and future parser). Instead, use:
-    
+
         if $var == undef {
           fail('...')
         }
-    
+
     ENDHEREDOC
 
+    function_deprecation([:validate_string, 'This method is deprecated, please use the stdlib validate_legacy function, with Stdlib::Compat::String. There is further documentation for validate_legacy function in the README.'])
+
     unless args.length > 0 then
       raise Puppet::ParseError, ("validate_string(): wrong number of arguments (#{args.length}; must be > 0)")
     end
 
     args.each do |arg|
-      unless arg.is_a?(String)
+      # when called through the v4 API shim, undef gets translated to nil
+      unless arg.is_a?(String) || arg.nil?
         raise Puppet::ParseError, ("#{arg.inspect} is not a string.  It looks to be a #{arg.class}")
       end
     end