The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

require './test.pl';

use strict;

{
    package My::Pod::Checker;
    use strict;
    use parent 'Pod::Checker';

    use vars '@errors'; # a bad, bad hack!

    sub poderror {
        my $self = shift;
        my $opts;
        if (ref $_[0]) {
            $opts = shift;
        };
        ++($self->{_NUM_ERRORS})
            if(!$opts || ($opts->{-severity} && $opts->{-severity} eq 'ERROR'));
        ++($self->{_NUM_WARNINGS})
            if(!$opts || ($opts->{-severity} && $opts->{-severity} eq 'WARNING'));
        push @errors, $opts;
    };
}


use strict;
use File::Spec;
chdir '..';
my @files;
my $manifest = 'MANIFEST';

open my $m, '<', $manifest or die "Can't open '$manifest': $!";

while (<$m>) {
    chomp;
    next unless /\s/;   # Ignore lines without whitespace (i.e., filename only)
    my ($file, $separator) = /^(\S+)(\s+)/;
	next if $file =~ /^cpan\//;
	next unless ($file =~ /\.(?:pm|pod|pl)$/);
    push @files, $file;
};
@files = sort @files; # so we get consistent results

sub pod_ok {
    my ($filename) = @_;
    local @My::Pod::Checker::errors;
    my $checker = My::Pod::Checker->new(-quiet => 1);
    $checker->parse_from_file($filename, undef);
    my $error_count = $checker->num_errors();

    if(! ok($error_count <= 0, "POD of $filename")) {
        diag( "'$filename' contains POD errors" );
        diag(sprintf "%s %s: %s at line %s",
             $_->{-severity}, $_->{-file}, $_->{-msg}, $_->{-line})
            for @My::Pod::Checker::errors;
    };
};

plan (tests => scalar @files);

pod_ok $_
    for @files;

__DATA__
lib/
ext/
pod/
AUTHORS
Changes
INSTALL
README*
*.pod