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_fedora41_common.cmake")

View File

@ -264,6 +264,7 @@ target_link_libraries(
)
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
PRIVATE
CMakeGUIMainLib

View File

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

View File

@ -1,6 +1,8 @@
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)
# QTBUG-118993: Qt uses deprecated stdext::checked_array_iterator
@ -14,21 +16,40 @@ include_directories(
)
set(MOC_SRCS)
qt5_wrap_cpp(MOC_SRCS
CatchShow.h
)
if(CMake_QT_MAJOR_VERSION VERSION_LESS 6)
qt5_wrap_cpp(MOC_SRCS
CatchShow.h
)
else()
qt_wrap_cpp(MOC_SRCS
CatchShow.h
)
endif()
add_library(CMakeGUITestLib STATIC ${MOC_SRCS}
CatchShow.cxx
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)
qt5_wrap_cpp(MOC_SRCS
CMakeGUITest.h
)
if(CMake_QT_MAJOR_VERSION VERSION_LESS 6)
qt5_wrap_cpp(MOC_SRCS
CMakeGUITest.h
)
else()
qt_wrap_cpp(MOC_SRCS
CMakeGUITest.h
)
endif()
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
"CMakeGUITest_SOURCE_DIR=\"${CMAKE_CURRENT_SOURCE_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})
set(MOC_SRCS)
qt5_wrap_cpp(MOC_SRCS
${_t_MOC_SOURCES}
)
if(CMake_QT_MAJOR_VERSION VERSION_LESS 6)
qt5_wrap_cpp(MOC_SRCS
${_t_MOC_SOURCES}
)
else()
qt_wrap_cpp(MOC_SRCS
${_t_MOC_SOURCES}
)
endif()
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})
endfunction()

View File

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