DBIx-Custom / xt / boilerplate.t /
Newer Older
51 lines | 1.25kb
packaging one directory
yuki-kimoto authored on 2009-11-16
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