From 82f7bdb48090c73004df60e9ae3af18d3203d5dc Mon Sep 17 00:00:00 2001 From: robbi-blechdose Date: Tue, 21 Jan 2025 19:43:31 +0100 Subject: [PATCH] Allow running external tests against installed rgbds (#1621) --- test/run-tests.sh | 54 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/test/run-tests.sh b/test/run-tests.sh index 163ae3d5..e0a41841 100755 --- a/test/run-tests.sh +++ b/test/run-tests.sh @@ -13,7 +13,9 @@ usage() { # Parse options in pure Bash because macOS `getopt` is stuck # in what util-linux `getopt` calls `GETOPT_COMPATIBLE` mode +installedrgbds=false nonfree=true +internal=true external=true FETCH_TEST_DEPS="fetch-test-deps.sh" while [[ $# -gt 0 ]]; do @@ -30,6 +32,12 @@ while [[ $# -gt 0 ]]; do external=false FETCH_TEST_DEPS="$FETCH_TEST_DEPS --only-internal" ;; + --only-external) + internal=false + ;; + --installed-rgbds) + installedrgbds=true + ;; --) break ;; @@ -41,19 +49,38 @@ while [[ $# -gt 0 ]]; do shift done -# Refuse to run if RGBDS isn't present -if [[ ! ( -x ../rgbasm && -x ../rgblink && -x ../rgbfix && -x ../rgbgfx ) ]]; then - echo "Please build RGBDS before running the tests" +if ! ("$external" || "$internal"); then + echo "No tests to run." false fi -# Tests included with the repository +if "$internal" && "$installedrgbds"; then + echo "Internal tests don't support running with the system-installed rgbds." + false +fi -for dir in asm link fix gfx; do - pushd $dir - ./test.sh - popd -done +if "$installedrgbds"; then + # Refuse to run if RGBDS isn't installed + if ! (command -v rgbasm 2>&1 >/dev/null && command -v rgblink 2>&1 >/dev/null && command -v rgbfix 2>&1 >/dev/null && command -v rgbgfx 2>&1 >/dev/null); then + echo "Please install RGBDS before running the tests" + false + fi +else + # Refuse to run if RGBDS isn't present + if [[ ! ( -x ../rgbasm && -x ../rgblink && -x ../rgbfix && -x ../rgbgfx ) ]]; then + echo "Please build RGBDS before running the tests" + false + fi +fi + +# Tests included with the repository +if "$internal"; then + for dir in asm link fix gfx; do + pushd $dir + ./test.sh + popd + done +fi if ! "$external"; then exit @@ -69,8 +96,13 @@ test_downstream() { # owner repo make-target build-file build-hash echo >&2 'Please run `'"$FETCH_TEST_DEPS"'` before running the test suite' return 1 fi - make clean RGBDS=../../ - make -j4 "$3" RGBDS=../../ + if "$installedrgbds"; then + make clean + make -j4 "$3" + else + make clean RGBDS=../../ + make -j4 "$3" RGBDS=../../ + fi hash="$(sha1sum -b "$4" | head -c 40)" if [ "$hash" != "$5" ]; then echo >&2 'SHA-1 hash of '"$4"' did not match: '"$hash"