diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ca87dde74..2d40abafde 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2066,6 +2066,12 @@ set_tests_properties(check_artifacts PROPERTIES LABELS "validation;artifacts" REQUIRED_FILES "${CMAKE_SOURCE_DIR}/release/idtech3_server") +add_test(NAME test_run_vulkan_launcher + COMMAND ${CMAKE_SOURCE_DIR}/tests/scripts/test_run_vulkan.sh ${CMAKE_SOURCE_DIR}/scripts/run_vulkan.sh + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) +set_tests_properties(test_run_vulkan_launcher PROPERTIES + LABELS "unit;regression;scripts") + # --- Unit tests --- option(BUILD_UNIT_TESTS "Build unit tests" ON) if(BUILD_UNIT_TESTS) diff --git a/tests/scripts/test_run_vulkan.sh b/tests/scripts/test_run_vulkan.sh new file mode 100755 index 0000000000..ce9ee7d2a4 --- /dev/null +++ b/tests/scripts/test_run_vulkan.sh @@ -0,0 +1,97 @@ +#!/usr/bin/env bash +# Regression tests for scripts/run_vulkan.sh launcher behavior. +set -euo pipefail + +SCRIPT_UNDER_TEST="${1:-}" +if [ -z "$SCRIPT_UNDER_TEST" ] || [ ! -f "$SCRIPT_UNDER_TEST" ]; then + echo "Usage: $0 /absolute/or/relative/path/to/scripts/run_vulkan.sh" >&2 + exit 1 +fi + +SCRIPT_UNDER_TEST="$(cd "$(dirname "$SCRIPT_UNDER_TEST")" && pwd)/$(basename "$SCRIPT_UNDER_TEST")" + +TMP_ROOT="$(mktemp -d)" +trap 'rm -rf "$TMP_ROOT"' EXIT + +fail() { + echo "FAIL: $*" >&2 + exit 1 +} + +assert_contains() { + local haystack="$1" + local needle="$2" + local msg="$3" + if [[ "$haystack" != *"$needle"* ]]; then + fail "$msg (missing: $needle)" + fi +} + +assert_not_contains() { + local haystack="$1" + local needle="$2" + local msg="$3" + if [[ "$haystack" == *"$needle"* ]]; then + fail "$msg (unexpected: $needle)" + fi +} + +make_engine_stub() { + local path="$1" + local marker="$2" + cat >"$path" <"$path" <