1#!perl -T 2 3use strict; 4use warnings; 5use Test::More tests => 3; 6 7sub 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 30not_in_file_ok(README => 31 "The README is used..." => qr/The README is used/, 32 "'version information here'" => qr/to provide version information/, 33); 34 35not_in_file_ok(Changes => 36 "placeholder date/time" => qr(Date/time) 37); 38 39sub module_boilerplate_ok { 40 my ($module) = @_; 41 not_in_file_ok($module => 42 'the great new $MODULENAME' => qr/ - The great new /, 43 'boilerplate description' => qr/Quick summary of what the module/, 44 'stub function definition' => qr/function[12]/, 45 ); 46} 47 48module_boilerplate_ok('lib/SVG/DOM2.pm'); 49