X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F12-fail.t;h=a311f4d827c9efac8b41ca05cb26661f3e28b930;hb=56109bab8e37a348860481e48c0b292ecf31bb6b;hp=066534442f0ae195ac2fc28809545c6458160908;hpb=939ef6135463a53256f555cf9bc6846c5d4c6b31;p=catagits%2FTest-EOL.git diff --git a/t/12-fail.t b/t/12-fail.t index 0665344..a311f4d 100644 --- a/t/12-fail.t +++ b/t/12-fail.t @@ -13,60 +13,59 @@ $inc = "-I $inc" if $inc; open my $fh, '<', $filename or die $!; binmode( $fh, ':raw' ); my $content = <$fh>; - is( $content, ascii_string(), 'Data written to file is there when we look for it later' ); + is( $content, ascii_string(), 'Data written to file is there when we look for it later' ); } { my $dir = make_bad_file_1(); - my (undef, $outfile) = tempfile(); - ok( `$perl $inc -MTest::EOL -e "all_perl_files_ok( '$dir' )" 2>&1 > $outfile` ); - local $/ = undef; - open my $fh, '<', $outfile or die $!; - my $content = <$fh>; - like( $content, qr/^not ok 1 - No incorrect line endings in '[^']*' \Qon line 4: [\r]/m, 'windows EOL found in tmp file 1' ); - unlink $outfile; + run_ok( "all_perl_files_ok( '$dir' )", + qr/^not ok 1 - No incorrect line endings in '[^']*' \Qon line 5: [\r]/m, + 'windows EOL found in tmp file 1' ); } { my $dir = make_bad_file_2(); - my (undef, $outfile) = tempfile(); - ok( `$perl $inc -MTest::EOL -e "all_perl_files_ok( '$dir' )" 2>&1 > $outfile` ); - open my $fh, '<', $outfile or die $!; - local $/ = undef; - my $content = <$fh>; - like( $content, qr/^not ok 1 - No incorrect line endings in '[^']*' \Qon line 8: [\r][\r][\r][\r][\r][\r][\r]/m, 'windows EOL found in tmp file2 ' ); - unlink $outfile; + run_ok( "all_perl_files_ok( '$dir' )", + qr/^not ok 1 - No incorrect line endings in '[^']*' \Qon line 8: [\r][\r][\r][\r][\r][\r][\r]/m, + 'windows EOL found in tmp file2 ' ); } { my ($dir, $file) = make_bad_file_3(); - my (undef, $outfile) = tempfile(); - ok( `$perl $inc -MTest::EOL -e "all_perl_files_ok( '$file' )" 2>&1 > $outfile` ); - open my $fh, '<', $outfile or die $!; - local $/ = undef; - my $content = <$fh>; - like( $content, qr/^not ok 1 - No incorrect line endings in '[^']*' \Qon line 9: [\r][\r][\r]/m, 'windows EOL found in tmp file 3' ); - unlink $outfile; + run_ok( "all_perl_files_ok( '$file' )", + qr/^not ok 1 - No incorrect line endings in '[^']*' \Qon line 1: [\r] /m, + 'windows EOL found in tmp file 3' ); } { my $dir = make_bad_file_4(); + run_ok( "all_perl_files_ok({trailing_whitespace => 1}, '$dir' )", + # Note that line number will be 13 + qr/^not ok 1 - No incorrect line endings in '[^']*' \Qon line 12: [\s][\t][\s][\s]/m, + 'Trailing ws EOL found in tmp file 4' ); +} + +sub run_ok { + my ($code, $match, $test_name) = @_; + my $line = (caller)[2]; + die "code containing double quotes is not portable on Win32 in one-liners" if $code =~ /"/; my (undef, $outfile) = tempfile(); - ok( `$perl $inc -MTest::EOL -e "all_perl_files_ok({trailing_whitespace => 1}, '$dir' )" 2>&1 > $outfile` ); - open my $fh, '<', $outfile or die $!; + is( `$perl $inc -MTest::EOL -e "$code" > $outfile 2>&1`, '', "test sub program at line $line: output redirected" ); + is( $? >> 8, 1, "test sub program at line $line: exit code is 1" ); local $/ = undef; + open my $fh, '<', $outfile or die $!; my $content = <$fh>; - like( $content, qr/^not ok 1 - No incorrect line endings in '[^']*' \Qon line 13: [\s][\t][\s][\s]/m, 'Trailing ws EOL found in tmp file 4' ); + like( $content, $match, $test_name ); unlink $outfile; } -sub ascii_string { +sub ascii_string { my $o = ""; return $o x 3; } -sub make_raw_badfile { - my $tmpdir = tempdir( CLEANUP => 1 ); - my ( $fh, $filename ) = tempfile( DIR => $tmpdir, SUFFIX => '.tXt' ); - binmode $fh, ':raw:utf8'; +sub make_raw_badfile { + my $tmpdir = tempdir( CLEANUP => 1 ); + my ( $fh, $filename ) = tempfile( DIR => $tmpdir, SUFFIX => '.tXt' ); + binmode $fh, ':raw'; print $fh ascii_string(); close $fh; return ( $tmpdir, $filename ); @@ -76,11 +75,12 @@ sub make_raw_badfile { sub make_bad_file_1 { my $tmpdir = tempdir( CLEANUP => 1 ); my ($fh, $filename) = tempfile( DIR => $tmpdir, SUFFIX => '.pL' ); - binmode $fh, ':raw:utf8'; + binmode $fh, ':raw'; my $str = <<"DUMMY"; #!perl sub main { + # Note that the generated file will have the CRLF expanded in the source print "Hello!\r\n"; } DUMMY @@ -92,7 +92,7 @@ DUMMY sub make_bad_file_2 { my $tmpdir = tempdir( CLEANUP => 1 ); my ($fh, $filename) = tempfile( DIR => $tmpdir, SUFFIX => '.pL' ); - binmode $fh, ':raw:utf8'; + binmode $fh, ':raw'; print $fh <<"DUMMY"; #!perl @@ -101,11 +101,11 @@ sub make_bad_file_2 { =head1 NAME test.pL - A test script - +\r\r\r\r\r\r\r\r =cut sub main { - print "Hello!\n"; + print "Hello!\\n"; } DUMMY return $tmpdir; @@ -114,20 +114,20 @@ DUMMY sub make_bad_file_3 { my $tmpdir = tempdir( CLEANUP => 1 ); my ($fh, $filename) = tempfile( DIR => $tmpdir, SUFFIX => '.pm' ); - binmode $fh, ':raw:utf8'; + binmode $fh, ':raw'; print $fh <<"DUMMY"; -use strict; - -package My::Test; - -sub new { - my (\$class) = @_; - my \$self = bless { }, \$class; - return \$self; -} - - -1; +use strict;\r +\r +package My::Test;\r +\r +sub new {\r + my (\$class) = \@_;\r + my \$self = bless { }, \$class;\r + return \$self;\r +}\r +\r +\r +1;\r DUMMY close $fh; return ($tmpdir, $filename); @@ -136,8 +136,8 @@ DUMMY sub make_bad_file_4 { my $tmpdir = tempdir( CLEANUP => 1 ); my ($fh, $filename) = tempfile( DIR => $tmpdir, SUFFIX => '.pL' ); - binmode $fh, ':raw:utf8'; - print $fh <<"DUMMY"; + binmode $fh, ':raw'; + print $fh <<'DUMMY'; #!perl =pod @@ -151,7 +151,7 @@ test.pL - A test script sub main { DUMMY -print $fh qq{ print "Hello!\n"; \t \n}; # <-- whitespace +print $fh qq{ print "Hello!\\n"; \t \n}; # <-- whitespace print $fh '}'; return $tmpdir;