X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fstrict.t;h=93264ac70e3145ee026b4f3f208fdf22580e0c3e;hb=88f31b8c13e67525fb34e29a043ddcca6830c3e7;hp=02f191b9c5268ada73b9a7add24fd650cc27eafe;hpb=e69a2255d0db4d110e403864fcb97407ce8e4ff9;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/strict.t b/lib/strict.t index 02f191b..93264ac 100644 --- a/lib/strict.t +++ b/lib/strict.t @@ -4,6 +4,7 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; $ENV{PERL5LIB} = '../lib'; + require './test.pl'; } $| = 1; @@ -11,16 +12,13 @@ $| = 1; my $Is_VMS = $^O eq 'VMS'; my $Is_MSWin32 = $^O eq 'MSWin32'; my $Is_NetWare = $^O eq 'NetWare'; -my $tmpfile = "tmp0000"; my $i = 0 ; -1 while -e ++$tmpfile; -END { if ($tmpfile) { 1 while unlink $tmpfile; } } my @prgs = () ; -foreach (sort glob($^O eq 'MacOS' ? ":lib:strict:*" : "lib/strict/*")) { +foreach (sort glob("lib/strict/*")) { - next if /(~|\.orig|,v)$/; + next if -d || /(~|\.orig|,v)$/; open F, "<$_" or die "Cannot open $_: $!\n" ; while () { @@ -36,7 +34,7 @@ foreach (sort glob($^O eq 'MacOS' ? ":lib:strict:*" : "lib/strict/*")) { undef $/; -print "1..", scalar @prgs, "\n"; +print "1.." . (@prgs + 4) . "\n"; for (@prgs){ @@ -55,7 +53,6 @@ for (@prgs){ while (@files > 2) { my $filename = shift @files ; my $code = shift @files ; - $code =~ s|\./abc|:abc|g if $^O eq 'MacOS'; push @temps, $filename ; open F, ">$filename" or die "Cannot open $filename: $!\n" ; print F $code ; @@ -63,8 +60,8 @@ for (@prgs){ } shift @files ; $prog = shift @files ; - $prog =~ s|\./abc|:abc|g if $^O eq 'MacOS'; } + my $tmpfile = tempfile(); open TEST, ">$tmpfile" or die "Could not open: $!"; print TEST $prog,"\n"; close TEST or die "Could not close: $!"; @@ -72,29 +69,44 @@ for (@prgs){ `.\\perl -I../lib $switch $tmpfile 2>&1` : $^O eq 'NetWare' ? `perl -I../lib $switch $tmpfile 2>&1` : - $^O eq 'MacOS' ? - `$^X -I::lib -MMac::err=unix $switch $tmpfile` : - `./perl $switch $tmpfile 2>&1`; + `$^X $switch $tmpfile 2>&1`; my $status = $?; $results =~ s/\n+$//; # allow expected output to be written as if $prog is on STDIN - $results =~ s/tmp\d+/-/g; + $results =~ s/tmp\d+[A-Z][A-Z]?/-/g; $results =~ s/\n%[A-Z]+-[SIWEF]-.*$// if $Is_VMS; # clip off DCL status msg $expected =~ s/\n+$//; - $expected =~ s|(\./)?abc\.pm|:abc.pm|g if $^O eq 'MacOS'; - $expected =~ s|./abc|:abc|g if $^O eq 'MacOS'; my $prefix = ($results =~ s/^PREFIX\n//) ; + my $TODO = $prog =~ m/^#\s*TODO:/; if ( $results =~ s/^SKIPPED\n//) { print "$results\n" ; } elsif (($prefix and $results !~ /^\Q$expected/) or (!$prefix and $results ne $expected)){ - print STDERR "PROG: $switch\n$prog\n"; - print STDERR "EXPECTED:\n$expected\n"; - print STDERR "GOT:\n$results\n"; + if (! $TODO) { + print STDERR "PROG: $switch\n$prog\n"; + print STDERR "EXPECTED:\n$expected\n"; + print STDERR "GOT:\n$results\n"; + } print "not "; } - print "ok ", ++$i, "\n"; + print "ok " . ++$i . ($TODO ? " # TODO" : "") . "\n"; foreach (@temps) { unlink $_ if $_ } } + +eval qq(use strict 'garbage'); +print +($@ =~ /^Unknown 'strict' tag\(s\) 'garbage'/) + ? "ok ".++$i."\n" : "not ok ".++$i."\t# $@"; + +eval qq(no strict 'garbage'); +print +($@ =~ /^Unknown 'strict' tag\(s\) 'garbage'/) + ? "ok ".++$i."\n" : "not ok ".++$i."\t# $@"; + +eval qq(use strict qw(foo bar)); +print +($@ =~ /^Unknown 'strict' tag\(s\) 'foo bar'/) + ? "ok ".++$i."\n" : "not ok ".++$i."\t# $@"; + +eval qq(no strict qw(foo bar)); +print +($@ =~ /^Unknown 'strict' tag\(s\) 'foo bar'/) + ? "ok ".++$i."\n" : "not ok ".++$i."\t# $@";