1#!perl -T 2 3use strict; 4use warnings; 5use Test::More tests => 2; 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 } 26 else { 27 pass("$filename contains no boilerplate text"); 28 } 29} 30 31not_in_file_ok( Changes => 'placeholder date/time' => qr(Date/time) ); 32 33sub module_boilerplate_ok { 34 my ($module) = @_; 35 not_in_file_ok( 36 $module => 'the great new $MODULENAME' => qr/ - The great new /, 37 'boilerplate description' => qr/Quick summary of what the module/, 38 'stub function definition' => qr/function[12]/, 39 ); 40} 41 42module_boilerplate_ok('lib/Text/Trac.pm'); 43