From c3ad5f401f005fb9c37e1ed580cad2744ebe3f27 Mon Sep 17 00:00:00 2001 From: Daniel McInnes Date: Wed, 24 Jul 2024 12:30:44 +1000 Subject: [PATCH] Run unit tests by default for desktop builds --- CMakeLists.txt | 28 ++++++++++++++++++++-------- tests/firmwareversion/CMakeLists.txt | 1 + tests/screenblanker/CMakeLists.txt | 1 + tests/units/CMakeLists.txt | 1 + 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c237d963..f652d1ca2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,16 @@ else() include(GNUInstallDirs) endif() +option(LOAD_QML_FROM_FILESYSTEM "disable filesystem loading via cmake -DLOAD_QML_FROM_FILESYSTEM=OFF" ON) # Enabled by default +option(RUN_UNIT_TESTS "only affects desktop builds. Disable via cmake -DRUN_UNIT_TESTS=OFF" ON) # Enabled by default + +if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) + set(VENUS_DESKTOP_BUILD ON) +endif() +if (${VENUS_DESKTOP_BUILD}) + add_compile_definitions(VENUS_DESKTOP_BUILD) + enable_testing() +endif() add_subdirectory(tests) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -70,11 +80,6 @@ message("Building VenusOS for ${CMAKE_SYSTEM_NAME}") message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") message("CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}") -option(VENUS_DESKTOP_BUILD "enable desktop build via cmake -DVENUS_DESKTOP_BUILD=ON" OFF) # Disabled by default -option(VENUS_WEBASSEMBLY_BUILD "enable webassembly build via cmake -DVENUS_WEBASSEMBLY_BUILD=ON" OFF) # Disabled by default -option(MQTT_WEBSOCKETS_ENABLED "enable websockets build via cmake -DMQTT_WEBSOCKETS_ENABLED=ON" OFF) # Disabled by default -option(LOAD_QML_FROM_FILESYSTEM "disable filesystem loading via cmake -DLOAD_QML_FROM_FILESYSTEM=OFF" ON) # Enabled by default - # If we want a release build, remove the '-g' debug compiler flag set by the environment setup script. # Otherwise, our executable size ballons from ~10MB to ~220MB. if(("${CMAKE_BUILD_TYPE}" STREQUAL "Release" OR "${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")) @@ -1001,18 +1006,15 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten") ) elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") list(APPEND venusCompileFlags ${UNIX_COMPILE_FLAGS}) - add_compile_definitions(VENUS_DESKTOP_BUILD) qt_add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${SOURCES} ) elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") - add_compile_definitions(VENUS_DESKTOP_BUILD) qt_add_executable(${PROJECT_NAME} ${SOURCES} ) elseif(VENUS_DESKTOP_BUILD) - add_compile_definitions(VENUS_DESKTOP_BUILD) qt_add_executable(${PROJECT_NAME} ${SOURCES} ) @@ -1023,6 +1025,16 @@ else() ) endif() +if (("${RUN_UNIT_TESTS}" STREQUAL "ON") AND ${VENUS_DESKTOP_BUILD}) # Don't run unit tests when building wasm or cerbo + add_custom_command( + TARGET ${PROJECT_NAME} + COMMENT "Run tests" + POST_BUILD + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${CMAKE_CTEST_COMMAND} -V -C $ --output-on-failures + ) +endif() + qt_add_qml_module( ${PROJECT_NAME} URI ${PROJECT_NAME} VERSION 1.0 diff --git a/tests/firmwareversion/CMakeLists.txt b/tests/firmwareversion/CMakeLists.txt index 81109686e..387695e30 100644 --- a/tests/firmwareversion/CMakeLists.txt +++ b/tests/firmwareversion/CMakeLists.txt @@ -51,3 +51,4 @@ target_link_libraries(tst_firmwareversion PRIVATE Qt6::Quick ) +add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME}) diff --git a/tests/screenblanker/CMakeLists.txt b/tests/screenblanker/CMakeLists.txt index dc7f3540b..9f9fbaa95 100644 --- a/tests/screenblanker/CMakeLists.txt +++ b/tests/screenblanker/CMakeLists.txt @@ -48,3 +48,4 @@ target_link_libraries(tst_screenblanker PRIVATE Qt6::Quick ) +add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME}) diff --git a/tests/units/CMakeLists.txt b/tests/units/CMakeLists.txt index 05d6085d8..4db5563e4 100644 --- a/tests/units/CMakeLists.txt +++ b/tests/units/CMakeLists.txt @@ -50,3 +50,4 @@ target_link_libraries(tst_units PRIVATE Qt6::Quick ) +add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME})