diff options
author | Ashley Penney <ashley.penney@puppetlabs.com> | 2014-05-08 13:58:53 -0400 |
---|---|---|
committer | Ashley Penney <ashley.penney@puppetlabs.com> | 2014-05-08 13:58:53 -0400 |
commit | e2297a1ea6b711ca930a21adc56aefe7c602826f (patch) | |
tree | a731fa4c18deac09565cb696b73b29b27c520d98 /spec/functions/validate_re_spec.rb | |
parent | 17a912ea0afb3fb018170477856c25a95009f2cc (diff) | |
parent | 96e43e69d8496926ad4951534e75b204bb279f22 (diff) | |
download | puppet-stdlib-e2297a1ea6b711ca930a21adc56aefe7c602826f.tar.gz puppet-stdlib-e2297a1ea6b711ca930a21adc56aefe7c602826f.tar.bz2 |
Merge pull request #250 from hunner/move_unit
Move unit tests to spec/functions
Diffstat (limited to 'spec/functions/validate_re_spec.rb')
-rwxr-xr-x | spec/functions/validate_re_spec.rb | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/spec/functions/validate_re_spec.rb b/spec/functions/validate_re_spec.rb new file mode 100755 index 0000000..d29988b --- /dev/null +++ b/spec/functions/validate_re_spec.rb @@ -0,0 +1,77 @@ +#! /usr/bin/env ruby -S rspec +require 'spec_helper' + +describe Puppet::Parser::Functions.function(:validate_re) do + let(:scope) { PuppetlabsSpec::PuppetInternals.scope } + + # The subject of these examplres is the method itself. + subject do + # This makes sure the function is loaded within each test + function_name = Puppet::Parser::Functions.function(:validate_re) + scope.method(function_name) + end + + context 'Using Puppet::Parser::Scope.new' do + + describe 'Garbage inputs' do + inputs = [ + [ nil ], + [ [ nil ] ], + [ { 'foo' => 'bar' } ], + [ { } ], + [ '' ], + [ "one", "one", "MSG to User", "4th arg" ], + ] + + inputs.each do |input| + it "validate_re(#{input.inspect}) should fail" do + expect { subject.call [input] }.to raise_error Puppet::ParseError + end + end + end + + describe 'Valid inputs' do + inputs = [ + [ '/full/path/to/something', '^/full' ], + [ '/full/path/to/something', 'full' ], + [ '/full/path/to/something', ['full', 'absent'] ], + [ '/full/path/to/something', ['full', 'absent'], 'Message to the user' ], + ] + + inputs.each do |input| + it "validate_re(#{input.inspect}) should not fail" do + expect { subject.call input }.not_to raise_error + end + end + end + describe "Valid inputs which should raise an exception without a message" do + # The intent here is to make sure valid inputs raise exceptions when they + # don't specify an error message to display. This is the behvior in + # 2.2.x and prior. + inputs = [ + [ "hello", [ "bye", "later", "adios" ] ], + [ "greetings", "salutations" ], + ] + + inputs.each do |input| + it "validate_re(#{input.inspect}) should fail" do + expect { subject.call input }.to raise_error /validate_re.*?does not match/ + end + end + end + describe "Nicer Error Messages" do + # The intent here is to make sure the function returns the 3rd argument + # in the exception thrown + inputs = [ + [ "hello", [ "bye", "later", "adios" ], "MSG to User" ], + [ "greetings", "salutations", "Error, greetings does not match salutations" ], + ] + + inputs.each do |input| + it "validate_re(#{input.inspect}) should fail" do + expect { subject.call input }.to raise_error /#{input[2]}/ + end + end + end + end +end |