#!/usr/bin/perl use strict; use warnings; use File::Spec; use File::Basename; use Test::More; use Test::CheckManifest; # create a directory and a file my $sub = Test::CheckManifest->can('_validate_args'); ok $sub; my $default = { filter => [], exclude => [ qw!/blib /_blib! ], bool => 'or', }; is_deeply [ $sub->( [], "hallo" ) ], [ $default, "hallo" ], 'Empty Arrayref'; is_deeply [ $sub->( { exclude => {} }, "hallo" ) ], [ $default, "hallo" ], 'exclude => {}'; is_deeply [ $sub->( { exclude => [] }, "hallo" ) ], [ $default, "hallo" ], 'exclude => []'; is_deeply [ $sub->( { exclude => 'test' }, "hallo" ) ], [ $default, "hallo" ], 'exclude => "test"'; is_deeply [ $sub->( { bool => {} }, "hallo" ) ], [ $default, "hallo" ], 'bool => {}'; is_deeply [ $sub->( { bool => 'or' }, "hallo" )], [ $default, "hallo" ], 'bool => "or"'; is_deeply [ $sub->( { bool => 'and' }, "hallo" )], [ { %$default, bool => 'and' }, "hallo" ], 'bool => "and"'; is_deeply [ $sub->( { bool => '1' }, "hallo" )], [ $default, "hallo" ], 'bool => "1"'; is_deeply [ $sub->( { filter => [] }, "hallo" ) ], [ $default, "hallo" ], 'filter -> arrayref'; is_deeply [ $sub->( { filter => {} }, "hallo" ) ], [ $default, "hallo" ], 'filter -> empty hashref'; is_deeply [ $sub->( { filter => 'test' }, "hallo" ) ], [ $default, "hallo" ], 'filter -> string'; is_deeply [ $sub->( { filter => [ 'hallo' ] }, "hallo" ) ], [ $default, "hallo" ], 'filter -> no regex'; { my $error; eval { $sub->( { exclude => ['testing'] } ); 1; } or do { $error = $@; }; like $error, qr/path in excluded array must be "absolute"/, 'relative paths'; } done_testing();