File Coverage

inc/Test/Compile.pm
Criterion Covered Total %
statement 68 72 94.4
branch 19 30 63.3
condition n/a
subroutine 11 11 100.0
pod 3 3 100.0
total 101 116 87.0


line stmt bran cond sub pod time code
1             #line 1
2             package Test::Compile;
3 1     1   6387  
  1         3  
  1         50  
4 1     1   6 use warnings;
  1         69  
  1         53  
5 1     1   6 use strict;
  1         2  
  1         25  
6 1     1   9 use Test::Builder;
  1         2  
  1         31  
7 1     1   1345 use File::Spec;
  1         3  
  1         12  
8             use UNIVERSAL::require;
9              
10              
11             our $VERSION = '0.06';
12              
13              
14             my $Test = Test::Builder->new;
15              
16              
17 1     1   12 sub import {
18 1         4 my $self = shift;
19             my $caller = caller;
20 1         3  
21 1     1   93 for my $func ( qw( pm_file_ok all_pm_files all_pm_files_ok ) ) {
  1         3  
  1         950  
22 3         7 no strict 'refs';
  3         19  
23             *{$caller."::".$func} = \&$func;
24             }
25 1         7  
26 1         13 $Test->exported_to($caller);
27             $Test->plan(@_);
28             }
29              
30              
31 1     1 1 2 sub pm_file_ok {
32 1 50       16 my $file = shift;
33             my $name = @_ ? shift : "Compile test for $file";
34 1 50       26  
35 0         0 if (!-f $file) {
36 0         0 $Test->ok(0, $name);
37 0         0 $Test->diag("$file does not exist");
38             return;
39             }
40 1         3  
41 1         10 my $module = $file;
42 1         5 $module =~ s!^(blib/)?lib/!!;
43 1         6 $module =~ s!/!::!g;
44             $module =~ s/\.pm$//;
45 1         3  
46 1         13 my $ok = 1;
47 1 50       5 $module->use;
48             $ok = 0 if $@;
49 1         3  
50 1 50       7 my $diag = '';
51 1         7 unless ($ok) {
52             $diag = "couldn't use $module ($file): $@";
53             }
54 1         13  
55 1 50       777 $Test->ok($ok, $name);
56 1         103 $Test->diag($diag) unless $ok;
57             $ok;
58             }
59              
60              
61 1 50   1 1 26 sub all_pm_files_ok {
62             my @files = @_ ? @_ : all_pm_files();
63 1         13  
64             $Test->plan(tests => scalar @files);
65 1         417  
66 1         5 my $ok = 1;
67 1 50       7 for (@files) {
68             pm_file_ok($_) or undef $ok;
69 1         1913 }
70             $ok;
71             }
72              
73              
74 1 50   1 1 4 sub all_pm_files {
75 1         2 my @queue = @_ ? @_ : _starting_points();
76             my @pm;
77 1         6  
78 26         53 while ( @queue ) {
79 26 100       508 my $file = shift @queue;
80 17         48 if ( -d $file ) {
81 17 50       561 local *DH;
82 17         7481 opendir DH, $file or next;
83 17         235 my @newfiles = readdir DH;
84             closedir DH;
85 17         273  
86 17 50       35 @newfiles = File::Spec->no_upwards(@newfiles);
  25         249  
87             @newfiles = grep { $_ ne "CVS" && $_ ne ".svn" } @newfiles;
88 17         33  
89 25         261 for my $newfile (@newfiles) {
90 25 100       524 my $filename = File::Spec->catfile($file, $newfile);
91 9         46 if (-f $filename) {
92             push @queue, $filename;
93 16         250 } else {
94             push @queue, File::Spec->catdir($file, $newfile);
95             }
96             }
97 26 100       524 }
98 9 100       53 if (-f $file) {
99             push @pm, $file if $file =~ /\.pm$/;
100             }
101 1         6 }
102             return @pm;
103             }
104              
105              
106 1 50   1   24 sub _starting_points {
107 0           return 'blib' if -e 'blib';
108             return 'lib';
109             }
110              
111              
112             1;
113              
114             __END__