#!/bin/sh
set -e

# Run upstream tests against the installed rocm-cmake package
# Uses /usr as PREFIX instead of installing rocm-cmake to a temp directory
SRCDIR="$(pwd)"
WORKDIR=$(mktemp -d)
trap 'rm -rf $WORKDIR' EXIT

cd "$WORKDIR"

# Patch upstream test.cmake to:
# - add /usr to CMAKE_PREFIX_PATH for finding system rocm-cmake
# - skip rocm-cmake installation (we use the system one)
# - set TEST_DIR to source tree (not the temp working directory)
# - use_rocm_cmake() should use system path, not temp PREFIX
sed -e 's|-DCMAKE_PREFIX_PATH=${PREFIX}|-DCMAKE_PREFIX_PATH=/usr;${PREFIX}|' \
    -e 's|install_dir(${TEST_DIR}/../)|# skip - using system rocm-cmake|' \
    -e "s|set(TEST_DIR \${CMAKE_CURRENT_LIST_DIR})|set(TEST_DIR $SRCDIR/test)|" \
    -e 's|${PREFIX}/share/rocmcmakebuildtools|/usr/share/rocmcmakebuildtools|' \
    "$SRCDIR/test/test.cmake" >test.cmake

# Tests to skip: "test_name:reason" (one per line)
SKIP_TESTS="
doc-sphinxdoxygen.cmake:requires sphinx
version.cmake:requires git
version-atag.cmake:requires git
version-atag-short.cmake:requires git
version-nogit.cmake:requires git
version-norepo.cmake:requires git
version-patch.cmake:requires git
version-parent.cmake:requires git
"

# Run all pass/ tests
for test in "$SRCDIR"/test/pass/*.cmake; do
    name=$(basename "$test")
    skip_reason=$(echo "$SKIP_TESTS" | grep "^${name}:" | cut -d: -f2)
    if [ -n "$skip_reason" ]; then
        echo "Skipping test: $name ($skip_reason)"
        continue
    fi
    echo "Running test: $name"
    cmake -P test.cmake "$test" "$WORKDIR/tmp"
done

echo "PASS: all upstream tests succeeded"
