#!/usr/bin/env bash # Redirect for non-GNU time systems if [ "xx$TIME_CMD" = "xx" ] then time_cmd=/usr/bin/time else time_cmd=$TIME_CMD fi dir=$PWD while [ ! -f $dir/wiggle ] do if [ -z "$dir" ]; then echo >&2 Cannot find wiggle program : $WIGGLE exit 1 fi dir=${dir%/*} done export WIGGLE=$dir/wiggle if [ -d tests ] then cd tests fi TIME="$time_cmd -o .time -f %U" if $TIME true > /dev/null 2>&1 then : else TIME= fi vallog=/tmp/valg.log-$$ > $vallog if [ " $1" = " valgrind" ]; then TIME="valgrind --log-file=$vallog" fi status=0 ok=0 fail=0 # Avoid non-determinism cause by CPU speed export WIGGLE_LOOPCOUNT=5000 find . -name core | xargs rm -f list=$(find . -type f \( -name script -o -name diff -o -name ldiff \ -o -name rediff -o -name merge -o -name wmerge -o -name lmerge \ -o -name replace -o -name Wmerge -o -name bmerge \) ) for path in $list do dir=${path%/*} base=${path##*/} ( cd $dir > .time case $base in script ) ./script ;; diff ) if [ -f new ] then $TIME $WIGGLE -dw orig new | diff -u diff - ; xit=$? else $TIME $WIGGLE -dwp1 orig patch | diff -u diff - ; xit=$? fi ;; ldiff ) if [ -f new ] then $TIME $WIGGLE -dl orig new | diff -u ldiff - ; xit=$? else $TIME $WIGGLE -dlp1 orig patch | diff -u ldiff - ; xit=$? fi ;; reldiff ) $TIME $WIGGLE -dl patch | diff -u reldiff - ; xit=$? ;; rediff ) $TIME $WIGGLE -dw patch | diff -u rediff - ; xit=$? ;; merge ) if [ -f patch ] then $TIME $WIGGLE -m orig patch | diff -u merge - ; xit=$? elif [ -f new ] then $TIME $WIGGLE -m orig new new2 | diff -u merge - ; xit=$? else $TIME $WIGGLE -m orig | diff -u merge - ; xit=$? fi ;; replace ) cp orig orig.tmp if [ -f patch ] then $TIME $WIGGLE -mr orig.tmp patch else $TIME $WIGGLE -mr orig.tmp new new2 fi diff -u merge orig.tmp ; xit=$? rm orig.tmp orig.tmp.porig ;; lmerge ) if [ -f patch ] then $TIME $WIGGLE -ml orig patch | diff -u lmerge - ; xit=$? else $TIME $WIGGLE -ml orig new new2 | diff -u lmerge - ; xit=$? fi ;; wmerge ) if [ -f patch ] then $TIME $WIGGLE -mw orig patch | diff -u wmerge - ; xit=$? else $TIME $WIGGLE -mw orig new new2 | diff -u wmerge - ; xit=$? fi ;; Wmerge ) if [ -f patch ] then $TIME $WIGGLE -mW orig patch | diff -u Wmerge - ; xit=$? else $TIME $WIGGLE -mW orig new new2 | diff -u Wmerge - ; xit=$? fi ;; bmerge ) if [ -f patch ] then $TIME $WIGGLE -mbw orig patch | diff -u bmerge - ; xit=$? else $TIME $WIGGLE -mbw orig new new2 | diff -u bmerge - ; xit=$? fi ;; esac if [ $xit = 0 ]; then msg=SUCCEEDED; else msg=FAILED; fi if grep 'ERROR SUMMARY: [1-9]' $vallog > /dev/null 2>&1 then msg="$msg WITH VALGRIND ERRORS"; xit=1 fi echo $path $msg `grep -v 'Command exited' .time 2> /dev/null` rm -f .time exit $xit ) if [ $? = 0 ] then let ok++; else status=1 ; let fail++ fi done find . -name core -ls echo $ok succeeded and $fail failed exit $status