run_tests.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/bin/sh
  2. # m2SDL3 test runner - builds each tests/*.mod with gm2 and runs it.
  3. # Usage: ./run_tests.sh (SDL_VIDEODRIVER=dummy also works headless)
  4. set -e
  5. CDIR=$(dirname "$0")
  6. ROOT=$(cd "$CDIR/.." && pwd)
  7. BIN="$ROOT/build/tests"
  8. OBJ="$ROOT/build/objs"
  9. GM2="${GM2:-gm2}"
  10. SDL_SRC="$ROOT/SDL-release-3.4.16"
  11. SDL_BLD="$SDL_SRC/build"
  12. SDL_INC="-I$SDL_SRC/include"
  13. SDL_LIB="-L$SDL_BLD -lSDL3 -Wl,-rpath,$SDL_BLD"
  14. mkdir -p "$BIN" "$OBJ"
  15. # pure-Modula-2 helpers must be compiled with -c first (no main),
  16. # then linked as .o files (passing the .mod directly would add
  17. # extra mains and fail to link).
  18. # shellcheck disable=SC2086
  19. $GM2 -I"$ROOT/src" -I"$ROOT/lib" $SDL_INC $GM2FLAGS -c "$ROOT/src/SDL3Rect.mod" -o "$OBJ/SDL3Rect.o"
  20. # shellcheck disable=SC2086
  21. $GM2 -I"$ROOT/src" -I"$ROOT/lib" $SDL_INC $GM2FLAGS -c "$ROOT/lib/SDL3Utils.mod" -o "$OBJ/SDL3Utils.o"
  22. # shellcheck disable=SC2086
  23. $GM2 -I"$ROOT/src" -I"$ROOT/lib" $SDL_INC $GM2FLAGS -c "$ROOT/src/SDL3Key.mod" -o "$OBJ/SDL3Key.o"
  24. pass=0; fail=0
  25. for t in test_init test_version test_rect test_window test_key test_sysinfo test_clipboard; do
  26. echo "== $t =="
  27. # shellcheck disable=SC2086
  28. $GM2 -I"$ROOT/src" -I"$ROOT/lib" $SDL_INC $GM2FLAGS "$ROOT/tests/$t.mod" \
  29. "$OBJ/SDL3Rect.o" "$OBJ/SDL3Utils.o" "$OBJ/SDL3Key.o" \
  30. -o "$BIN/$t" $SDL_LIB
  31. if [ "$t" = "test_window" ] || [ "$t" = "test_clipboard" ]; then
  32. if [ -z "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ]; then
  33. SDL_VIDEODRIVER=dummy "$BIN/$t"
  34. else
  35. "$BIN/$t"
  36. fi
  37. else
  38. "$BIN/$t"
  39. fi
  40. pass=$((pass+1))
  41. done
  42. echo "OK: $pass passed, $fail failed"