Files
Kacper Kasper 4de63671bd test-raw: Run tests and shutdown automatically
* Move running the tests to user bootscript.
* Remove SSH preconfiguration from first_login.
* Add debug_server settings.
* Disable more flaky tests.
* Fix libsupportkit_RemoteTestObject.so build.

Change-Id: I774ab4fc5a007da463cf1213d92132ad9f64fe7f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10708
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Kacper Kasper <[email protected]>
2026-04-19 07:26:48 +00:00

174 lines
4.0 KiB
Plaintext

# unit test pseudo target
NotFile unittests ;
rule UnitTestDependency
{
Depends unittests : $(1) ;
}
rule UnitTestLib
{
# UnitTestLib <lib> : <sources> : <libraries> : <local_libraries> : <rdefs> ;
#
local lib = $(1) ;
local sources = $(2) ;
local libraries = $(3) ;
local local_libraries = $(4) ;
local rdefs = $(5) ;
AddResources $(lib) : $(rdefs) ;
# if TEST_DEBUG is defined, we turn on debugging
if $(TEST_DEBUG) {
DEBUG on $(lib) [ FGristFiles $(sources:S=$(SUFOBJ)) ] ?= 1 ;
}
# define TEST_R5/TEST_HAIKU depending on the platform we build for
if $(TARGET_PLATFORM) = libbe_test {
ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;
# make the target depend on the installed libbe libraries
Depends $(lib) :
<tests!unittests>libbe_test.so ;
} else {
ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;
}
UseCppUnitObjectHeaders $(sources) ;
MakeLocate $(lib) : $(TARGET_UNIT_TEST_LIB_DIR) ;
SharedLibrary $(lib) : $(sources) : $(libraries) $(local_libraries) libcppunit.so ;
UnitTestDependency $(lib) ;
UNIT_TEST_LIBRARIES on unittests += $(lib) ;
UNIT_TEST_LIBRARIES on unittests += $(local_libraries) ;
for dep in $(local_libraries) {
local dep_grist = $(dep:G=unittests) ;
MakeLocate $(dep_grist) : [ FDirName $(TARGET_UNIT_TEST_DIR) lib ] ;
File $(dep_grist) : $(dep) ;
MimeSet $(dep_grist) ;
MODE on $(dep_grist) = $(EXEMODE) ;
UnitTestDependency $(dep_grist) ;
}
}
rule UnitTestResource
{
# UnitTestResource <target> : <source> : <destDir> : <flags> ;
#
# <flags> supported values: isExec
local grist = [ FGrist tests unittests resources $(3) ] ;
local target = $(1:G=$(grist)) ;
local source = $(2) ;
local destDir = $(3) ;
local flags = $(4) ;
MakeLocate $(target) : [ FDirName $(TARGET_UNIT_TEST_DIR) resources $(destDir) ] ;
File $(target) : $(source) ;
if isExec in $(flags) {
MODE on $(target) = $(EXEMODE) ;
}
MimeSet $(target) ;
UnitTestDependency $(target) ;
UNIT_TEST_RESOURCES on unittests += $(target) ;
DEST_DIR on $(target) = $(destDir) ;
}
rule UnitTestResources
{
# UnitTestResources <files> : <destDir> : <flags> ;
#
# <flags> supports same values as UnitTestResource
local files = $(1) ;
local destDir = $(2) ;
local flags = $(3) ;
for file in $(files) {
local fileName = $(file:BS) ;
UnitTestResource $(fileName) : $(file) : $(destDir) : $(flags) ;
}
}
rule UnitTest
{
# UnitTest <target> : <sources> : <libraries> : <resources> ;
#
local target = $(1) ;
local sources = $(2) ;
local libraries = $(3) ;
local resources = $(4) ;
# define TEST_R5/TEST_HAIKU depending on the platform we build for
if $(TARGET_PLATFORM) = libbe_test {
ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;
# make the target depend on the installed libbe libraries
Depends $(target) :
<tests!unittests>libbe_test.so ;
} else {
ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;
}
UseCppUnitObjectHeaders $(sources) ;
MakeLocate $(target) : $(TARGET_UNIT_TEST_DIR) ;
SimpleTest $(target) : $(sources) : $(libraries) libcppunit.so
: $(resources) ;
UnitTestDependency $(target) ;
UNIT_TEST_EXECUTABLES on unittests += $(target) ;
}
rule TestObjects
{
# TestObjects <sources> ;
#
local sources = $(1) ;
# define TEST_R5/TEST_HAIKU depending on the platform we build for
if $(TARGET_PLATFORM) = libbe_test {
ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;
} else {
ObjectDefines $(2) : TEST_HAIKU TEST_OBOS ;
}
UseCppUnitObjectHeaders $(sources) ;
Objects $(sources) ;
}
rule SimpleTest
{
# SimpleTest <target> : <sources> : [ <libraries> ] : [ <resources> ] ;
# if TEST_DEBUG is defined, we turn on debugging
if $(TEST_DEBUG) {
DEBUG on $(1) [ FGristFiles $(2:S=$(SUFOBJ)) ] ?= 1 ;
}
Application $(1) : $(2) : $(3) : $(4) ;
}
rule BuildPlatformTest
{
# Usage BuildPlatformTest <target> : <sources> ;
local target = $(1) ;
local sources = $(2) ;
local relPath ;
if [ FIsPrefix src tests : $(SUBDIR_TOKENS) ] {
relPath = $(SUBDIR_TOKENS[3-]) ;
} else {
relPath = $(SUBDIR_TOKENS[2-]) ;
}
MakeLocate $(target) : [ FDirName $(HAIKU_TEST_DIR) $(relPath) ] ;
BuildPlatformMain $(target) : $(sources) ;
}