#!/bin/sh # m2SDL test runner - builds each tests/*.mod with gm2 and runs it. # Usage: ./run_tests.sh (SDL_VIDEODRIVER=dummy also works headless) set -e CDIR=$(dirname "$0") ROOT=$(cd "$CDIR/.." && pwd) BIN="$ROOT/build/tests" OBJ="$ROOT/build/objs" GM2="${GM2:-gm2}" mkdir -p "$BIN" "$OBJ" # pure-Modula-2 helpers must be compiled with -c first (no main), # then linked as .o files (passing the .mod directly would add # extra mains and fail to link). # shellcheck disable=SC2086 $GM2 -I"$ROOT/src" -I"$ROOT/lib" $GM2FLAGS -c "$ROOT/src/SDLRect.mod" -o "$OBJ/SDLRect.o" # shellcheck disable=SC2086 $GM2 -I"$ROOT/src" -I"$ROOT/lib" $GM2FLAGS -c "$ROOT/lib/SDLUtils.mod" -o "$OBJ/SDLUtils.o" # shellcheck disable=SC2086 $GM2 -I"$ROOT/src" -I"$ROOT/lib" $GM2FLAGS -c "$ROOT/src/SDLKey.mod" -o "$OBJ/SDLKey.o" pass=0; fail=0 for t in test_init test_version test_rect test_window test_key; do echo "== $t ==" # shellcheck disable=SC2086 $GM2 -I"$ROOT/src" -I"$ROOT/lib" $GM2FLAGS "$ROOT/tests/$t.mod" \ "$OBJ/SDLRect.o" "$OBJ/SDLUtils.o" "$OBJ/SDLKey.o" \ -o "$BIN/$t" -lSDL2 if [ "$t" = "test_window" ] && [ -z "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ]; then SDL_VIDEODRIVER=dummy "$BIN/$t" else "$BIN/$t" fi pass=$((pass+1)) done echo "OK: $pass passed, $fail failed"