#!/bin/sh # SPDX-License-Identifier: GPL-2.0+ # # Compares .out and .out.new files for each name on standard input, # one full pathname per line. Outputs comparison results followed by # a summary. # # sh cmplitmushist.sh T=/tmp/cmplitmushist.sh.$$ trap 'rm -rf $T' 0 mkdir $T # comparetest oldpath newpath perfect=0 obsline=0 noobsline=0 obsresult=0 badcompare=0 comparetest () { grep -v 'maxresident)k\|minor)pagefaults\|^Time' $1 > $T/oldout grep -v 'maxresident)k\|minor)pagefaults\|^Time' $2 > $T/newout if cmp -s $T/oldout $T/newout && grep -q '^Observation' $1 then echo Exact output match: $2 perfect=`expr "$perfect" + 1` return 0 fi grep '^Observation' $1 > $T/oldout grep '^Observation' $2 > $T/newout if test -s $T/oldout -o -s $T/newout then if cmp -s $T/oldout $T/newout then echo Matching Observation result and counts: $2 obsline=`expr "$obsline" + 1` return 0 fi else echo Missing Observation line "(e.g., herd7 timeout)": $2 noobsline=`expr "$noobsline" + 1` return 0 fi grep '^Observation' $1 | awk '{ print $3 }' > $T/oldout grep '^Observation' $2 | awk '{ print $3 }' > $T/newout if cmp -s $T/oldout $T/newout then echo Matching Observation Always/Sometimes/Never result: $2 obsresult=`expr "$obsresult" + 1` return 0 fi echo ' !!!' Result changed: $2 badcompare=`expr "$badcompare" + 1` return 1 } sed -e 's/^.*$/comparetest &.out &.out.new/' > $T/cmpscript . $T/cmpscript > $T/cmpscript.out cat $T/cmpscript.out echo ' ---' Summary: 1>&2 grep '!!!' $T/cmpscript.out 1>&2 if test "$perfect" -ne 0 then echo Exact output matches: $perfect 1>&2 fi if test "$obsline" -ne 0 then echo Matching Observation result and counts: $obsline 1>&2 fi if test "$noobsline" -ne 0 then echo Missing Observation line "(e.g., herd7 timeout)": $noobsline 1>&2 fi if test "$obsresult" -ne 0 then echo Matching Observation Always/Sometimes/Never result: $obsresult 1>&2 fi if test "$badcompare" -ne 0 then echo "!!!" Result changed: $badcompare 1>&2 exit 1 fi exit 0