1use strict; 2use warnings; 3 4use File::Spec; 5use lib File::Spec->catdir( 't', 'lib' ); 6 7use PVTests; 8use Test::More tests => 4; 9 10use Params::Validate qw(:all); 11 12 13validation_options( stack_skip => 2 ); 14 15sub foo 16{ 17 my %p = validate(@_, { bar => 1 }); 18} 19 20sub bar { foo(@_) } 21 22sub baz { bar(@_) } 23 24eval { baz() }; 25 26like( $@, qr/mandatory.*missing.*call to main::bar/i ); 27 28validation_options( stack_skip => 3 ); 29 30eval { baz() }; 31like( $@, qr/mandatory.*missing.*call to main::baz/i ); 32 33validation_options 34 ( on_fail => sub { die bless { hash => 'ref' }, 'Dead' } ); 35 36eval { baz() }; 37 38my $e = $@; 39is( $e->{hash}, 'ref' ); 40ok( eval { $e->isa( 'Dead' ); 1; } ); 41 42 43 44