Browse Source

Tests: Make CMakeGUI test build with both Qt5 and Qt6

Fixes: #26710
Alexandru Croitor 9 months ago
parent
commit
245f5ca8b3

+ 3 - 1
.gitlab/ci/configure_fedora41_makefiles_symlinked.cmake

@@ -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")

+ 1 - 0
Source/QtDialog/CMakeLists.txt

@@ -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

+ 2 - 1
Tests/CMakeGUI/CMakeGUITest.cxx

@@ -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()

+ 43 - 13
Tests/CMakeGUI/CMakeLists.txt

@@ -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()

+ 2 - 0
Tests/CMakeGUI/QCMakePresetItemModelTest.cxx

@@ -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()