From 111e71e1511b2abff9176bd6c714c8da796f770e Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 16 Nov 2025 12:11:18 +0100 Subject: basic automated testing --- test/run.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 test/run.sh (limited to 'test/run.sh') diff --git a/test/run.sh b/test/run.sh new file mode 100755 index 0000000..dd8f431 --- /dev/null +++ b/test/run.sh @@ -0,0 +1,51 @@ +#!/bin/env sh + +cd $(dirname "$0") +ANTCC=../antcc +ntest=0 +npass=0 + +x() { + echo X $@>>log.txt + $@ 2>> log.txt +} +run() { + ntest=$(expr $ntest + 1) + f="$(basename "$1")" + expected=build/"$(echo "$f" | sed -s 's/\.c$/.expected/')" + echo ---- $f ---- >> log.txt + args=$(awk '/\/\* ARGS:.*$/ {ORS=" ";for (i=3;i "$expected" + if [ $? == 0 ]; then + mkdir -p build/ + obj=build/"$(echo "$f" | sed -s 's/\.c$/.o/')" + exe=build/"$(echo "$f" | sed -s 's/\.c$//')" + if ! ( x $ANTCC "$f" -c -o "$obj" && x $ANTCC "$obj" -o "$exe" ); then + echo !TEST ERROR $f + echo !FAILED TO COMPILE + echo '-------' + else + actual=build/"$(echo "$f" | sed -s 's/\.c$/.actual/')" + x "$exe" $args > "$actual" + if [ "$(md5sum < "$actual")" != "$(md5sum < "$expected")" ]; then + echo --- !TEST ERROR $f + diff --unified=0 --color=auto "$expected" "$actual" + echo '-------' + else + npass=$(expr $npass + 1) + fi + fi + else + echo --- !ignore $f + fi +} + +< /dev/null > log.txt +tests=$(find . -regex '\./[0-9]+-.*\.c' | sort) +for test in $tests; do + run $test +done + +echo TESTS PASSED: $npass/$ntest +printf 'wc log.txt;' +wc log.txt -- cgit v1.2.3