SDL: cmake: add SDL_TESTS_TIMEOUT_MULTIPLIER to account for slower machines

From 0ab99ffb2a9a887a2db30d29e917638d90a96747 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sat, 17 Dec 2022 00:05:55 +0100
Subject: [PATCH] cmake: add SDL_TESTS_TIMEOUT_MULTIPLIER to account for slower
 machines

---
 test/CMakeLists.txt | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index af2330456be6..f87ffe45e0de 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -23,6 +23,7 @@ if(EMSCRIPTEN OR N3DS OR PS2 OR PSP OR RISCOS OR VITA)
 endif()
 
 option(SDL_TESTS_LINK_SHARED "link tests to shared SDL library" ${SDL_TESTS_LINK_SHARED_DEFAULT})
+set(SDL_TESTS_TIMEOUT_MULTIPLIER "1" CACHE STRING "Timeout multiplier to account for really slow machines")
 
 if(SDL_TESTS_LINK_SHARED)
     set(sdl_name_component SDL3)
@@ -362,17 +363,19 @@ set(TESTS_ENVIRONMENT
     SDL_VIDEO_DRIVER=dummy
 )
 
+function(sdl_set_test_timeout TEST TIMEOUT)
+    math(EXPR TIMEOUT "${TIMEOUT}*${SDL_TESTS_TIMEOUT_MULTIPLIER}")
+    set_tests_properties(${test} PROPERTIES TIMEOUT "${TIMEOUT}")
+endfunction()
+
 foreach(TESTCASE ${SDL_TESTS_NONINTERACTIVE})
     add_test(
         NAME ${TESTCASE}
         COMMAND ${TESTCASE}
         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
     )
-    set_tests_properties(${TESTCASE}
-        PROPERTIES
-            ENVIRONMENT "${TESTS_ENVIRONMENT}"
-            TIMEOUT 10
-    )
+    set_tests_properties(${TESTCASE} PROPERTIES ENVIRONMENT "${TESTS_ENVIRONMENT}")
+    sdl_set_test_timeout(${TESTCASE} 10)
     if(SDL_INSTALL_TESTS)
         set(exe ${TESTCASE})
         set(installedtestsdir "${CMAKE_INSTALL_FULL_LIBEXECDIR}/installed-tests/SDL3")
@@ -384,8 +387,8 @@ foreach(TESTCASE ${SDL_TESTS_NONINTERACTIVE})
     endif()
 endforeach()
 
-set_tests_properties(testthread PROPERTIES TIMEOUT 40)
-set_tests_properties(testtimer PROPERTIES TIMEOUT 60)
+sdl_set_test_timeout(testthread 40)
+sdl_set_test_timeout(testtimer 60)
 
 if(SDL_INSTALL_TESTS)
     if(RISCOS)