(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')
|
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.
|
*Type*: statement.
|
||||||
|
|
||||||
#### `validate_slength`
|
#### `validate_slength`
|
||||||
|
|
|
@ -23,16 +23,23 @@ module Puppet::Parser::Functions
|
||||||
|
|
||||||
validate_re($::puppetversion, '^2.7', 'The $puppetversion fact value does not match 2.7')
|
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
|
ENDHEREDOC
|
||||||
if (args.length < 2) or (args.length > 3) then
|
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
|
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}"
|
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
|
# 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
|
# 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)
|
args[0] =~ Regexp.compile(re_str)
|
||||||
end
|
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').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' ]).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/) }
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue