run_tests.sh 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. #!/bin/sh
  2. # m2SDL 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. mkdir -p "$BIN" "$OBJ"
  11. # pure-Modula-2 helpers must be compiled with -c first (no main),
  12. # then linked as .o files (passing the .mod directly would add
  13. # extra mains and fail to link).
  14. # shellcheck disable=SC2086
  15. $GM2 -I"$ROOT/src" -I"$ROOT/lib" $GM2FLAGS -c "$ROOT/src/SDLRect.mod" -o "$OBJ/SDLRect.o"
  16. # shellcheck disable=SC2086
  17. $GM2 -I"$ROOT/src" -I"$ROOT/lib" $GM2FLAGS -c "$ROOT/lib/SDLUtils.mod" -o "$OBJ/SDLUtils.o"
  18. pass=0; fail=0
  19. for t in test_init test_version test_rect test_window; do
  20. echo "== $t =="
  21. # shellcheck disable=SC2086
  22. $GM2 -I"$ROOT/src" -I"$ROOT/lib" $GM2FLAGS "$ROOT/tests/$t.mod" \
  23. "$OBJ/SDLRect.o" "$OBJ/SDLUtils.o" \
  24. -o "$BIN/$t" -lSDL2
  25. if [ "$t" = "test_window" ] && [ -z "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ]; then
  26. SDL_VIDEODRIVER=dummy "$BIN/$t"
  27. else
  28. "$BIN/$t"
  29. fi
  30. pass=$((pass+1))
  31. done
  32. echo "OK: $pass passed, $fail failed"