From: Fabian Fichter Date: Mon, 18 Aug 2025 13:21:03 +0000 (+0200) Subject: Enhance regression test script X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=19a4db323ddcb260229f9fb35375a4e12d62c6d3;p=fairystockfish.git Enhance regression test script Support comparing both bench and perft --- diff --git a/tests/regression.sh b/tests/regression.sh index e7765d0..e6b3f1c 100755 --- a/tests/regression.sh +++ b/tests/regression.sh @@ -1,12 +1,40 @@ #!/bin/bash # regression test variant bench numbers -# arguments: ./old_engine ./new_engine variant1 variant2 variant3 ... +# arguments: ./old_engine ./new_engine "bench_args" [variant1 variant2 variant3 ...] +# examples: +# Pure bench: ./regression.sh ./old_engine ./new_engine "" chess xiangqi shogi +# Perft bench: ./regression.sh ./old_engine ./new_engine "16 1 5 default perft" chess xiangqi shogi +# Auto-detect common variants: ./regression.sh ./old_engine ./new_engine "" echo "variant $1 $2" -for var in "${@:3}" +bench_args="$3" + +# If no variants provided, extract them from UCI output +if [ $# -eq 3 ]; then + echo "No variants specified, extracting from UCI output..." + + # Extract variants from first engine + variants1=$(echo "uci" | $1 2>/dev/null | grep "option name UCI_Variant" | grep -o 'var [^[:space:]]*' | sed 's/var //' | sort) + + # Extract variants from second engine + variants2=$(echo "uci" | $2 2>/dev/null | grep "option name UCI_Variant" | grep -o 'var [^[:space:]]*' | sed 's/var //' | sort) + + # Find intersection of variants (common to both engines) + variants=$(comm -12 <(echo "$variants1") <(echo "$variants2")) + + echo "Common variants found: $(echo $variants | wc -w)" + + # Convert to array for processing + variant_array=($variants) +else + # Use provided variants + variant_array=("${@:4}") +fi + +for var in "${variant_array[@]}" do - ref=`$1 bench $var 2>&1 | grep "Nodes searched : " | awk '{print $4}'` - signature=`$2 bench $var 2>&1 | grep "Nodes searched : " | awk '{print $4}'` + ref=`$1 bench $var $bench_args 2>&1 | grep "Nodes searched : " | awk '{print $4}'` + signature=`$2 bench $var $bench_args 2>&1 | grep "Nodes searched : " | awk '{print $4}'` if [ -z "$ref" ]; then echo "${var} none ${signature} <-- no reference" elif [ -z "$signature" ]; then