diff --git a/CMakeLists.txt b/CMakeLists.txt index 5bfe0fbab..479009faf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -549,10 +549,11 @@ install( "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" - "CMakeModules/CalamaresAddPlugin.cmake" - "CMakeModules/CalamaresAddModuleSubdirectory.cmake" - "CMakeModules/CalamaresAddLibrary.cmake" "CMakeModules/CalamaresAddBrandingSubdirectory.cmake" + "CMakeModules/CalamaresAddLibrary.cmake" + "CMakeModules/CalamaresAddModuleSubdirectory.cmake" + "CMakeModules/CalamaresAddPlugin.cmake" + "CMakeModules/CalamaresAddTest.cmake" "CMakeModules/CalamaresAddTranslations.cmake" "CMakeModules/CalamaresAutomoc.cmake" "CMakeModules/CMakeColors.cmake" diff --git a/CMakeModules/CalamaresAddTest.cmake b/CMakeModules/CalamaresAddTest.cmake new file mode 100644 index 000000000..2f8b1adb3 --- /dev/null +++ b/CMakeModules/CalamaresAddTest.cmake @@ -0,0 +1,57 @@ +# === This file is part of Calamares - === +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# Support functions for building Calamares tests. +# This extends KDE's ECM tests with some custom patterns. +# +# calamares_add_test( +# +# [GUI] +# SOURCES +# ) + +include( CMakeParseArguments ) +include( CalamaresAutomoc ) + +function( calamares_add_test ) + # parse arguments (name needs to be saved before passing ARGN into the macro) + set( NAME ${ARGV0} ) + set( options GUI ) + set( multiValueArgs SOURCES ) + cmake_parse_arguments( TEST "${options}" "" "${multiValueArgs}" ${ARGN} ) + set( TEST_NAME ${NAME} ) + + if( ECM_FOUND AND BUILD_TESTING ) + ecm_add_test( + ${TEST_SOURCES} + TEST_NAME + ${TEST_NAME} + LINK_LIBRARIES + calamares + Qt5::Core + Qt5::Test + ) + calamares_automoc( ${TEST_NAME} ) + target_compile_definitions( ${TEST_NAME} PRIVATE -DBUILD_AS_TEST ) + if( TEST_GUI ) + target_link_libraries( ${TEST_NAME} PRIVATE calamaresui Qt5::Gui ) + endif() + endif() +endfunction() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b73fecda0..1445b18f3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,6 +2,7 @@ include( CalamaresAddPlugin ) include( CalamaresAddModuleSubdirectory ) include( CalamaresAddLibrary ) include( CalamaresAddBrandingSubdirectory ) +include( CalamaresAddTest ) # library add_subdirectory( libcalamares )