Tests: Make CMakeGUI test build with both Qt5 and Qt6

Fixes: #26710
This commit is contained in:
Alexandru Croitor 2025-02-20 11:09:08 +01:00 committed by Brad King
parent 5afbc739dc
commit 245f5ca8b3
5 changed files with 51 additions and 15 deletions

View File

@ -1,3 +1,5 @@
set(CMake_QT_MAJOR_VERSION "5" CACHE STRING "") set(CMake_QT_MAJOR_VERSION "6" CACHE STRING "")
set(CMake_TEST_GUI "ON" CACHE BOOL "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_symlinked_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_symlinked_common.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora41_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora41_common.cmake")

View File

@ -264,6 +264,7 @@ target_link_libraries(
) )
add_executable(cmake-gui WIN32 MACOSX_BUNDLE CMakeGUIExec.cxx) add_executable(cmake-gui WIN32 MACOSX_BUNDLE CMakeGUIExec.cxx)
set_property(TARGET cmake-gui PROPERTY CMake_QT_MAJOR_VERSION "${CMake_QT_MAJOR_VERSION}")
target_link_libraries(cmake-gui target_link_libraries(cmake-gui
PRIVATE PRIVATE
CMakeGUIMainLib CMakeGUIMainLib

View File

@ -75,7 +75,8 @@ void CMakeGUITest::tryConfigure(int expectedResult, int timeout)
Qt::QueuedConnection); Qt::QueuedConnection);
QVERIFY(configureDoneSpy.wait(timeout)); QVERIFY(configureDoneSpy.wait(timeout));
QCOMPARE(configureDoneSpy, { { expectedResult } }); QList<QVariant> configureDoneSignalArguments = configureDoneSpy.takeFirst();
QCOMPARE(configureDoneSignalArguments.at(0).toInt(), expectedResult);
} }
void CMakeGUITest::sourceBinaryArgs() void CMakeGUITest::sourceBinaryArgs()

View File

@ -1,6 +1,8 @@
include(CMakeParseArguments) include(CMakeParseArguments)
find_package(Qt5Test REQUIRED) get_property(CMake_QT_MAJOR_VERSION TARGET cmake-gui PROPERTY CMake_QT_MAJOR_VERSION)
find_package(Qt${CMake_QT_MAJOR_VERSION}Test REQUIRED)
if(MSVC) if(MSVC)
# QTBUG-118993: Qt uses deprecated stdext::checked_array_iterator # QTBUG-118993: Qt uses deprecated stdext::checked_array_iterator
@ -14,21 +16,40 @@ include_directories(
) )
set(MOC_SRCS) set(MOC_SRCS)
qt5_wrap_cpp(MOC_SRCS if(CMake_QT_MAJOR_VERSION VERSION_LESS 6)
qt5_wrap_cpp(MOC_SRCS
CatchShow.h CatchShow.h
) )
else()
qt_wrap_cpp(MOC_SRCS
CatchShow.h
)
endif()
add_library(CMakeGUITestLib STATIC ${MOC_SRCS} add_library(CMakeGUITestLib STATIC ${MOC_SRCS}
CatchShow.cxx CatchShow.cxx
CatchShow.h CatchShow.h
) )
target_link_libraries(CMakeGUITestLib Qt5::Core Qt5::Gui Qt5::Widgets) target_link_libraries(CMakeGUITestLib
Qt${CMake_QT_MAJOR_VERSION}::Core
Qt${CMake_QT_MAJOR_VERSION}::Gui
Qt${CMake_QT_MAJOR_VERSION}::Widgets)
set(MOC_SRCS) set(MOC_SRCS)
qt5_wrap_cpp(MOC_SRCS if(CMake_QT_MAJOR_VERSION VERSION_LESS 6)
qt5_wrap_cpp(MOC_SRCS
CMakeGUITest.h CMakeGUITest.h
) )
else()
qt_wrap_cpp(MOC_SRCS
CMakeGUITest.h
)
endif()
add_executable(CMakeGUITest CMakeGUITest.cxx ${MOC_SRCS}) add_executable(CMakeGUITest CMakeGUITest.cxx ${MOC_SRCS})
target_link_libraries(CMakeGUITest CMakeGUIMainLib CMakeGUITestLib Qt5::Core Qt5::Test Qt5::Widgets) target_link_libraries(CMakeGUITest CMakeGUIMainLib CMakeGUITestLib
Qt${CMake_QT_MAJOR_VERSION}::Core
Qt${CMake_QT_MAJOR_VERSION}::Test
Qt${CMake_QT_MAJOR_VERSION}::Widgets
)
target_compile_definitions(CMakeGUITest PRIVATE target_compile_definitions(CMakeGUITest PRIVATE
"CMakeGUITest_SOURCE_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}\"" "CMakeGUITest_SOURCE_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}\""
"CMakeGUITest_BINARY_DIR=\"${CMAKE_CURRENT_BINARY_DIR}\"" "CMakeGUITest_BINARY_DIR=\"${CMAKE_CURRENT_BINARY_DIR}\""
@ -47,11 +68,20 @@ function(add_cmake_gui_lib_test name)
cmake_parse_arguments(_t "" "" "SOURCES;MOC_SOURCES" ${ARGN}) cmake_parse_arguments(_t "" "" "SOURCES;MOC_SOURCES" ${ARGN})
set(MOC_SRCS) set(MOC_SRCS)
if(CMake_QT_MAJOR_VERSION VERSION_LESS 6)
qt5_wrap_cpp(MOC_SRCS qt5_wrap_cpp(MOC_SRCS
${_t_MOC_SOURCES} ${_t_MOC_SOURCES}
) )
else()
qt_wrap_cpp(MOC_SRCS
${_t_MOC_SOURCES}
)
endif()
add_executable(${name} ${_t_SOURCES} ${MOC_SRCS}) add_executable(${name} ${_t_SOURCES} ${MOC_SRCS})
target_link_libraries(${name} CMakeGUILib CMakeGUITestLib Qt5::Core Qt5::Test Qt5::Widgets) target_link_libraries(${name} CMakeGUILib CMakeGUITestLib
Qt${CMake_QT_MAJOR_VERSION}::Core
Qt${CMake_QT_MAJOR_VERSION}::Test
Qt${CMake_QT_MAJOR_VERSION}::Widgets)
add_test(NAME "CMakeGUILib.${name}" COMMAND ${name}) add_test(NAME "CMakeGUILib.${name}" COMMAND ${name})
endfunction() endfunction()

View File

@ -17,7 +17,9 @@ using QItemDataHash = QHash<Qt::ItemDataRole, QVariant>;
void QCMakePresetItemModelTest::initTestCase() void QCMakePresetItemModelTest::initTestCase()
{ {
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QMetaType::registerComparators<QCMakePreset>(); QMetaType::registerComparators<QCMakePreset>();
#endif
} }
void QCMakePresetItemModelTest::initTestCase_data() void QCMakePresetItemModelTest::initTestCase_data()