X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=tests%2Finstrumented.sh;fp=tests%2Finstrumented.sh;h=a6950e164b53a46878a74fdfeec5ab1978aa3298;hp=0000000000000000000000000000000000000000;hb=ba15781be8f80746b6daed6588191297f38737fa;hpb=d39ffbeea6ad54c90123a352d50b65c5bda1561b diff --git a/tests/instrumented.sh b/tests/instrumented.sh new file mode 100755 index 00000000..a6950e16 --- /dev/null +++ b/tests/instrumented.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# check for errors under valgrind or sanitizers. + +error() +{ + echo "instrumented testing failed on line $1" + exit 1 +} +trap 'error ${LINENO}' ERR + +# define suitable post and prefixes for testing options +case $1 in + --valgrind) + echo "valgrind testing started" + prefix='' + exeprefix='valgrind --error-exitcode=42' + postfix='1>/dev/null' + ;; + --sanitizer) + echo "sanitizer testing started" + prefix='!' + exeprefix='' + postfix='2>&1 | grep "runtime error:"' + ;; + *) + echo "unknown testing started" + prefix='' + exeprefix='' + postfix='' + ;; +esac + +# simple command line testing +for args in "eval" \ + "go nodes 1000" \ + "go depth 10" \ + "go movetime 1000" \ + "go wtime 8000 btime 8000 winc 500 binc 500" \ + "bench 128 1 10 default depth" +do + + echo "$prefix $exeprefix ./stockfish $args $postfix" + eval "$prefix $exeprefix ./stockfish $args $postfix" + +done + +# more general testing, following an uci protocol exchange +cat << EOF > game.exp + set timeout 10 + spawn $exeprefix ./stockfish + + send "uci\n" + expect "uciok" + + send "ucinewgame\n" + send "position startpos\n" + send "go nodes 1000\n" + expect "bestmove" + + send "position startpos moves e2e4 e7e6\n" + send "go nodes 1000\n" + expect "bestmove" + + send "quit\n" + expect eof + + # return error code of the spawned program, useful for valgrind + lassign [wait] pid spawnid os_error_flag value + exit \$value +EOF + +for exps in game.exp +do + + echo "$prefix expect game.exp $postfix" + eval "$prefix expect game.exp $postfix" + +done + +rm game.exp + +echo "instrumented testing OK"