(MAINT) validate_re: Clarify docs and error message
This commit is contained in:
parent
399ce03f68
commit
55ece7815a
3 changed files with 31 additions and 2 deletions
|
@ -1054,6 +1054,13 @@ test, and the second argument should be a stringified regular expression (withou
|
|||
validate_re($::puppetversion, '^2.7', 'The $puppetversion fact value does not match 2.7')
|
||||
~~~
|
||||
|
||||
Note: Compilation will also abort, if the first argument is not a String. Always use
|
||||
quotes to force stringification:
|
||||
|
||||
~~~
|
||||
validate_re("${::operatingsystemmajrelease}", '^[57]$')
|
||||
~~~
|
||||
|
||||
*Type*: statement.
|
||||
|
||||
#### `validate_slength`
|
||||
|
|
|
@ -23,16 +23,23 @@ module Puppet::Parser::Functions
|
|||
|
||||
validate_re($::puppetversion, '^2.7', 'The $puppetversion fact value does not match 2.7')
|
||||
|
||||
Note: Compilation will also abort, if the first argument is not a String. Always use
|
||||
quotes to force stringification:
|
||||
|
||||
validate_re("${::operatingsystemmajrelease}", '^[57]$')
|
||||
|
||||
ENDHEREDOC
|
||||
if (args.length < 2) or (args.length > 3) then
|
||||
raise Puppet::ParseError, ("validate_re(): wrong number of arguments (#{args.length}; must be 2 or 3)")
|
||||
raise Puppet::ParseError, "validate_re(): wrong number of arguments (#{args.length}; must be 2 or 3)"
|
||||
end
|
||||
|
||||
raise Puppet::ParseError, "validate_re(): input needs to be a String, not a #{args[0].class}" unless args[0].is_a? String
|
||||
|
||||
msg = args[2] || "validate_re(): #{args[0].inspect} does not match #{args[1].inspect}"
|
||||
|
||||
# We're using a flattened array here because we can't call String#any? in
|
||||
# Ruby 1.9 like we can in Ruby 1.8
|
||||
raise Puppet::ParseError, (msg) unless [args[1]].flatten.any? do |re_str|
|
||||
raise Puppet::ParseError, msg unless [args[1]].flatten.any? do |re_str|
|
||||
args[0] =~ Regexp.compile(re_str)
|
||||
end
|
||||
|
||||
|
|
|
@ -41,6 +41,21 @@ describe 'validate_re' do
|
|||
it { is_expected.to run.with_params('notone', '^one').and_raise_error(Puppet::ParseError, /does not match/) }
|
||||
it { is_expected.to run.with_params('notone', [ '^one', '^two' ]).and_raise_error(Puppet::ParseError, /does not match/) }
|
||||
it { is_expected.to run.with_params('notone', [ '^one', '^two' ], 'custom error').and_raise_error(Puppet::ParseError, /custom error/) }
|
||||
|
||||
describe 'non-string inputs' do
|
||||
[
|
||||
1, # Fixnum
|
||||
3.14, # Float
|
||||
nil, # NilClass
|
||||
true, # TrueClass
|
||||
false, # FalseClass
|
||||
["10"], # Array
|
||||
:key, # Symbol
|
||||
{:key=>"val"}, # Hash
|
||||
].each do |input|
|
||||
it { is_expected.to run.with_params(input, '.*').and_raise_error(Puppet::ParseError, /needs to be a String/) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue