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