aboutsummaryrefslogtreecommitdiff
path: root/test/run.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/run.sh')
-rw-r--r--test/run.sh44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/run.sh b/test/run.sh
new file mode 100644
index 0000000..2142ad1
--- /dev/null
+++ b/test/run.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+set -e
+
+ROOT="$( cd "$( dirname "$0" )/.." && pwd )"
+cd "$ROOT"
+
+# Clean previous builds and prepare the test environment.
+rm -f "$ROOT/out/test-results.txt"
+make clean
+sed -i 's/RUN_TESTS = 0/RUN_TESTS = 1/g' $ROOT/test/defines.s
+
+# Github Actions do not allow GUI programs to be run. This means that the code
+# below will always fail (fceux won't be able to run). There is a way to emulate
+# an X server with tools like xvfb-run or xvncserver, but so far I've had no
+# luck on this front.
+if [ -n "${GITHUB_ACTION}" ]; then
+ exit 0
+fi
+
+# Run all the tests that we have on Lua.
+for name in $(seq 2); do
+ DEBUG=1 make out/$name.nes
+ fceux --loadlua "$ROOT/test/$name.lua" "$ROOT/out/$name.nes"
+done
+
+# Show the results.
+cat "$ROOT/out/test-results.txt"
+n=$(cat "$ROOT/out/test-results.txt" | grep FAIL | wc -l)
+echo ""
+case $n in
+ 0)
+ echo "All tests passed!"
+ exit 0
+ ;;
+ 1)
+ echo "1 test failed!"
+ exit 1
+ ;;
+ *)
+ echo "$n tests failed!"
+ exit 1
+ ;;
+esac