SDL: test: Install GNOME-style installed-tests metadata

From ce502054ad03cfea3851f09ed227fdf0d619f39b Mon Sep 17 00:00:00 2001
From: Simon McVittie <[EMAIL REDACTED]>
Date: Wed, 4 May 2022 13:53:15 +0100
Subject: [PATCH] test: Install GNOME-style installed-tests metadata

This allows these tests to be discovered and run by
gnome-desktop-test-runner.

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 test/CMakeLists.txt   |  9 +++++++++
 test/Makefile.in      | 15 +++++++++++++--
 test/template.test.in |  3 +++
 3 files changed, 25 insertions(+), 2 deletions(-)
 create mode 100644 test/template.test.in

diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 0a7b8a12c43..e81ead76ff5 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -429,6 +429,15 @@ foreach(TESTCASE ${NONINTERACTIVE} ${NEEDS_AUDIO} ${NEEDS_DISPLAY})
         ${TESTCASE}
         PROPERTIES ENVIRONMENT "${TESTS_ENVIRONMENT}"
     )
+    if(SDL_INSTALL_TESTS)
+        set(exe ${TESTCASE})
+        set(installedtestsdir "${CMAKE_INSTALL_FULL_LIBEXECDIR}/installed-tests/SDL2")
+        configure_file(template.test.in "${exe}.test" @ONLY)
+        install(
+            FILES "${CMAKE_CURRENT_BINARY_DIR}/${exe}.test"
+            DESTINATION ${CMAKE_INSTALL_DATADIR}/installed-tests/SDL2
+        )
+    endif()
 endforeach()
 
 if(SDL_INSTALL_TESTS)
diff --git a/test/Makefile.in b/test/Makefile.in
index d14e0735800..8fce76e61d8 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -88,13 +88,24 @@ TARGETS = \
 @OPENGLES2_TARGETS@ += testgles2$(EXE)
 
 
-all: Makefile $(TARGETS) copydatafiles
+all: Makefile $(TARGETS) copydatafiles generatetestmeta
 
 installedtestsdir = $(libexecdir)/installed-tests/SDL2
+installedtestsmetadir = $(datadir)/installed-tests/SDL2
+
+generatetestmeta:
+	rm -f *.test
+	set -e; for exe in $(noninteractive) $(needs_audio) $(needs_display); do \
+		sed \
+			-e 's#@installedtestsdir@#$(installedtestsdir)#g' \
+			-e "s#@exe@#$$exe#g" \
+			< $(srcdir)/template.test.in > $$exe.test; \
+	done
 
 install: all
 	install -D -t $(DESTDIR)$(installedtestsdir) $(TARGETS)
 	install -m644 -D -t $(DESTDIR)$(installedtestsdir) $(DATA)
+	install -m644 -D -t $(DESTDIR)$(installedtestsmetadir) *.test
 
 Makefile: $(srcdir)/Makefile.in
 	$(SHELL) config.status $@
@@ -362,7 +373,7 @@ testmouse$(EXE): $(srcdir)/testmouse.c
 
 
 clean:
-	rm -f $(TARGETS)
+	rm -f $(TARGETS) *.test
 
 distclean: clean
 	rm -f Makefile
diff --git a/test/template.test.in b/test/template.test.in
new file mode 100644
index 00000000000..e1ac063fd8f
--- /dev/null
+++ b/test/template.test.in
@@ -0,0 +1,3 @@
+[Test]
+Type=session
+Exec=@installedtestsdir@/@exe@