Merge branch 'master' into refactor-immutable
[gitmo/Class-MOP.git] / xt / 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::Attribute' => ['process_accessors'],
18     'Class::MOP::Class'     => [
19         # deprecated
20         'alias_method',
21         'compute_all_applicable_methods',
22
23         # unfinished feature
24         'add_dependent_meta_instance',
25         'add_meta_instance_dependencies',
26         'invalidate_meta_instance',
27         'invalidate_meta_instances',
28         'remove_dependent_meta_instance',
29         'remove_meta_instance_dependencies',
30         'update_meta_instance_dependencies',
31
32         # effectively internal
33         'check_metaclass_compatibility',
34         'clone_instance',
35         'construct_class_instance',
36         'construct_instance',
37         'create_immutable_transformer',
38         'create_meta_instance',
39         'get_immutable_options',
40         'reset_package_cache_flag',
41         'update_package_cache_flag',
42         'wrap_method_body',
43
44         # doc'd under get_all_attributes
45         'compute_all_applicable_attributes',
46
47     ],
48
49     'Class::MOP::Instance' => [
50         qw( BUILDARGS
51             bless_instance_structure
52             is_dependent_on_superclasses ),
53     ],
54
55     'Class::MOP::Instance' => [
56         qw( BUILDARGS
57             bless_instance_structure
58             is_dependent_on_superclasses ),
59     ],
60
61     'Class::MOP::Method::Accessor' => [
62         qw( generate_accessor_method
63             generate_accessor_method_inline
64             generate_clearer_method
65             generate_clearer_method_inline
66             generate_predicate_method
67             generate_predicate_method_inline
68             generate_reader_method
69             generate_reader_method_inline
70             generate_writer_method
71             generate_writer_method_inline
72             initialize_body
73             )
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
86     'Class::MOP::Method::Generated' => [
87         qw( new
88             definition_context
89             is_inline
90             initialize_body
91             )
92     ],
93
94     'Class::MOP::Module' => ['create'],
95 );
96
97 for my $module ( sort @modules ) {
98     my $trustme = [];
99     if ( $trustme{$module} ) {
100         my $methods = join '|', @{ $trustme{$module} };
101         $trustme = [qr/^(?:$methods)$/];
102     }
103
104     pod_coverage_ok(
105         $module, { trustme => $trustme },
106         "Pod coverage for $module"
107     );
108 }