be543c46e6be0445c547ac43d1801a3307be662c
[gitmo/Class-MOP.git] / xt / author / pod_coverage.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7
8 use Test::Requires {
9     'Test::Pod::Coverage' => '1.04', # skip all if not installed
10 };
11
12 # This is a stripped down version of all_pod_coverage_ok which lets us
13 # vary the trustme parameter per module.
14 my @modules = all_modules();
15 plan tests => scalar @modules;
16
17 my %trustme = (
18     'Class::MOP' => [
19         'DEBUG_NO_META',
20         'HAVE_ISAREV',
21         'subname',
22         'in_global_destruction',
23     ],
24     'Class::MOP::Attribute' => ['process_accessors'],
25     'Class::MOP::Class'     => [
26         # deprecated
27         'alias_method',
28         'compute_all_applicable_attributes',
29         'compute_all_applicable_methods',
30
31         # unfinished feature
32         'add_dependent_meta_instance',
33         'add_meta_instance_dependencies',
34         'invalidate_meta_instance',
35         'invalidate_meta_instances',
36         'remove_dependent_meta_instance',
37         'remove_meta_instance_dependencies',
38         'update_meta_instance_dependencies',
39
40         # effectively internal
41         'check_metaclass_compatibility',
42         'clone_instance',
43         'construct_class_instance',
44         'construct_instance',
45         'create_meta_instance',
46         'reset_package_cache_flag',
47         'update_package_cache_flag',
48
49         # doc'd with rebless_instance
50         'rebless_instance_away',
51
52         # deprecated
53         'get_attribute_map',
54     ],
55     'Class::MOP::Class::Immutable::Trait'             => ['.+'],
56     'Class::MOP::Class::Immutable::Class::MOP::Class' => ['.+'],
57     'Class::MOP::Deprecated'                          => ['.+'],
58     'Class::MOP::Instance'                            => [
59         qw( BUILDARGS
60             bless_instance_structure
61             is_dependent_on_superclasses ),
62     ],
63     'Class::MOP::Instance' => [
64         qw( BUILDARGS
65             bless_instance_structure
66             is_dependent_on_superclasses ),
67     ],
68     'Class::MOP::Method::Accessor' => [
69         qw( generate_accessor_method
70             generate_accessor_method_inline
71             generate_clearer_method
72             generate_clearer_method_inline
73             generate_predicate_method
74             generate_predicate_method_inline
75             generate_reader_method
76             generate_reader_method_inline
77             generate_writer_method
78             generate_writer_method_inline
79             initialize_body
80             )
81     ],
82     'Class::MOP::Method::Constructor' => [
83         qw( attributes
84             generate_constructor_method
85             generate_constructor_method_inline
86             initialize_body
87             meta_instance
88             options
89             )
90     ],
91     'Class::MOP::Method::Generated' => [
92         qw( new
93             definition_context
94             is_inline
95             initialize_body
96             )
97     ],
98     'Class::MOP::MiniTrait' => ['.+'],
99     'Class::MOP::Mixin::AttributeCore' => ['.+'],
100     'Class::MOP::Mixin::HasAttributes' => ['.+'],
101     'Class::MOP::Mixin::HasMethods'    => ['.+'],
102     'Class::MOP::Module'               => ['create'],
103     'Class::MOP::Package' => [ 'get_method_map', 'wrap_method_body' ],
104 );
105
106 for my $module ( sort @modules ) {
107     my $trustme = [];
108     if ( $trustme{$module} ) {
109         my $methods = join '|', @{ $trustme{$module} };
110         $trustme = [qr/^(?:$methods)$/];
111     }
112
113     pod_coverage_ok(
114         $module, { trustme => $trustme },
115         "Pod coverage for $module"
116     );
117 }