From f045b0e11705a6753ac7f9ed4c9be1819609d341 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 17 Sep 2024 18:29:38 +0100 Subject: [PATCH] build: Fix testprocess invocation during "as-installed" tests During build-time testing, we can use `$` to pass the just-built childprocess executable to it as an argument, but during "as-installed" testing we need to use the installed path of the childprocess executable instead. Signed-off-by: Simon McVittie --- test/CMakeLists.txt | 14 ++++++++++++-- test/template.test.in | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 034a297e1..f6676d320 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -102,7 +102,7 @@ define_property(TARGET PROPERTY SDL_NONINTERACTIVE_ARGUMENTS BRIEF_DOCS "Argumen define_property(TARGET PROPERTY SDL_NONINTERACTIVE_TIMEOUT BRIEF_DOCS "Timeout for noninteractive executable." FULL_DOCS "Timeout for noninteractive executable.") macro(add_sdl_test_executable TARGET) - cmake_parse_arguments(AST "BUILD_DEPENDENT;NONINTERACTIVE;NEEDS_RESOURCES;TESTUTILS;THREADS;NO_C90;MAIN_CALLBACKS;NOTRACKMEM" "" "DISABLE_THREADS_ARGS;NONINTERACTIVE_TIMEOUT;NONINTERACTIVE_ARGS;SOURCES" ${ARGN}) + cmake_parse_arguments(AST "BUILD_DEPENDENT;NONINTERACTIVE;NEEDS_RESOURCES;TESTUTILS;THREADS;NO_C90;MAIN_CALLBACKS;NOTRACKMEM" "" "DISABLE_THREADS_ARGS;NONINTERACTIVE_TIMEOUT;NONINTERACTIVE_ARGS;INSTALLED_ARGS;SOURCES" ${ARGN}) if(AST_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Unknown argument(s): ${AST_UNPARSED_ARGUMENTS}") endif() @@ -139,6 +139,11 @@ macro(add_sdl_test_executable TARGET) if(AST_NONINTERACTIVE_ARGS) set_property(TARGET ${TARGET} PROPERTY SDL_NONINTERACTIVE_ARGUMENTS "${AST_NONINTERACTIVE_ARGS}") endif() + if(AST_INSTALLED_ARGS) + set_property(TARGET ${TARGET} PROPERTY SDL_INSTALLED_ARGUMENTS "${AST_INSTALLED_ARGS}") + elseif(AST_NONINTERACTIVE_ARGS) + set_property(TARGET ${TARGET} PROPERTY SDL_INSTALLED_ARGUMENTS "${AST_NONINTERACTIVE_ARGS}") + endif() if(AST_NONINTERACTIVE_TIMEOUT) set_property(TARGET ${TARGET} PROPERTY SDL_NONINTERACTIVE_TIMEOUT "${AST_NONINTERACTIVE_TIMEOUT}") endif() @@ -363,7 +368,11 @@ add_sdl_test_executable(testmouse SOURCES testmouse.c) add_sdl_test_executable(testoverlay NEEDS_RESOURCES TESTUTILS SOURCES testoverlay.c) add_sdl_test_executable(testplatform NONINTERACTIVE SOURCES testplatform.c) add_sdl_test_executable(testpower NONINTERACTIVE SOURCES testpower.c) -add_sdl_test_executable(testprocess NONINTERACTIVE THREADS NONINTERACTIVE_ARGS $ SOURCES testprocess.c) +add_sdl_test_executable(testprocess + NONINTERACTIVE THREADS + NONINTERACTIVE_ARGS $ + INSTALLED_ARGS "${CMAKE_INSTALL_FULL_LIBEXECDIR}/installed-tests/SDL3/childprocess${CMAKE_EXECUTABLE_SUFFIX}" + SOURCES testprocess.c) add_sdl_test_executable(childprocess SOURCES childprocess.c) add_dependencies(testprocess childprocess) add_sdl_test_executable(testfilesystem NONINTERACTIVE SOURCES testfilesystem.c) @@ -593,6 +602,7 @@ function(add_sdl_test TEST TARGET) set(command ${TARGET}) endif() get_property(noninteractive_arguments TARGET ${TARGET} PROPERTY SDL_NONINTERACTIVE_ARGUMENTS) + get_property(installed_arguments TARGET ${TARGET} PROPERTY SDL_INSTALLED_ARGUMENTS) get_property(disable_threads_args TARGET ${TARGET} PROPERTY SDL_DISABLE_THREADS_ARGS) get_property(uses_threads TARGET ${TARGET} PROPERTY SDL_THREADS) if(noninteractive_arguments) diff --git a/test/template.test.in b/test/template.test.in index c182bbca0..1f8620eaa 100644 --- a/test/template.test.in +++ b/test/template.test.in @@ -1,3 +1,3 @@ [Test] Type=session -Exec=@installedtestsdir@/@exe@ @noninteractive_arguments@ +Exec=@installedtestsdir@/@exe@ @installed_arguments@