X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=glafp-utils%2Frunstdtest%2Frunstdtest.prl;h=01ce61a28ea8bf7481722b477e9d4b75cd0c4025;hb=ffe3daa2cebacc56878467a8ee09602712ff5dee;hp=bdc3ebf26e5375a5901cc390f40ab68bda79cf83;hpb=1fb1ab5d53a09607e7f6d2450806760688396387;p=ghc-hetmet.git diff --git a/glafp-utils/runstdtest/runstdtest.prl b/glafp-utils/runstdtest/runstdtest.prl index bdc3ebf..01ce61a 100644 --- a/glafp-utils/runstdtest/runstdtest.prl +++ b/glafp-utils/runstdtest/runstdtest.prl @@ -34,8 +34,15 @@ # # (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; @@ -70,7 +77,11 @@ arg: while ($_ = $ARGV[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++, @@ -107,15 +118,17 @@ 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 && !$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; @@ -208,7 +221,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 @@ -221,10 +234,21 @@ else 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 @@ -238,10 +262,21 @@ done 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