From 878af4b049e0236daa02d075e693c9c630d89aca Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 9 Jul 2026 14:33:58 +0200 Subject: cmake: extract test target creation --- cmake/Modules/BuildHostTests.cmake | 35 +++++++++++++++++++++ kernel/CMakeLists.txt | 64 ++++---------------------------------- libs/acpi/CMakeLists.txt | 27 ++-------------- libs/kstd/CMakeLists.txt | 30 ++---------------- 4 files changed, 45 insertions(+), 111 deletions(-) create mode 100644 cmake/Modules/BuildHostTests.cmake diff --git a/cmake/Modules/BuildHostTests.cmake b/cmake/Modules/BuildHostTests.cmake new file mode 100644 index 00000000..aa3ae66d --- /dev/null +++ b/cmake/Modules/BuildHostTests.cmake @@ -0,0 +1,35 @@ +include_guard(GLOBAL) + +function("teachos_add_tests" NAME) + add_executable("${NAME}_tests") + add_executable("${NAME}::tests" ALIAS "${NAME}_tests") + + file(GLOB_RECURSE + TEST_SOURCES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + CONFIGURE_DEPENDS + "*.tests.cpp" + ) + + target_sources("${NAME}_tests" PRIVATE + ${TEST_SOURCES} + ) + + target_link_libraries("${NAME}_tests" PRIVATE + "Catch2::Catch2WithMain" + "${NAME}::lib" + ) + + set_target_properties("${NAME}_tests" PROPERTIES + EXCLUDE_FROM_ALL NO + ) + + + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bht_results") + + catch_discover_tests("${NAME}::tests" + REPORTER junit + OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/bht_results" + OUTPUT_SUFFIX ".xml" + ) +endfunction() \ No newline at end of file diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index d50944e4..34d71de1 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -140,79 +140,32 @@ endif() if(BUILD_TESTING) find_package("Catch2") include("Catch") + include("BuildHostTests") - enable_coverage("kernel_lib") - - add_executable("kernel_tests") - add_executable("kernel::tests" ALIAS "kernel_tests") + teachos_add_tests("kernel") target_sources("kernel_tests" PRIVATE - # Platform-defined KAPI "kernel/test_support/kapi/cpu.cpp" "kernel/test_support/kapi/cio.cpp" "kernel/test_support/kapi/interrupts.cpp" "kernel/test_support/kapi/memory.cpp" - # Device Subsystem Support "kernel/test_support/devices/block_device.cpp" "kernel/test_support/devices/character_device.cpp" - # Filesystem Subsystem Support "kernel/test_support/filesystem/inode.cpp" "kernel/test_support/filesystem/filesystem.cpp" "kernel/test_support/filesystem/ext2.cpp" "kernel/test_support/filesystem/storage_boot_module_fixture.cpp" "kernel/test_support/filesystem/storage_boot_module_vfs_fixture.cpp" - # I/O Support "kernel/test_support/log_buffer.cpp" "kernel/test_support/output_device.cpp" - # Memory Support "kernel/test_support/page_mapper.cpp" "kernel/test_support/simulated_memory.cpp" - # Support System Listener "kernel/test_support/state_reset_listener.cpp" - - # KAPI Shim Tests - "kapi/cpu.tests.cpp" - "kapi/system.tests.cpp" - "kapi/filesystem.tests.cpp" - - # KSTD Shim Tests - "kstd/print.tests.cpp" - - # Memory Subsystem Tests - "kernel/memory/bitmap_allocator.tests.cpp" - "kernel/memory/block_list_allocator.tests.cpp" - - # Filesystem Subsystem Tests - "kernel/filesystem/devfs/filesystem.tests.cpp" - "kernel/filesystem/devfs/inode.tests.cpp" - "kernel/filesystem/ext2/filesystem.tests.cpp" - "kernel/filesystem/ext2/inode.tests.cpp" - "kernel/filesystem/path.tests.cpp" - "kernel/filesystem/rootfs/filesystem.tests.cpp" - "kernel/filesystem/rootfs/inode.tests.cpp" - "kernel/filesystem/dentry.tests.cpp" - "kernel/filesystem/device_inode.tests.cpp" - "kernel/filesystem/mount_table.tests.cpp" - "kernel/filesystem/mount.tests.cpp" - "kernel/filesystem/open_file_descriptor.tests.cpp" - "kernel/filesystem/open_file_table.tests.cpp" - "kernel/filesystem/type_registry.tests.cpp" - "kernel/filesystem/vfs.tests.cpp" - - # Storage Subsystem Tests - "kernel/devices/block_device_utils.tests.cpp" - "kernel/devices/block_device.tests.cpp" - "kernel/devices/storage/ram_disk/device.tests.cpp" - ) - - target_link_libraries("kernel_tests" PRIVATE - "kernel::lib" - "Catch2::Catch2WithMain" ) target_compile_definitions("kernel_tests" PRIVATE @@ -224,13 +177,8 @@ if(BUILD_TESTING) CXX_CLANG_TIDY "" ) - enable_coverage("kernel_tests") - - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bht_results") - - catch_discover_tests("kernel::tests" - REPORTER junit - OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/bht_results" - OUTPUT_SUFFIX ".xml" - ) + if(COMMAND "enable_coverage") + enable_coverage("kernel_lib") + enable_coverage("kernel_tests") + endif() endif() diff --git a/libs/acpi/CMakeLists.txt b/libs/acpi/CMakeLists.txt index 76941dcf..caffa1c9 100644 --- a/libs/acpi/CMakeLists.txt +++ b/libs/acpi/CMakeLists.txt @@ -56,6 +56,7 @@ set_target_properties("acpi" PROPERTIES if(BUILD_TESTING) find_package("Catch2") include("Catch") + include("BuildHostTests") find_program(IASL_EXE NAMES "iasl" REQUIRED) @@ -88,37 +89,13 @@ if(BUILD_TESTING) enable_coverage("acpi") endif() - add_executable("acpi_tests") - add_executable("acpi::tests" ALIAS "acpi_tests") + teachos_add_tests("acpi") target_sources("acpi_tests" PRIVATE - "acpi/common/table_header.tests.cpp" - "acpi/data/madt.tests.cpp" - "acpi/data/rsdt.tests.cpp" - "acpi/data/xsdt.tests.cpp" - "acpi/pointers.tests.cpp" - "acpi/test_data/tables.S" ) target_include_directories("acpi_tests" PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/test_data" ) - - target_link_libraries("acpi_tests" PRIVATE - "Catch2::Catch2WithMain" - "acpi::lib" - ) - - set_target_properties("acpi_tests" PROPERTIES - EXCLUDE_FROM_ALL NO - ) - - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bht_results") - - catch_discover_tests("acpi::tests" - REPORTER junit - OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/bht_results" - OUTPUT_SUFFIX ".xml" - ) endif() diff --git a/libs/kstd/CMakeLists.txt b/libs/kstd/CMakeLists.txt index 2c63f87d..9c68feed 100644 --- a/libs/kstd/CMakeLists.txt +++ b/libs/kstd/CMakeLists.txt @@ -69,38 +69,12 @@ endif() if(BUILD_TESTING) find_package("Catch2") include("Catch") + include("BuildHostTests") - add_executable("kstd_tests") - add_executable("kstd::tests" ALIAS "kstd_tests") - - target_sources("kstd_tests" PRIVATE - "kstd/flat_map.tests.cpp" - "kstd/format.tests.cpp" - "kstd/vector.tests.cpp" - "kstd/bits/observer_ptr.tests.cpp" - "kstd/test_support/os_panic.tests.cpp" - "kstd/string.tests.cpp" - ) - - target_link_libraries("kstd_tests" PRIVATE - "Catch2::Catch2WithMain" - "kstd::lib" - ) - - set_target_properties("kstd_tests" PROPERTIES - EXCLUDE_FROM_ALL NO - ) + teachos_add_tests("kstd") if(COMMAND "enable_coverage") enable_coverage("kstd") enable_coverage("kstd_tests") endif() - - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bht_results") - - catch_discover_tests("kstd::tests" - REPORTER junit - OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/bht_results" - OUTPUT_SUFFIX ".xml" - ) endif() \ No newline at end of file -- cgit v1.2.3