More robust yacc/bison failure output handling.
[p5sagit/p5-mst-13.2.git] / t / pragma / subs.t
index 3318006..58b53ae 100755 (executable)
@@ -12,6 +12,7 @@ my @prgs = split "\n########\n", <DATA>;
 print "1..", scalar @prgs, "\n";
 
 my $Is_VMS = $^O eq 'VMS';
+my $Is_MSWin32 = $^O eq 'MSWin32';
 my $tmpfile = "tmp0000";
 my $i = 0 ;
 1 while -f ++$tmpfile;
@@ -46,12 +47,17 @@ for (@prgs){
     close TEST;
     my $results = $Is_VMS ?
                   `MCR $^X $switch $tmpfile` :
+                 $Is_MSWin32 ?
+                  `.\\perl -I../lib $switch $tmpfile 2>&1` :
                   `sh -c './perl $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/\n%[A-Z]+-[SIWEF]-.*$// if $Is_VMS;  # clip off DCL status msg
+# bison says 'parser error' instead of 'syntax error',
+# various yaccs may or may not capitalize 'syntax'.
+    $results =~ s/^(syntax|parser) error/\L$1 error/i;
     $expected =~ s/\n+$//;
     my $prefix = ($results =~ s/^PREFIX\n//) ;
     if ( $results =~ s/^SKIPPED\n//) {
@@ -89,7 +95,7 @@ EXPECT
 Number found where operator expected at - line 3, near "Fred 1"
        (Do you need to predeclare Fred?)
 syntax error at - line 3, near "Fred 1"
-Execution of - aborted due to compilation errors.
+BEGIN not safe after errors--compilation aborted at - line 4.
 ########
 
 # AOK