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

use strict;
use warnings;

use Test::More;

plan skip_all => 'TODO';

eval "use Test::Pod::Coverage 1.04";
plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@;

# This is a stripped down version of all_pod_coverage_ok which lets us
# vary the trustme parameter per module.
my @modules = all_modules();
plan tests => scalar @modules;

my %trustme = (
    'Mouse::Meta::Module' => [
    ],

    'Mouse::Meta::Class'  => [
        qw(
            get_method_body
            superclasses
            clone_instance
         )
    ],
    'Mouse::Meta::Attribute' => [
        qw(
            interpolate_class
            throw_error
            create
            get_parent_args
            verify_type_constraint
            canonicalize_args
            coerce_constraint
         )
    ],
    'Mouse::Meta::Method'                  => [],
    'Mouse::Meta::Method::Accessor'        => [],
    'Mouse::Meta::Method::Constructor'     => [],
    'Mouse::Meta::Method::Destructor'      => [],
    'Mouse::Meta::Role'                    => [],
    'Mouse::Meta::Role::Composite' =>
        [ 'get_method', 'get_method_list', 'has_method', 'add_method' ],
    'Mouse::Role' => [
        qw( after
            around
            augment
            before
            extends
            has
            inner
            override
            super
            with )
    ],
    'Mouse::Meta::TypeConstraint'      => [
        qw(
            compile_type_constraint
            parameterize
        )
    ],
    'Mouse::Util'                      => [
        qw(
            generate_isa_predicate_for
            does dump meta
        )
    ],
    'Mouse::Util::TypeConstraints'     => [
        qw(typecast_constraints)
     ],

    'Mouse::Exporter' => [
        qw(
            do_import do_unimport
        )
    ],
    'Mouse::Spec'         => ['.+'],
    'Squirrel'            => ['.+'],
    'Squirrel::Role'      => ['.+'],
    'Mouse::TypeRegistry' => ['.+'],
);

for my $module ( sort @modules ) {
    my $trustme = [];
    if ( $trustme{$module} ) {
        my $methods = join '|', @{ $trustme{$module} };
        $trustme = [qr/^(?:$methods)$/];
    }

    pod_coverage_ok(
        $module, { trustme => $trustme },
        "Pod coverage for $module"
    );
}