From 104d0a1123b9da36dc4fa83ee41eee2308d6ddce Mon Sep 17 00:00:00 2001
From: Alexander Golubev <fatzer2@gmail.com>
Date: Sun, 1 Mar 2026 22:49:51 +0300
Subject: trinity-base-2.eclass: add src_test implementation

This fixes testing for cmake-based packages.

See-also: https://mirror.git.trinitydesktop.org/gitea/TDE/tde-cmake/pulls/143
Bug: https://mirror.git.trinitydesktop.org/gitea/TDE/tde-cmake/issues/129
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
---
 eclass/trinity-base-2.eclass | 40 ++++++++++++++++++++++++++++++++++++++--
 1 file changed, 38 insertions(+), 2 deletions(-)

diff --git a/eclass/trinity-base-2.eclass b/eclass/trinity-base-2.eclass
index e1b77c24..feda5de2 100644
--- a/eclass/trinity-base-2.eclass
+++ b/eclass/trinity-base-2.eclass
@@ -385,7 +385,7 @@ trinity-base-2_src_prepare() {
 
 # @FUNCTION: trinity-base-2_src_configure
 # @DESCRIPTION:
-# Call standard cmake_src_onfigure and add some common arguments.
+# Call standard cmake_src_configure and add some common arguments.
 trinity-base-2_src_configure() {
 	debug-print-function ${FUNCNAME} "${@}"
 	local eg_cmakeargs
@@ -518,4 +518,40 @@ trinity-base-2_install_docfiles() {
 	popd >/dev/null
 }
 
-EXPORT_FUNCTIONS src_configure src_compile src_install src_prepare
+# @FUNCTION: trinity-base-2_src_test
+# @DESCRIPTION:
+# If cmake build system is in use build a build-check target if it exists and
+# than execudtes cmake_src_test; if autotools is in use call default src_test
+# implementation.
+trinity-base-2_src_test() {
+	if [[ ${TRINITY_BUILD_ADMIN} == "yes" ]] ; then
+		default
+	elif [[ ${TRINITY_BUILD_ADMIN} == "no" ]] ; then
+		if _trinity-base-2_has_target build-check; then
+			cmake_build build-check
+		fi
+		cmake_src_test "$@"
+	fi
+}
+
+# @FUNCTION: _trinity-base-2_has_target
+# @DESCRIPTION:
+# Ruturns zero (true) if there is a target passed in the argument; returns
+# false otherwise. Essentially it's the same as running `nonfatal cmake_build
+# -n <target> &>/dev/null`, but unfortunately as for now cmake_build doesn't
+# return correct exit code when running under nonfatal
+# (see https://bugs.gentoo.org/970798).
+_trinity-base-2_has_target() {
+	pushd "${BUILD_DIR}" > /dev/null || die
+
+	case ${CMAKE_MAKEFILE_GENERATOR} in
+		emake) nonfatal emake  -n "$@" &>/dev/null ;;
+		ninja) nonfatal eninja -n "$@" &>/dev/null ;;
+		*) die "Unknown CMAKE_MAKEFILE_GENERATOR=${CMAKE_MAKEFILE_GENERATOR}" ;;
+	esac
+	local rc=$?
+	popd > /dev/null || die
+	return $rc
+}
+
+EXPORT_FUNCTIONS src_configure src_compile src_install src_prepare src_test
-- 
cgit v1.2.3

