]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Fix tests invocation
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 29 Mar 2025 10:59:14 +0000 (10:59 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 29 Mar 2025 10:59:14 +0000 (10:59 +0000)
CMakeLists.txt
cmake/AddDependencySubdirectories.cmake
test/CMakeLists.txt

index 7280ae2840324e03d333303c2c517216c8ba37bd..7735884c30e20c7c26745d77f9b94c2bf953b4eb 100644 (file)
@@ -339,6 +339,12 @@ add_custom_target(dist ${CMAKE_SOURCE_DIR}/dist.sh
         COMMENT "Create source distribution"
         WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
 
+# Tests
+# Include CTest for testing support
+include(CTest)
+enable_testing()
+add_subdirectory(test)
+
 add_custom_target(check DEPENDS rspamd-test-cxx rspamd-test)
 add_custom_target(run-test DEPENDS check
         COMMAND test/rspamd-test-cxx
index 9c252187c5efeb51adc9c8fb75de7a7812d9158c..56932e9c67d6da0db51fdc5cf98799b548701579 100644 (file)
@@ -100,10 +100,6 @@ function(AddDependencySubdirectories)
     # Main source code
     add_subdirectory(src)
 
-    # Enable testing
-    enable_testing()
-    add_subdirectory(test)
-
     # Utilities
     add_subdirectory(utils)
 
index 67ff98050848f57d24beebfe5c96c21e47d86a86..5a4e73f77acf3975db58c0089a21412f81332c3f 100644 (file)
-include(CTest)
-
-IF(BUILD_TESTING MATCHES "ON")
-       SET(TESTSRC             rspamd_mem_pool_test.c
-                                       rspamd_statfile_test.c
-                                       rspamd_url_test.c
-                                       rspamd_dns_test.c
-                                       rspamd_dkim_test.c
-                                       rspamd_rrd_test.c
-                                       rspamd_radix_test.c
-                                       rspamd_shingles_test.c
-                                       rspamd_upstream_test.c
-                                       rspamd_lua_pcall_vs_resume_test.c
-                                       rspamd_lua_test.c
-                                       rspamd_cryptobox_test.c
-                                       rspamd_heap_test.c
-                                       rspamd_test_suite.c)
-
-       ADD_EXECUTABLE(rspamd-test ${TESTSRC})
-       SET_TARGET_PROPERTIES(rspamd-test PROPERTIES COMPILE_FLAGS "-DRSPAMD_TEST")
-       ADD_DEPENDENCIES(rspamd-test rspamd-server)
-       SET_TARGET_PROPERTIES(rspamd-test PROPERTIES LINKER_LANGUAGE CXX)
-       TARGET_LINK_LIBRARIES(rspamd-test rspamd-server)
-       ADD_TEST(NAME rspamd-test COMMAND rspamd-test "-p" "/rspamd/lua")
-
-       SET(CXXTESTSSRC         rspamd_cxx_unit.cxx)
-
-       ADD_EXECUTABLE(rspamd-test-cxx ${CXXTESTSSRC})
-       SET_TARGET_PROPERTIES(rspamd-test-cxx PROPERTIES LINKER_LANGUAGE CXX)
-       ADD_DEPENDENCIES(rspamd-test-cxx rspamd-server)
-       TARGET_LINK_LIBRARIES(rspamd-test-cxx PRIVATE rspamd-server)
-       SET_TARGET_PROPERTIES(rspamd-test-cxx PROPERTIES LINKER_LANGUAGE CXX)
-       ADD_TEST(NAME rspamd-test-cxx COMMAND rspamd-test-cxx)
-
-       IF(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
-               # Also add dependencies for convenience
-               FILE(GLOB_RECURSE LUA_TESTS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/lua/*.*")
-               ADD_CUSTOM_TARGET(units-dir COMMAND
-                       ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/lua/unit"
-               )
-               ADD_DEPENDENCIES(rspamd-test units-dir)
-               FOREACH(_LF IN LISTS LUA_TESTS)
-                       GET_FILENAME_COMPONENT(_NM "${_LF}" NAME)
-                       IF("${_LF}" MATCHES "^.*/unit/.*$")
-                               SET(_DS "${CMAKE_CURRENT_BINARY_DIR}/lua/unit/${_NM}")
-                       ELSE()
-                               SET(_DS "${CMAKE_CURRENT_BINARY_DIR}/lua/${_NM}")
-                       ENDIF()
-                       ADD_CUSTOM_TARGET("${_NM}" COMMAND
-                               ${CMAKE_COMMAND} -E copy_if_different ${_LF} ${_DS}
-                               SOURCES "${_LF}"
-                       )
-                       ADD_DEPENDENCIES(rspamd-test "${_NM}")
-               ENDFOREACH()
-       ENDIF()
-ENDIF()
\ No newline at end of file
+
+# Define C test sources
+set(RSPAMD_TEST_SOURCES
+        rspamd_mem_pool_test.c
+        rspamd_statfile_test.c
+        rspamd_url_test.c
+        rspamd_dns_test.c
+        rspamd_dkim_test.c
+        rspamd_rrd_test.c
+        rspamd_radix_test.c
+        rspamd_shingles_test.c
+        rspamd_upstream_test.c
+        rspamd_lua_pcall_vs_resume_test.c
+        rspamd_lua_test.c
+        rspamd_cryptobox_test.c
+        rspamd_heap_test.c
+        rspamd_test_suite.c
+)
+
+# Main C test executable
+add_executable(rspamd-test ${RSPAMD_TEST_SOURCES})
+target_compile_definitions(rspamd-test PRIVATE RSPAMD_TEST)
+target_link_libraries(rspamd-test PRIVATE rspamd-server)
+set_target_properties(rspamd-test PROPERTIES
+        LINKER_LANGUAGE CXX
+)
+
+# Add the test
+add_test(
+        NAME rspamd-test
+        COMMAND rspamd-test -p /rspamd/lua
+)
+
+# C++ unit tests
+set(CXX_TEST_SOURCES rspamd_cxx_unit.cxx)
+
+# C++ test executable
+add_executable(rspamd-test-cxx ${CXX_TEST_SOURCES})
+target_link_libraries(rspamd-test-cxx PRIVATE rspamd-server)
+set_target_properties(rspamd-test-cxx PROPERTIES
+        LINKER_LANGUAGE CXX
+)
+
+# Add the C++ test
+add_test(
+        NAME rspamd-test-cxx
+        COMMAND rspamd-test-cxx
+)
+
+# Copy test Lua scripts for out-of-source builds
+if (NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
+    # Find Lua test files
+    file(GLOB_RECURSE LUA_TESTS CONFIGURE_DEPENDS
+            "${CMAKE_CURRENT_SOURCE_DIR}/lua/*.*")
+
+    # Create target to ensure unit directory exists
+    add_custom_target(units-dir
+            COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/lua/unit"
+    )
+
+    # Make the main test depend on the directory creation
+    add_dependencies(rspamd-test units-dir)
+
+    # Create file-specific targets for each Lua test file
+    foreach (lua_file IN LISTS LUA_TESTS)
+        # Extract just the filename
+        get_filename_component(file_name "${lua_file}" NAME)
+
+        # Determine destination path
+        if ("${lua_file}" MATCHES "^.*/unit/.*$")
+            set(dest_file "${CMAKE_CURRENT_BINARY_DIR}/lua/unit/${file_name}")
+        else ()
+            set(dest_file "${CMAKE_CURRENT_BINARY_DIR}/lua/${file_name}")
+        endif ()
+
+        # Create custom target to copy the file
+        add_custom_target("${file_name}"
+                COMMAND ${CMAKE_COMMAND} -E copy_if_different
+                "${lua_file}" "${dest_file}"
+                SOURCES "${lua_file}"
+                COMMENT "Copying ${file_name} to test directory"
+        )
+
+        # Make the main test depend on this file copy
+        add_dependencies(rspamd-test "${file_name}")
+    endforeach ()
+endif ()
+
+# Add test properties
+set_tests_properties(rspamd-test PROPERTIES
+        ENVIRONMENT "RSPAMD_INSTALLROOT=${CMAKE_INSTALL_PREFIX}"
+)
+
+# Custom target for running all tests directly (convenience target)
+add_custom_target(run-tests
+        COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure
+        DEPENDS rspamd-test rspamd-test-cxx
+        COMMENT "Running all Rspamd tests"
+)
+
+# Custom target for running C tests only
+add_custom_target(run-c-tests
+        COMMAND ${CMAKE_COMMAND} -E echo "Running C unit tests..."
+        COMMAND ${CMAKE_CURRENT_BINARY_DIR}/rspamd-test -p /rspamd/lua
+        DEPENDS rspamd-test
+        COMMENT "Running Rspamd C tests"
+)
+
+# Custom target for running C++ tests only
+add_custom_target(run-cxx-tests
+        COMMAND ${CMAKE_COMMAND} -E echo "Running C++ unit tests..."
+        COMMAND ${CMAKE_CURRENT_BINARY_DIR}/rspamd-test-cxx
+        DEPENDS rspamd-test-cxx
+        COMMENT "Running Rspamd C++ tests"
+)
\ No newline at end of file