1use Test::More; 2 3eval "use Pod::Coverage 0.19"; 4plan skip_all => 'Pod::Coverage 0.19 required' if $@; 5eval "use Test::Pod::Coverage 1.04"; 6plan skip_all => 'Test::Pod::Coverage 1.04 required' if $@; 7 8plan skip_all => 'set TEST_POD to enable this test' 9 unless ( $ENV{TEST_POD} || -e 'MANIFEST.SKIP' ); 10 11my @modules = sort { $a cmp $b } ( Test::Pod::Coverage::all_modules() ); 12plan tests => scalar(@modules); 13 14# Since this is about checking documentation, a little documentation 15# of what this is doing might be in order... 16# The exceptions structure below is a hash keyed by the module 17# name. The value for each is a hash, which contains one or more 18# (although currently more than one makes no sense) of the following 19# things:- 20# skip => a true value means this module is not checked 21# ignore => array ref containing list of methods which 22# do not need to be documented. 23my $exceptions = { 24 'SQL::Abstract' => { 25 ignore => [ 26 qw/belch 27 puke/ 28 ] 29 }, 30 'SQL::Abstract::Test' => { skip => 1 }, 31}; 32 33foreach my $module (@modules) { 34 SKIP: 35 { 36 skip "$module - No user visible methods", 37 1 38 if ( $exceptions->{$module}{skip} ); 39 40 # build parms up from ignore list 41 my $parms = {}; 42 $parms->{trustme} = 43 [ map { qr/^$_$/ } @{ $exceptions->{$module}{ignore} } ] 44 if exists( $exceptions->{$module}{ignore} ); 45 46 # run the test with the potentially modified parm set 47 pod_coverage_ok( $module, $parms, "$module POD coverage" ); 48 } 49} 50