ref: f5a7e459867d990f4d9aa2d99706bd58676e5eca
dir: /test/runtest.rc/
#!/bin/rc rfork e MYR_MC=`{cd .. ; pwd}^/6/6.out MYR_MUSE=`{cd .. ; pwd}^/muse/6.out fn build { dir=`{echo $1 | grep '.*/'} if(~ $dir '') { rm -f $1 $1^.6 $1^.use ../obj/mbld/mbld -Bnone -o 'out' -b $1 -I../obj/lib/std -I../obj/lib/sys -I../obj/lib/regex -r../rt/_myrrt.6 $1^.myr } if not { target=`{echo $1 | grep -o '[^/]*$'} top=`{pwd} mkdir -p out/$dir cd $dir $top/../obj/mbld/mbld -Bnone -o $top/out/$dir -I$top/../obj/lib/std -I$top/../obj/lib/sys -I$top/../obj/lib/regex -r$top/../rt/_myrrt.o clean $top/../obj/mbld/mbld -Bnone -o $top/out/$dir -I$top/../obj/lib/std -I$top/../obj/lib/sys -I$top/../obj/lib/regex -r$top/../rt/_myrrt.o :$target } } fn pass { echo '!}>> ok' } fn fail { echo '!}>> fail ' } fn expectstatus { st='*'^$2 if(~ $2 0) st='''''' ./out/$1 $3 if(eval '~ $status '$st) pass $1 if not fail $1 } fn expectprint { ifs=' ' if(~ `{./out/$1 $3} $2) pass $1 if not fail $1 } fn expectcmp { t=/tmp/myrtest-^$1 rm -f $t ./out/$1 $3 > $t if (cmp $t data/$1-expected) pass $1 if not fail $1 } fn expectfcmp { t=/tmp/myrtest-^$1 rm -f $t ./out/$1 $3 if (cmp $2 data/$1-expected) pass $1 if not fail $1 } fn B { test=$1; shift type=$1; shift res=$1; shift echo 'test' $test '<<{!' here=`{pwd} build $test cd $here switch($type) { case E expectstatus $test $res case P expectprint $test $res case C expectcmp $test $res case F expectfcmp $test $res } } fn F { echo 'test ' ^ $1 '<<{!' here=`{pwd} @{ build $1 } >[2=1] if (~ $status '') fail $1 if not pass $1 cd $here } echo 'MTEST ' `{grep '^[BF]' tests | wc -l} . tests