[project @ 1998-04-16 10:03:50 by sof]
[ghc-hetmet.git] / glafp-utils / runstdtest / runstdtest.prl
index bdc3ebf..cb9084b 100644 (file)
 # 
 # (This is supposed to be a "prettier" replacement for runstdtest.)
 #
+#      Flags
+#      ~~~~~
+#      -accept-output  replace output files with the ones actually generated by running
+#                      the program
+#
 ($Pgm = $0) =~ s|.*/||;
 $Verbose = 0;
+$SaveTmpFile = 0;
 $Status = 0;
 @PgmArgs = ();
 $PgmExitStatus = 0;
@@ -70,7 +76,9 @@ arg: while ($_ = $ARGV[0]) {
                        push(@PgmArgs, @ARGV);
                        last arg; };
 
-    /^-v$/     && do { $Verbose = 1; next arg; };
+    /^-v$/            && do { $Verbose = 1; next arg; };
+    /^-accept-output$/ && do { $SaveTmpFile = 1; next arg; };
+
     /^-O(.*)/  && do { push(@PgmArgs, &grab_arg_arg('-O',$1)); next arg; };
     /^-i(.*)/  && do { $PgmStdinFile = &grab_arg_arg('-i',$1);
                        $Status++,
@@ -107,15 +115,23 @@ arg: while ($_ = $ARGV[0]) {
 }
 
 foreach $out_file ( @PgmStdoutFile ) {
-    $Status++ ,
-    print STDERR "$Pgm: bogus -o1 expected-output file: $out_file\n"
-       if ! -f $out_file;
+    if ( ! -f $out_file ) {
+        #$Status++;
+       print STDERR "$Pgm: warning: expected-stdout file missing: $out_file\n";
+       pop(@PgmStdoutFile);
+    }
 }
 
 foreach $out_file ( @PgmStderrFile ) {
-    $Status++,
-    print STDERR "$Pgm: bogus -o2 expected-stderr file: $out_file\n"
-       if ! -f $out_file;
+    if ( ! -f $out_file ) {
+       #$Status++;
+        pop(@PgmStderrFile);
+       if ( $SaveTmpFile ) {
+           system("touch $out_file");
+       } else {
+           print STDERR "$Pgm: warning: expected-stderr file missing: $out_file\n";
+       }
+    }
 }
 
 exit 1 if $Status;
@@ -208,7 +224,7 @@ $TimeCmd /bin/sh -c \'$ToRun $TimingMagic @PgmArgs < $PgmStdinFile 1> $TmpPrefix
 progexit=\$?
 if [ \$progexit -ne $PgmExitStatus ]; then
     echo $ToRun @PgmArgs \\< $PgmStdinFile
-    echo expected exit status $PgmExitStatus not seen \\; got \$progexit
+    echo "****" expected exit status $PgmExitStatus not seen \\; got \$progexit
     myexit=1
 else
     $PostScriptLines
@@ -225,6 +241,12 @@ else
        myexit=1
        diffsShown=1
     fi
+    if [ $SaveTmpFile = 1 ] && [ \$progexit = $PgmExitStatus ] ; then
+       rm -f $PgmStdoutFile[0].bak
+       echo Saving away stdout output in $PgmStdoutFile[0] ...
+       cp $PgmStdoutFile[0] $PgmStdoutFile[0].bak
+       cp $TmpPrefix/runtest$$.1 $PgmStdoutFile[0]
+    fi
 fi
 egrep -v '^ld\.so:.*has older revision than expected' < $TmpPrefix/runtest$$.2 > $TmpPrefix/runtest$$.2b
 mv -f $TmpPrefix/runtest$$.2b $TmpPrefix/runtest$$.2
@@ -242,6 +264,12 @@ if [ \$hit = 'NO' ] ; then
     myexit=1
     diffsShown=1
 fi
+if [ $SaveTmpFile = 1 ] && [ \$progexit = $PgmExitStatus ] ; then
+       rm -f $PgmStderrFile[0].bak
+       echo Saving away stderr output in $PgmStderrFile[0] ...
+       cp $PgmStderrFile[0] $PgmStderrFile[0].bak
+       cp $TmpPrefix/runtest$$.2 $PgmStderrFile[0]
+fi
 $SpixstatsLine1
 
 if [ $SpixTiming = 'yes' -a \$myexit = 0 ] ; then