use Test::More; use 5.14.2; use strict; use warnings; use Zonemaster::Engine; use File::Find; eval { require Pod::Coverage }; if ( $@ ) { plan skip_all => "Need Pod::Coverage to run these tests."; exit( 0 ); } my @modules; find( sub { if ( $File::Find::name =~ m|lib/(.*)\.pm| ) { my $name = $1; $name =~ s|/|::|g; push @modules, $name; } }, 'lib' ); foreach my $name ( @modules ) { next if $name =~ q{Zonemaster::Engine::Constants}; my $pc = Pod::Coverage->new( package => $name , private => [ qr/^_/ ] ); if ( defined $pc->coverage ) { my @uncovered = $pc->uncovered; if ( @uncovered == 1 and $uncovered[0] eq 'LC_MESSAGES' ) { next; } is( $pc->coverage, 1.0, $name ); if ( $pc->coverage < 1.0 ) { foreach my $name ( @uncovered ) { diag "Function '$name' not documented"; } } } else { diag $pc->why_unrated . ' for ' . $name; } } done_testing;