diff options
Diffstat (limited to 't/06-options.t')
-rw-r--r-- | t/06-options.t | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/t/06-options.t b/t/06-options.t new file mode 100644 index 0000000..ad167c0 --- /dev/null +++ b/t/06-options.t @@ -0,0 +1,39 @@ +use strict; +use warnings; + +use File::Spec; +use lib File::Spec->catdir( 't', 'lib' ); + +use PVTests; +use Test::More; + +use Params::Validate qw(:all); + +validation_options( stack_skip => 2 ); + +sub foo { + my %p = validate( @_, { bar => 1 } ); +} + +sub bar { foo(@_) } + +sub baz { bar(@_) } + +eval { baz() }; + +like( $@, qr/mandatory.*missing.*call to main::bar/i ); + +validation_options( stack_skip => 3 ); + +eval { baz() }; +like( $@, qr/mandatory.*missing.*call to main::baz/i ); + +validation_options( on_fail => sub { die bless { hash => 'ref' }, 'Dead' } ); + +eval { baz() }; + +my $e = $@; +is( $e->{hash}, 'ref' ); +ok( eval { $e->isa('Dead'); 1; } ); + +done_testing(); |