packaging one directory
|
1 |
#!perl -T |
2 | ||
3 |
use strict; |
|
4 |
use warnings; |
|
5 |
use Test::More tests => 3; |
|
6 | ||
7 |
sub not_in_file_ok { |
|
8 |
my ($filename, %regex) = @_; |
|
9 |
open( my $fh, '<', $filename ) |
|
10 |
or die "couldn't open $filename for reading: $!"; |
|
11 | ||
12 |
my %violated; |
|
13 | ||
14 |
while (my $line = <$fh>) { |
|
15 |
while (my ($desc, $regex) = each %regex) { |
|
16 |
if ($line =~ $regex) { |
|
17 |
push @{$violated{$desc}||=[]}, $.; |
|
18 |
} |
|
19 |
} |
|
20 |
} |
|
21 | ||
22 |
if (%violated) { |
|
23 |
fail("$filename contains boilerplate text"); |
|
24 |
diag "$_ appears on lines @{$violated{$_}}" for keys %violated; |
|
25 |
} else { |
|
26 |
pass("$filename contains no boilerplate text"); |
|
27 |
} |
|
28 |
} |
|
29 | ||
30 |
sub module_boilerplate_ok { |
|
31 |
my ($module) = @_; |
|
32 |
not_in_file_ok($module => |
|
33 |
'the great new $MODULENAME' => qr/ - The great new /, |
|
34 |
'boilerplate description' => qr/Quick summary of what the module/, |
|
35 |
'stub function definition' => qr/function[12]/, |
|
36 |
); |
|
37 |
} |
|
38 | ||
39 | ||
40 |
not_in_file_ok(README => |
|
41 |
"The README is used..." => qr/The README is used/, |
|
42 |
"'version information here'" => qr/to provide version information/, |
|
43 |
); |
|
44 | ||
45 |
not_in_file_ok(Changes => |
|
46 |
"placeholder date/time" => qr(Date/time) |
|
47 |
); |
|
48 | ||
49 |
module_boilerplate_ok('lib/DBIx/Custom.pm'); |
|
50 | ||
51 |