#
# (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;
+$SaveStderr = 0;
+$SaveStdout = 0;
$Status = 0;
@PgmArgs = ();
$PgmExitStatus = 0;
push(@PgmArgs, @ARGV);
last arg; };
- /^-v$/ && do { $Verbose = 1; next arg; };
+ /^-v$/ && do { $Verbose = 1; next arg; };
+ /^-accept-output-stderr$/ && do { $SaveStderr = 1; next arg; };
+ /^-accept-output-stdout$/ && do { $SaveStdout = 1; next arg; };
+ /^-accept-output$/ && do { $SaveStdout = 1; $SaveStderr = 1; next arg; };
+
/^-O(.*)/ && do { push(@PgmArgs, &grab_arg_arg('-O',$1)); next arg; };
/^-i(.*)/ && do { $PgmStdinFile = &grab_arg_arg('-i',$1);
$Status++,
}
foreach $out_file ( @PgmStdoutFile ) {
- $Status++ ,
- print STDERR "$Pgm: bogus -o1 expected-output file: $out_file\n"
- if ! -f $out_file;
+ if ( ! -f $out_file && !$SaveStdout ) {
+ print STDERR "$Pgm: warning: expected-stderr 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 && !$SaveStderr ) {
+ print STDERR "$Pgm: warning: expected-stderr file missing: $out_file\n";
+ pop(@PgmStderrFile);
+ }
}
exit 1 if $Status;
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
if [ \$hit = 'NO' ] ; then
echo $ToRun @PgmArgs \\< $PgmStdinFile
echo expected stdout not matched by reality
- ${CONTEXT_DIFF} $PgmStdoutFile[0] $TmpPrefix/runtest$$.1
- myexit=1
+ orig_file="$PgmStdoutFile[0]";
+ [ ! -f \$orig_file ] && orig_file="/dev/null"
+ ${CONTEXT_DIFF} \$orig_file $TmpPrefix/runtest$$.1
+ myexit=\$?
diffsShown=1
fi
+ if [ $SaveStdout = 1 ] && [ \$progexit = $PgmExitStatus ] &&
+ [ $PgmStdoutFile[0] != $DefaultStdoutFile ] && [ -s $TmpPrefix/runtest$$.1 ]; then
+ echo Saving away stdout output in $PgmStdoutFile[0] ...
+ if [ -f $PgmStdoutFile[0] ]; then
+ rm -f $PgmStdoutFile[0].bak
+ cp $PgmStdoutFile[0] $PgmStdoutFile[0].bak
+ fi;
+ 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
if [ \$hit = 'NO' ] ; then
echo $ToRun @PgmArgs \\< $PgmStdinFile
echo expected stderr not matched by reality
- ${CONTEXT_DIFF} $PgmStderrFile[0] $TmpPrefix/runtest$$.2
- myexit=1
+ orig_file="$PgmStderrFile[0]"
+ [ ! -f \$orig_file ] && orig_file="/dev/null"
+ ${CONTEXT_DIFF} \$orig_file $TmpPrefix/runtest$$.2
+ myexit=\$?
diffsShown=1
fi
+if [ $SaveStderr = 1 ] && [ \$progexit = $PgmExitStatus ] &&
+ [ $PgmStderrFile[0] != $DefaultStderrFile ] && [ -s $TmpPrefix/runtest$$.2 ]; then
+ echo Saving away stderr output in $PgmStderrFile[0] ...
+ if [ -f $PgmStderrFile[0] ]; then
+ rm -f $PgmStderrFile[0].bak
+ cp $PgmStderrFile[0] $PgmStderrFile[0].bak
+ fi;
+ cp $TmpPrefix/runtest$$.2 $PgmStderrFile[0]
+fi
$SpixstatsLine1
if [ $SpixTiming = 'yes' -a \$myexit = 0 ] ; then