summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@qt.io>2020-10-28 10:06:54 +0100
committerKai Koehne <kai.koehne@qt.io>2020-11-04 14:25:00 +0100
commit97ece9f5186490688353a5fa6431be9ee14d7a22 (patch)
tree78c470b0ea124b37f14a8e9e1882a4c268d1365f /tests/auto
parent3101eae233f1f5031c5c814d70dedbc7986e7db8 (diff)
CMake: Port linguist macros to Qt 6
Fixes: QTBUG-87870 Change-Id: I554b0ededd59dc60fec6a18759e2a400ce594f4d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/CMakeLists.txt6
-rw-r--r--tests/auto/cmake/CMakeLists.txt65
-rw-r--r--tests/auto/cmake/linguist/CMakeLists.txt60
-rw-r--r--tests/auto/cmake/linguist/test_add_translation_macro/CMakeLists.txt14
-rw-r--r--tests/auto/cmake/linguist/test_add_translation_macro/myi18nobject.cpp (renamed from tests/auto/cmake/test_create_translation_macro/myi18nobject.cpp)17
-rw-r--r--tests/auto/cmake/linguist/test_add_translation_macro/myobject_de.ts (renamed from tests/auto/cmake/test_create_translation_macro/myobject_de.ts)4
-rw-r--r--tests/auto/cmake/linguist/test_add_translation_macro/some_dir/some_include.h (renamed from tests/auto/cmake/test_create_translation_macro/some_dir/some_include.h)4
-rw-r--r--tests/auto/cmake/linguist/test_create_translation_macro/CMakeLists.txt14
-rw-r--r--tests/auto/cmake/linguist/test_create_translation_macro/myi18nobject.cpp (renamed from tests/auto/cmake/test_add_translation_macro/myi18nobject.cpp)19
-rw-r--r--tests/auto/cmake/linguist/test_create_translation_macro/myobject_de.ts (renamed from tests/auto/cmake/test_add_translation_macro/myobject_de.ts)6
-rw-r--r--tests/auto/cmake/linguist/test_create_translation_macro/some_dir/some_include.h (renamed from tests/auto/cmake/test_add_translation_macro/some_dir/some_include.h)4
-rw-r--r--tests/auto/cmake/test_add_translation_macro/CMakeLists.txt23
-rw-r--r--tests/auto/cmake/test_create_translation_macro/CMakeLists.txt23
-rw-r--r--tests/auto/cmake/test_uiplugin_module/CMakeLists.txt7
-rw-r--r--tests/auto/cmake/test_uiplugin_via_designer/CMakeLists.txt23
15 files changed, 171 insertions, 118 deletions
diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt
index aaa32a437..63435e9eb 100644
--- a/tests/auto/CMakeLists.txt
+++ b/tests/auto/CMakeLists.txt
@@ -16,8 +16,10 @@ if(TARGET Qt::Help AND NOT CMAKE_CROSSCOMPILING)
add_subdirectory(qhelpprojectdata)
endif()
# special case begin
-#add_subdirectory(cmake)
-#add_subdirectory(installed_cmake)
+add_subdirectory(cmake)
+if (TARGET Qt::Linguist)
+ add_subdirectory(cmake/linguist)
+endif()
# special case end
if(QT_FEATURE_process AND WIN32 AND NOT CMAKE_CROSSCOMPILING)
add_subdirectory(windeployqt)
diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt
index bf69829fb..d7e981e71 100644
--- a/tests/auto/cmake/CMakeLists.txt
+++ b/tests/auto/cmake/CMakeLists.txt
@@ -1,48 +1,63 @@
+# special case skip regeneration
# This is an automatic test for the CMake configuration files.
-# To run it,
+# To run it manually,
# 1) mkdir build # Create a build directory
# 2) cd build
-# 3) cmake .. # Run cmake on this directory.
+# 3) # Run cmake on this directory
+# `$qt_prefix/bin/qt-cmake ..` or `cmake -DCMAKE_PREFIX_PATH=/path/to/qt ..`
# 4) ctest # Run ctest
+# 5) ctest -V -R test_add_translation_macro # Run single test
#
# The expected output is something like:
#
-# Start 1: test_translation_macros
-# 1/2 Test #1: test_translation_macros .......... Passed 0.98 sec
-# Start 2: test_modules
-# 2/2 Test #2: test_modules ..................... Passed 1.41 sec
+# 1/2 Test #1: test_uiplugin_module ............. Passed 6.33 sec
+# Start 4: test_uiplugin_via_designer
+# 2/2 Test #2: test_uiplugin_via_designer ....... Passed 9.32 sec
+#
#
# Note that if Qt is not installed, or if it is installed to a
# non-standard prefix, the environment variable CMAKE_PREFIX_PATH
# needs to be set to the installation prefix or build prefix of Qt
# before running these tests.
+cmake_minimum_required(VERSION 3.14)
-cmake_minimum_required(VERSION 2.8)
-
-project(qmake_cmake_files)
+project(qttools_cmake_tests)
enable_testing()
-find_package(Qt5Core REQUIRED)
-
-include("${_Qt5CTestMacros}")
+set(required_packages Core)
+set(optional_packages Widgets)
-if(NOT CMAKE_CROSSCOMPILING)
- expect_pass(test_create_translation_macro)
- expect_pass(test_add_translation_macro)
+# Setup the test when called as a completely standalone project.
+if(TARGET Qt6::Core)
+ # Tests are built as part of the qtbase build tree.
+ # Setup paths so that the Qt packages are found, similar to examples.
+ qt_internal_set_up_build_dir_package_paths()
endif()
-if (NOT NO_WIDGETS)
- test_module_includes(
- Designer QFormBuilder
- Help QHelpSearchQuery
- UiTools QUiLoader
- )
-
- expect_pass(test_uiplugin_via_designer)
- if (NOT CMAKE_VERSION VERSION_LESS 3.0)
- expect_pass(test_uiplugin_module)
+find_package(Qt6 REQUIRED COMPONENTS ${required_packages})
+find_package(Qt6 OPTIONAL_COMPONENTS ${optional_packages})
+
+# Setup common test variables which were previously set by ctest_testcase_common.prf.
+set(CMAKE_MODULES_UNDER_TEST "${required_packages}")
+foreach(qt_package ${optional_packages})
+ set(package_name "${QT_CMAKE_EXPORT_NAMESPACE}${qt_package}")
+ list(APPEND CMAKE_MODULES_UNDER_TEST "${qt_package}")
+endforeach()
+
+foreach(qt_package ${CMAKE_MODULES_UNDER_TEST})
+ if(${package_name}_FOUND)
+ set(CMAKE_${qt_package}_MODULE_MAJOR_VERSION "${${package_name}_VERSION_MAJOR}")
+ set(CMAKE_${qt_package}_MODULE_MINOR_VERSION "${${package_name}_VERSION_MINOR}")
+ set(CMAKE_${qt_package}_MODULE_PATCH_VERSION "${${package_name}_VERSION_PATCH}")
endif()
+endforeach()
+
+include("${_Qt6CTestMacros}")
+
+if (TARGET Qt6::Widgets)
+ _qt_internal_test_expect_pass(test_uiplugin_module)
+ _qt_internal_test_expect_pass(test_uiplugin_via_designer)
endif()
diff --git a/tests/auto/cmake/linguist/CMakeLists.txt b/tests/auto/cmake/linguist/CMakeLists.txt
new file mode 100644
index 000000000..354c80e3b
--- /dev/null
+++ b/tests/auto/cmake/linguist/CMakeLists.txt
@@ -0,0 +1,60 @@
+# This is an automatic test for the CMake configuration files.
+# To run it manually,
+# 1) mkdir build # Create a build directory
+# 2) cd build
+# 3) # Run cmake on this directory
+# `$qt_prefix/bin/qt-cmake ..` or `cmake -DCMAKE_PREFIX_PATH=/path/to/qt ..`
+# 4) ctest # Run ctest
+# 5) ctest -V -R test_add_translation_macro # Run single test
+#
+# The expected output is something like:
+#
+# Start 1: test_add_translation_macro
+# 1/2 Test #1: test_add_translation_macro ....... Passed 3.13 sec
+# Start 2: test_create_translation_macro
+# 2/2 Test #2: test_create_translation_macro .... Passed 3.64 sec
+#
+#
+# Note that if Qt is not installed, or if it is installed to a
+# non-standard prefix, the environment variable CMAKE_PREFIX_PATH
+# needs to be set to the installation prefix or build prefix of Qt
+# before running these tests.
+
+cmake_minimum_required(VERSION 3.14)
+
+project(qttools_cmake_tests_linguist)
+
+enable_testing()
+
+set(required_packages Core LinguistTools)
+
+# Setup the test when called as a completely standalone project.
+if(TARGET Qt6::Core)
+ # Tests are built as part of the qtbase build tree.
+ # Setup paths so that the Qt packages are found, similar to examples.
+ qt_internal_set_up_build_dir_package_paths()
+endif()
+
+find_package(Qt6 REQUIRED COMPONENTS ${required_packages})
+
+# Setup common test variables which were previously set by ctest_testcase_common.prf.
+set(CMAKE_MODULES_UNDER_TEST "${required_packages}")
+foreach(qt_package ${optional_packages})
+ set(package_name "${QT_CMAKE_EXPORT_NAMESPACE}${qt_package}")
+ list(APPEND CMAKE_MODULES_UNDER_TEST "${qt_package}")
+endforeach()
+
+foreach(qt_package ${CMAKE_MODULES_UNDER_TEST})
+ if(${package_name}_FOUND)
+ set(CMAKE_${qt_package}_MODULE_MAJOR_VERSION "${${package_name}_VERSION_MAJOR}")
+ set(CMAKE_${qt_package}_MODULE_MINOR_VERSION "${${package_name}_VERSION_MINOR}")
+ set(CMAKE_${qt_package}_MODULE_PATCH_VERSION "${${package_name}_VERSION_PATCH}")
+ endif()
+endforeach()
+
+include("${_Qt6CTestMacros}")
+
+_qt_internal_test_expect_pass(test_add_translation_macro)
+if (TARGET Qt6::lupdate)
+ _qt_internal_test_expect_pass(test_create_translation_macro)
+endif()
diff --git a/tests/auto/cmake/linguist/test_add_translation_macro/CMakeLists.txt b/tests/auto/cmake/linguist/test_add_translation_macro/CMakeLists.txt
new file mode 100644
index 000000000..becfecaea
--- /dev/null
+++ b/tests/auto/cmake/linguist/test_add_translation_macro/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.15)
+
+project(test_add_translation_macro)
+
+find_package(Qt6 COMPONENTS Core LinguistTools REQUIRED)
+
+set(my_srcs myi18nobject.cpp)
+
+include_directories("${CMAKE_CURRENT_SOURCE_DIR}/some_dir")
+
+qt_add_translation(qm_files myobject_de.ts OPTIONS -compress) # play around with OPTIONS
+
+add_executable(test_add_translation ${my_srcs} ${qm_files})
+target_link_libraries(test_add_translation Qt::Core)
diff --git a/tests/auto/cmake/test_create_translation_macro/myi18nobject.cpp b/tests/auto/cmake/linguist/test_add_translation_macro/myi18nobject.cpp
index ed51b9288..d5e4aba9d 100644
--- a/tests/auto/cmake/test_create_translation_macro/myi18nobject.cpp
+++ b/tests/auto/cmake/linguist/test_add_translation_macro/myi18nobject.cpp
@@ -26,8 +26,8 @@
**
****************************************************************************/
-#include <QDebug>
#include <QCoreApplication>
+#include <QLocale>
#include <QTranslator>
#include "some_include.h"
@@ -36,11 +36,18 @@ int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
QTranslator *myappTranslator = new QTranslator;
- QString localeName = QLocale::system().name();
- myappTranslator->load("myobject_" + localeName + ".qm", qApp->applicationDirPath());
- myappTranslator->setObjectName("myobject_" + localeName);
+
+ QLocale::setDefault(QLocale("de"));
+
+ if (!myappTranslator->load(QLocale(), "myobject", "_", qApp->applicationDirPath()))
+ qFatal("Could not load translation file!");
+
app.installTranslator(myappTranslator);
- qDebug() << QObject::tr("Hello, world!");
+ QString text = QCoreApplication::translate("main", "Hello, world!");
+ if (text != QLatin1String("Hallo, Welt!"))
+ qFatal("Translation not found!");
+
+ std::fprintf(stdout, "%s\n", qPrintable(text));
return 0;
}
diff --git a/tests/auto/cmake/test_create_translation_macro/myobject_de.ts b/tests/auto/cmake/linguist/test_add_translation_macro/myobject_de.ts
index 240ffb389..18811c2e3 100644
--- a/tests/auto/cmake/test_create_translation_macro/myobject_de.ts
+++ b/tests/auto/cmake/linguist/test_add_translation_macro/myobject_de.ts
@@ -2,11 +2,11 @@
<!DOCTYPE TS>
<TS version="2.1" language="de_DE">
<context>
- <name>QObject</name>
+ <name>main</name>
<message>
<location filename="myi18nobject.cpp" line="49"/>
<source>Hello, world!</source>
- <translation type="unfinished"></translation>
+ <translation>Hallo, Welt!</translation>
</message>
</context>
</TS>
diff --git a/tests/auto/cmake/test_create_translation_macro/some_dir/some_include.h b/tests/auto/cmake/linguist/test_add_translation_macro/some_dir/some_include.h
index 62accdf86..2f8411b45 100644
--- a/tests/auto/cmake/test_create_translation_macro/some_dir/some_include.h
+++ b/tests/auto/cmake/linguist/test_add_translation_macro/some_dir/some_include.h
@@ -29,8 +29,6 @@
#ifndef SOME_INCLUDE_H
#define SOME_INCLUDE_H
-enum {
- Non_Empty_File
-};
+enum { Non_Empty_File };
#endif
diff --git a/tests/auto/cmake/linguist/test_create_translation_macro/CMakeLists.txt b/tests/auto/cmake/linguist/test_create_translation_macro/CMakeLists.txt
new file mode 100644
index 000000000..0dff13711
--- /dev/null
+++ b/tests/auto/cmake/linguist/test_create_translation_macro/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.15)
+
+project(test_create_translation_macros)
+
+find_package(Qt6 COMPONENTS Core LinguistTools REQUIRED)
+
+set(my_srcs myi18nobject.cpp)
+
+include_directories("${CMAKE_CURRENT_SOURCE_DIR}/some_dir")
+
+qt_create_translation(qm_files ${my_srcs} myobject_de.ts OPTIONS -pro-debug) # play around with OPTIONS
+
+add_executable(myobject ${my_srcs} ${qm_files})
+target_link_libraries(myobject Qt::Core)
diff --git a/tests/auto/cmake/test_add_translation_macro/myi18nobject.cpp b/tests/auto/cmake/linguist/test_create_translation_macro/myi18nobject.cpp
index ed51b9288..c990d2f66 100644
--- a/tests/auto/cmake/test_add_translation_macro/myi18nobject.cpp
+++ b/tests/auto/cmake/linguist/test_create_translation_macro/myi18nobject.cpp
@@ -26,21 +26,26 @@
**
****************************************************************************/
-#include <QDebug>
#include <QCoreApplication>
#include <QTranslator>
-
-#include "some_include.h"
+#include <QLocale>
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
QTranslator *myappTranslator = new QTranslator;
- QString localeName = QLocale::system().name();
- myappTranslator->load("myobject_" + localeName + ".qm", qApp->applicationDirPath());
- myappTranslator->setObjectName("myobject_" + localeName);
+
+ QLocale::setDefault(QLocale("de"));
+
+ if (!myappTranslator->load(QLocale(), "myobject", "_", qApp->applicationDirPath()))
+ qFatal("Could not load translation file!");
+
app.installTranslator(myappTranslator);
- qDebug() << QObject::tr("Hello, world!");
+ QString text = QCoreApplication::translate("main", "Hello, world!");
+ if (text != QLatin1String("Hallo, Welt!"))
+ qFatal("Translation not found!");
+
+ std::fprintf(stdout, "%s\n", qPrintable(text));
return 0;
}
diff --git a/tests/auto/cmake/test_add_translation_macro/myobject_de.ts b/tests/auto/cmake/linguist/test_create_translation_macro/myobject_de.ts
index 240ffb389..f4f9f4b7b 100644
--- a/tests/auto/cmake/test_add_translation_macro/myobject_de.ts
+++ b/tests/auto/cmake/linguist/test_create_translation_macro/myobject_de.ts
@@ -2,11 +2,11 @@
<!DOCTYPE TS>
<TS version="2.1" language="de_DE">
<context>
- <name>QObject</name>
+ <name>main</name>
<message>
- <location filename="myi18nobject.cpp" line="49"/>
+ <location filename="myi18nobject.cpp" line="45"/>
<source>Hello, world!</source>
- <translation type="unfinished"></translation>
+ <translation>Hallo, Welt!</translation>
</message>
</context>
</TS>
diff --git a/tests/auto/cmake/test_add_translation_macro/some_dir/some_include.h b/tests/auto/cmake/linguist/test_create_translation_macro/some_dir/some_include.h
index 62accdf86..2f8411b45 100644
--- a/tests/auto/cmake/test_add_translation_macro/some_dir/some_include.h
+++ b/tests/auto/cmake/linguist/test_create_translation_macro/some_dir/some_include.h
@@ -29,8 +29,6 @@
#ifndef SOME_INCLUDE_H
#define SOME_INCLUDE_H
-enum {
- Non_Empty_File
-};
+enum { Non_Empty_File };
#endif
diff --git a/tests/auto/cmake/test_add_translation_macro/CMakeLists.txt b/tests/auto/cmake/test_add_translation_macro/CMakeLists.txt
deleted file mode 100644
index a9fd32cea..000000000
--- a/tests/auto/cmake/test_add_translation_macro/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-project(test_add_translation_macro)
-
-find_package(Qt5Core 5.0.0 REQUIRED)
-find_package(Qt5LinguistTools 5.0.0 REQUIRED)
-
-include_directories(
- ${Qt5Core_INCLUDE_DIRS}
-)
-
-add_definitions(${Qt5Core_DEFINITIONS})
-
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
-
-set(my_srcs myi18nobject.cpp)
-
-include_directories("${CMAKE_CURRENT_SOURCE_DIR}/some_dir")
-
-qt5_add_translation(qm_files myobject_de.ts OPTIONS -compress) # play around with OPTIONS
-
-add_executable(test_add_translation ${my_srcs} ${qm_files})
-target_link_libraries(test_add_translation ${Qt5Core_LIBRARIES})
diff --git a/tests/auto/cmake/test_create_translation_macro/CMakeLists.txt b/tests/auto/cmake/test_create_translation_macro/CMakeLists.txt
deleted file mode 100644
index 100d689c7..000000000
--- a/tests/auto/cmake/test_create_translation_macro/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-project(test_create_translation_macros)
-
-find_package(Qt5Core 5.0.0 REQUIRED)
-find_package(Qt5LinguistTools 5.0.0 REQUIRED)
-
-include_directories(
- ${Qt5Core_INCLUDE_DIRS}
-)
-
-add_definitions(${Qt5Core_DEFINITIONS})
-
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
-
-set(my_srcs myi18nobject.cpp)
-
-include_directories("${CMAKE_CURRENT_SOURCE_DIR}/some_dir")
-
-qt5_create_translation(qm_files ${my_srcs} myobject_de.ts OPTIONS -pro-debug) # play around with OPTIONS
-
-add_executable(myobject ${my_srcs} ${qm_files})
-target_link_libraries(myobject ${Qt5Core_LIBRARIES})
diff --git a/tests/auto/cmake/test_uiplugin_module/CMakeLists.txt b/tests/auto/cmake/test_uiplugin_module/CMakeLists.txt
index 062a94960..2c1998840 100644
--- a/tests/auto/cmake/test_uiplugin_module/CMakeLists.txt
+++ b/tests/auto/cmake/test_uiplugin_module/CMakeLists.txt
@@ -1,11 +1,10 @@
-cmake_minimum_required(VERSION 3.0)
+cmake_minimum_required(VERSION 3.15)
project(test_uiplugin_module)
-find_package(Qt5Widgets REQUIRED)
-find_package(Qt5UiPlugin REQUIRED)
+find_package(Qt6 COMPONENTS Widgets UiPlugin REQUIRED)
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
add_library(my_designer_plugin my_designer_plugin.cpp)
-target_link_libraries(my_designer_plugin Qt5::UiPlugin)
+target_link_libraries(my_designer_plugin Qt::UiPlugin)
diff --git a/tests/auto/cmake/test_uiplugin_via_designer/CMakeLists.txt b/tests/auto/cmake/test_uiplugin_via_designer/CMakeLists.txt
index b8edeaa8e..fc1fe6c61 100644
--- a/tests/auto/cmake/test_uiplugin_via_designer/CMakeLists.txt
+++ b/tests/auto/cmake/test_uiplugin_via_designer/CMakeLists.txt
@@ -1,25 +1,12 @@
-
-# Backward compatibility test that code prior to Qt 5.5 linking to
-# Qt5::Designer gets the required include directories for using
-# the QDesignerCustomWidgetInterface.
-
-cmake_minimum_required(VERSION 2.8.11)
+cmake_minimum_required(VERSION 3.15)
project(test_uiplugin_via_designer)
-find_package(Qt5Widgets REQUIRED)
-find_package(Qt5Xml REQUIRED)
-find_package(Qt5Designer REQUIRED)
+find_package(Qt6 COMPONENTS Widgets Xml Designer REQUIRED)
set(CMAKE_AUTOMOC ON)
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-if (NOT CMAKE_VERSION VERSION_LESS 3.0)
- set(CMAKE_HAS_INTERFACE 1)
-else()
- set(CMAKE_HAS_INTERFACE 0)
-endif()
-add_definitions(-DTEST_UIPLUGIN_USAGE_REQUIREMENTS=${CMAKE_HAS_INTERFACE})
+add_definitions(-DTEST_UIPLUGIN_USAGE_REQUIREMENTS=1)
-add_library(my_designer_plugin my_designer_plugin.cpp)
-target_link_libraries(my_designer_plugin Qt5::Designer)
+add_library(my_uiplugin_via_designer my_designer_plugin.cpp)
+target_link_libraries(my_uiplugin_via_designer Qt::Designer)