changeset 6232:46cd2a84ffdf

added new CMake option BUILD_UNIT_TESTS
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 09 Jul 2025 08:21:25 +0200
parents c13cc738bceb
children a93598f96cc1
files NEWS OrthancFramework/SharedLibrary/CMakeLists.txt OrthancServer/CMakeLists.txt
diffstat 3 files changed, 84 insertions(+), 58 deletions(-) [+]
line wrap: on
line diff
--- a/NEWS	Tue Jul 08 18:52:19 2025 +0200
+++ b/NEWS	Wed Jul 09 08:21:25 2025 +0200
@@ -48,6 +48,7 @@
 
 * If the "RegisteredUsers" configuration option is present but empty,
   Orthanc does not create the default user "orthanc" anymore.
+* Added new CMake option "-DBUILD_UNIT_TESTS=ON" to disable the building of unit tests
 
 
 
--- a/OrthancFramework/SharedLibrary/CMakeLists.txt	Tue Jul 08 18:52:19 2025 +0200
+++ b/OrthancFramework/SharedLibrary/CMakeLists.txt	Wed Jul 09 08:21:25 2025 +0200
@@ -45,7 +45,8 @@
 # adds CMAKE_INSTALL_PREFIX to the include_directories(), which causes
 # issues if re-building the shared library after install!
 set(ORTHANC_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "")
-SET(UNIT_TESTS_WITH_HTTP_CONNEXIONS ON CACHE BOOL "Allow unit tests to make HTTP requests")
+set(BUILD_UNIT_TESTS ON CACHE BOOL "Whether to build the unit tests (new in Orthanc 1.12.9)")
+set(UNIT_TESTS_WITH_HTTP_CONNEXIONS ON CACHE BOOL "Allow unit tests to make HTTP requests")
 set(BUILD_SHARED_LIBRARY ON CACHE BOOL "Whether to build a shared library instead of a static library")
 set(ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES "" CACHE STRING "Additional libraries to link against, separated by whitespaces, typically needed if building the static library (a common minimal value is \"boost_filesystem boost_iostreams boost_locale boost_regex boost_thread jsoncpp pugixml uuid\")")
 
@@ -75,7 +76,6 @@
 
 set(ENABLE_DCMTK ON)
 set(ENABLE_DCMTK_TRANSCODING ON)
-set(ENABLE_GOOGLE_TEST ON)
 set(ENABLE_JPEG ON)
 set(ENABLE_LOCALE ON)
 set(ENABLE_LUA ON)
@@ -83,6 +83,13 @@
 set(ENABLE_PUGIXML ON)
 set(ENABLE_ZLIB ON)
 
+if (BUILD_UNIT_TESTS)
+  set(ENABLE_GOOGLE_TEST ON)
+else()
+  set(ENABLE_GOOGLE_TEST OFF)
+endif()
+
+
 if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
   # WebAssembly or asm.js
   set(BOOST_LOCALE_BACKEND "libiconv")
@@ -504,7 +511,8 @@
 ## Compile the unit tests
 #####################################################################
 
-if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+if (BUILD_UNIT_TESTS AND
+    NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
   include(ExternalProject)
 
   if (CMAKE_TOOLCHAIN_FILE)
@@ -544,6 +552,7 @@
     -DUNIT_TESTS_WITH_HTTP_CONNEXIONS:BOOL=${UNIT_TESTS_WITH_HTTP_CONNEXIONS}
     -DUSE_GOOGLE_TEST_DEBIAN_PACKAGE:BOOL=${USE_GOOGLE_TEST_DEBIAN_PACKAGE}
     -DUSE_SYSTEM_GOOGLE_TEST:BOOL=${USE_SYSTEM_GOOGLE_TEST}
+    -DBUILD_UNIT_TESTS:BOOL=${BUILD_UNIT_TESTS}
 
     -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
     -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
--- a/OrthancServer/CMakeLists.txt	Tue Jul 08 18:52:19 2025 +0200
+++ b/OrthancServer/CMakeLists.txt	Wed Jul 09 08:21:25 2025 +0200
@@ -63,6 +63,7 @@
 SET(BUILD_HOUSEKEEPER ON CACHE BOOL "Whether to build the Housekeeper plugin")
 SET(BUILD_DELAYED_DELETION ON CACHE BOOL "Whether to build the DelayedDeletion plugin")
 SET(BUILD_MULTITENANT_DICOM ON CACHE BOOL "Whether to build the MultitenantDicom plugin")
+SET(BUILD_UNIT_TESTS ON CACHE BOOL "Whether to build the unit tests (new in Orthanc 1.12.9)")
 SET(ENABLE_PLUGINS ON CACHE BOOL "Enable plugins")
 SET(UNIT_TESTS_WITH_HTTP_CONNEXIONS ON CACHE BOOL "Allow unit tests to make HTTP requests")
 
@@ -76,6 +77,10 @@
   set(ENABLE_PROTOBUF_COMPILER ON)
 endif()
 
+if (NOT BUILD_UNIT_TESTS)
+  set(ENABLE_GOOGLE_TEST OFF)
+endif()
+
 include(${CMAKE_SOURCE_DIR}/../OrthancFramework/Resources/CMake/VisualStudioPrecompiledHeaders.cmake)
 include(${CMAKE_SOURCE_DIR}/../OrthancFramework/Resources/CMake/OrthancFrameworkConfiguration.cmake)
 
@@ -162,37 +167,39 @@
   )
 
 
-set(ORTHANC_FRAMEWORK_UNIT_TESTS
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/DicomMapTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/FileStorageTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/FrameworkTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/FromDcmtkTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/ImageProcessingTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/ImageTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/JobsTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/JpegLosslessTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/LoggingTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/LuaTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/MemoryCacheTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/RestApiTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/SQLiteChromiumTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/SQLiteTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/StreamTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/ToolboxTests.cpp
-  ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/ZipTests.cpp
-  )
+if (BUILD_UNIT_TESTS)
+  set(ORTHANC_FRAMEWORK_UNIT_TESTS
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/DicomMapTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/FileStorageTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/FrameworkTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/FromDcmtkTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/ImageProcessingTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/ImageTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/JobsTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/JpegLosslessTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/LoggingTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/LuaTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/MemoryCacheTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/RestApiTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/SQLiteChromiumTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/SQLiteTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/StreamTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/ToolboxTests.cpp
+    ${CMAKE_SOURCE_DIR}/../OrthancFramework/UnitTestsSources/ZipTests.cpp
+    )
 
-set(ORTHANC_SERVER_UNIT_TESTS
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/DatabaseLookupTests.cpp
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/LuaServerTests.cpp
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/PluginsTests.cpp
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/ServerConfigTests.cpp
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/ServerIndexTests.cpp
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/ServerJobsTests.cpp
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/SizeOfTests.cpp
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/UnitTestsMain.cpp
-  ${CMAKE_SOURCE_DIR}/UnitTestsSources/VersionsTests.cpp
-  )
+  set(ORTHANC_SERVER_UNIT_TESTS
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/DatabaseLookupTests.cpp
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/LuaServerTests.cpp
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/PluginsTests.cpp
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/ServerConfigTests.cpp
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/ServerIndexTests.cpp
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/ServerJobsTests.cpp
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/SizeOfTests.cpp
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/UnitTestsMain.cpp
+    ${CMAKE_SOURCE_DIR}/UnitTestsSources/VersionsTests.cpp
+    )
+endif()
 
 
 if (ENABLE_PLUGINS)
@@ -211,9 +218,11 @@
     ${CMAKE_SOURCE_DIR}/Plugins/Engine/PluginsManager.cpp
     )
 
-  list(APPEND ORTHANC_SERVER_UNIT_TESTS
-    ${CMAKE_SOURCE_DIR}/UnitTestsSources/PluginsTests.cpp
-    )
+  if (BUILD_UNIT_TESTS)
+    list(APPEND ORTHANC_SERVER_UNIT_TESTS
+      ${CMAKE_SOURCE_DIR}/UnitTestsSources/PluginsTests.cpp
+      )
+  endif()
 endif()
 
 
@@ -334,16 +343,19 @@
 endif()
 
 
-if (UNIT_TESTS_WITH_HTTP_CONNEXIONS)
-  add_definitions(-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=1)
+if (BUILD_UNIT_TESTS)
+  add_definitions(-DORTHANC_BUILD_UNIT_TESTS=1)
+  if (UNIT_TESTS_WITH_HTTP_CONNEXIONS)
+    add_definitions(-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=1)
+  else()
+    add_definitions(-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=0)
+  endif()
 else()
-  add_definitions(-DUNIT_TESTS_WITH_HTTP_CONNEXIONS=0)
+  add_definitions(-DORTHANC_BUILD_UNIT_TESTS=1)
 endif()
 
 
 add_definitions(
-  -DORTHANC_BUILD_UNIT_TESTS=1
-
   # Macros for the plugins
   -DHAS_ORTHANC_EXCEPTION=0
   )
@@ -371,9 +383,11 @@
     "PrecompiledHeadersServer.h" "${CMAKE_SOURCE_DIR}/Sources/PrecompiledHeadersServer.cpp"
     ORTHANC_SERVER_SOURCES ORTHANC_SERVER_PCH)
 
-  ADD_VISUAL_STUDIO_PRECOMPILED_HEADERS(
-    "PrecompiledHeadersUnitTests.h" "${CMAKE_SOURCE_DIR}/UnitTestsSources/PrecompiledHeadersUnitTests.cpp"
-    ORTHANC_SERVER_UNIT_TESTS ORTHANC_UNIT_TESTS_PCH)
+  if (BUILD_UNIT_TESTS)
+    ADD_VISUAL_STUDIO_PRECOMPILED_HEADERS(
+      "PrecompiledHeadersUnitTests.h" "${CMAKE_SOURCE_DIR}/UnitTestsSources/PrecompiledHeadersUnitTests.cpp"
+      ORTHANC_SERVER_UNIT_TESTS ORTHANC_UNIT_TESTS_PCH)
+  endif()
 endif()
 
 
@@ -477,22 +491,24 @@
 ## Build the unit tests
 #####################################################################
 
-add_executable(UnitTests
-  ${GOOGLE_TEST_SOURCES}
-  ${ORTHANC_UNIT_TESTS_PCH}
-  ${ORTHANC_FRAMEWORK_UNIT_TESTS}
-  ${ORTHANC_SERVER_UNIT_TESTS}
-  ${BOOST_EXTENDED_SOURCES}
-  )
+if (BUILD_UNIT_TESTS)
+  add_executable(UnitTests
+    ${GOOGLE_TEST_SOURCES}
+    ${ORTHANC_UNIT_TESTS_PCH}
+    ${ORTHANC_FRAMEWORK_UNIT_TESTS}
+    ${ORTHANC_SERVER_UNIT_TESTS}
+    ${BOOST_EXTENDED_SOURCES}
+    )
 
-DefineSourceBasenameForTarget(UnitTests)
+  DefineSourceBasenameForTarget(UnitTests)
 
-target_link_libraries(UnitTests
-  ServerLibrary
-  CoreLibrary
-  ${DCMTK_LIBRARIES}
-  ${GOOGLE_TEST_LIBRARIES}
-  )
+  target_link_libraries(UnitTests
+    ServerLibrary
+    CoreLibrary
+    ${DCMTK_LIBRARIES}
+    ${GOOGLE_TEST_LIBRARIES}
+    )
+endif()
 
 
 #####################################################################