diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-04 18:45:18 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-12 20:58:41 +0100 |
commit | 843be43f18ecb007a0bb5fbb9034b8643a28b196 (patch) | |
tree | 107ee060136fdbf717cf9ca94f5e1deffd106901 /src | |
parent | 06ab8d790dfab32472bcc20736c7486bf43beeba (diff) |
Merge the QtTest and Qt.test.qtestroot QML modules
There is no point in having them separate and this way the plugin can be
optional.
Fixes: QTBUG-89804
Change-Id: Ic7de35f6ee7abde4840841e17d21c2b709f6db7d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Diffstat (limited to 'src')
18 files changed, 60 insertions, 133 deletions
diff --git a/src/imports/testlib/.prev_CMakeLists.txt b/src/imports/testlib/.prev_CMakeLists.txt index b7a6ff468a..787f163a84 100644 --- a/src/imports/testlib/.prev_CMakeLists.txt +++ b/src/imports/testlib/.prev_CMakeLists.txt @@ -4,32 +4,23 @@ ## qmltestplugin Plugin: ##################################################################### -qt_add_qml_module(qmltestplugin +qt_internal_add_qml_module(qmltestplugin URI "QtTest" VERSION "${CMAKE_PROJECT_VERSION}" CLASSNAME QTestQmlModule DEPENDENCIES QtQuick.Window/2.0 - GENERATE_QMLTYPES + PLUGIN_OPTIONAL SOURCES main.cpp - quicktestevent.cpp quicktestevent_p.h - quicktestresultforeign_p.h - quicktestutil.cpp quicktestutil_p.h PUBLIC_LIBRARIES Qt::Core - Qt::CorePrivate - Qt::Gui - Qt::GuiPrivate - Qt::QmlPrivate - Qt::Quick + Qt::Qml Qt::QuickTestPrivate - Qt::Test ) #### Keys ignored in scope 1:.:.:testlib.pro:<TRUE>: # CXX_MODULE = "qml" -# OTHER_FILES = "testlib.json" # QML_FILES = "TestCase.qml" "SignalSpy.qml" "testlogger.js" # QML_IMPORT_VERSION = "$$QT_VERSION" # TARGETPATH = "QtTest" @@ -45,6 +36,9 @@ set_source_files_properties(TestCase.qml PROPERTIES set_source_files_properties(SignalSpy.qml PROPERTIES QT_QML_SOURCE_VERSION "1.0" ) +set_source_files_properties(testlogger.js PROPERTIES + QT_QML_SKIP_QMLDIR_ENTRY TRUE +) qt6_target_qml_files(qmltestplugin FILES diff --git a/src/imports/testlib/CMakeLists.txt b/src/imports/testlib/CMakeLists.txt index d340823a87..1e199b947b 100644 --- a/src/imports/testlib/CMakeLists.txt +++ b/src/imports/testlib/CMakeLists.txt @@ -10,27 +10,18 @@ qt_internal_add_qml_module(qmltestplugin CLASSNAME QTestQmlModule DEPENDENCIES QtQuick.Window/2.0 - GENERATE_QMLTYPES - INSTALL_QMLTYPES + PLUGIN_OPTIONAL SOURCES main.cpp - quicktestevent.cpp quicktestevent_p.h - quicktestresultforeign_p.h - quicktestutil.cpp quicktestutil_p.h PUBLIC_LIBRARIES Qt::Core - Qt::CorePrivate Qt::Gui - Qt::GuiPrivate - Qt::QmlPrivate - Qt::Quick + Qt::Qml Qt::QuickTestPrivate - Qt::Test ) #### Keys ignored in scope 1:.:.:testlib.pro:<TRUE>: # CXX_MODULE = "qml" -# OTHER_FILES = "testlib.json" # QML_FILES = "TestCase.qml" "SignalSpy.qml" "testlogger.js" # QML_IMPORT_VERSION = "$$QT_VERSION" # TARGETPATH = "QtTest" diff --git a/src/imports/testlib/TestCase.qml b/src/imports/testlib/TestCase.qml index fd0b799399..1c9011e01e 100644 --- a/src/imports/testlib/TestCase.qml +++ b/src/imports/testlib/TestCase.qml @@ -41,7 +41,6 @@ import QtQuick 2.0 import QtQuick.Window 2.0 // used for qtest_verifyItem import QtTest 1.2 import "testlogger.js" as TestLogger -import Qt.test.qtestroot 1.0 /*! \qmltype TestCase diff --git a/src/imports/testlib/main.cpp b/src/imports/testlib/main.cpp index 83fc150e6c..8981ac0ff0 100644 --- a/src/imports/testlib/main.cpp +++ b/src/imports/testlib/main.cpp @@ -37,20 +37,8 @@ ** ****************************************************************************/ -#include "quicktestevent_p.h" -#include "quicktestutil_p.h" - #include <QtQml/qqmlextensionplugin.h> -#include <QtQml/qqml.h> -#include <QtQuickTest/quicktest.h> -#include <QtQuickTest/private/quicktestresult_p.h> -#include <QtQuickTest/private/qtestoptions_p.h> - -QML_DECLARE_TYPE(QuickTestResult) -QML_DECLARE_TYPE(QuickTestEvent) -QML_DECLARE_TYPE(QuickTestUtil) - -extern void qml_register_types_QtTest(); +#include <QtQuickTest/private/quicktestglobal_p.h> QT_BEGIN_NAMESPACE diff --git a/src/imports/testlib/qmldir b/src/imports/testlib/qmldir index 9c1e8dd61f..387374bab9 100644 --- a/src/imports/testlib/qmldir +++ b/src/imports/testlib/qmldir @@ -1,5 +1,5 @@ module QtTest -plugin qmltestplugin +optional plugin qmltestplugin classname QTestQmlModule typeinfo plugins.qmltypes TestCase 1.0 TestCase.qml diff --git a/src/imports/testlib/testlib.pro b/src/imports/testlib/testlib.pro index 2a97213e29..523be8b33e 100644 --- a/src/imports/testlib/testlib.pro +++ b/src/imports/testlib/testlib.pro @@ -3,17 +3,10 @@ TARGET = qmltestplugin TARGETPATH = QtTest QML_IMPORT_VERSION = $$QT_VERSION -QT += quick qmltest-private qml-private core-private testlib gui-private +QT = qmltest-private qml core SOURCES += \ - main.cpp \ - quicktestevent.cpp \ - quicktestutil.cpp - -HEADERS += \ - quicktestevent_p.h \ - quicktestresultforeign_p.h \ - quicktestutil_p.h + main.cpp QML_FILES = \ TestCase.qml \ @@ -21,6 +14,3 @@ QML_FILES = \ testlogger.js load(qml_plugin) - -OTHER_FILES += testlib.json -CONFIG += qmltypes install_qmltypes diff --git a/src/qmltest/.prev_CMakeLists.txt b/src/qmltest/.prev_CMakeLists.txt index f121d217ff..556bd0e5db 100644 --- a/src/qmltest/.prev_CMakeLists.txt +++ b/src/qmltest/.prev_CMakeLists.txt @@ -33,11 +33,9 @@ qt_internal_add_module(QuickTest #### Keys ignored in scope 1:.:.:qmltest.pro:<TRUE>: # MODULE_CONFIG = "$${QT.testlib.CONFIG}" # QMLTYPES_FILENAME = "plugins.qmltypes" -# QMLTYPES_INSTALL_DIR = "$$[QT_INSTALL_QML]/Qt/test/qtestroot" -# QML_IMPORT_NAME = "Qt.test.qtestroot" -# QML_IMPORT_VERSION = "1.0" -# qmldir.files = "$$PWD/qmldir" -# qmldir.path = "$$QMLTYPES_INSTALL_DIR" +# QMLTYPES_INSTALL_DIR = "$$[QT_INSTALL_QML]/QtTest" +# QML_IMPORT_NAME = "QtTest" +# QML_IMPORT_VERSION = "$$QT_VERSION" ## Scopes: ##################################################################### @@ -53,12 +51,6 @@ qt_internal_extend_target(QuickTest CONDITION QT_FEATURE_qml_debug DEFINES QT_QML_DEBUG_NO_WARNING ) - -#### Keys ignored in scope 4:.:.:qmltest.pro:prefix_build: -# INSTALLS = "qmldir" - -#### Keys ignored in scope 5:.:.:qmltest.pro:else: -# COPIES = "qmldir" qt_internal_add_docs(QuickTest doc/qtqmltest.qdocconf ) @@ -66,10 +58,10 @@ qt_internal_add_docs(QuickTest set_target_properties(QuickTest PROPERTIES QT_QML_MODULE_INSTALL_QMLTYPES TRUE - QT_QML_MODULE_VERSION 1.0 - QT_QML_MODULE_URI Qt.test.qtestroot + QT_QML_MODULE_VERSION ${CMAKE_PROJECT_VERSION} + QT_QML_MODULE_URI QtTest QT_QMLTYPES_FILENAME plugins.qmltypes - QT_QML_MODULE_INSTALL_DIR "${INSTALL_QMLDIR}/Qt/test/qtestroot" + QT_QML_MODULE_INSTALL_DIR "${INSTALL_QMLDIR}/QtTest" ) qt6_qml_type_registration(QuickTest) diff --git a/src/qmltest/CMakeLists.txt b/src/qmltest/CMakeLists.txt index 92ff99765d..dd8139af9d 100644 --- a/src/qmltest/CMakeLists.txt +++ b/src/qmltest/CMakeLists.txt @@ -11,8 +11,10 @@ qt_internal_add_module(QuickTest SOURCES qtestoptions_p.h quicktest.cpp quicktest.h quicktest_p.h - quicktestglobal.h + quicktestevent.cpp quicktestevent_p.h + quicktestglobal.h quicktestglobal_p.h quicktestresult.cpp quicktestresult_p.h + quicktestutil.cpp quicktestutil_p.h DEFINES QT_NO_FOREACH QT_NO_URL_CAST_FROM_STRING @@ -34,11 +36,9 @@ qt_internal_add_module(QuickTest #### Keys ignored in scope 1:.:.:qmltest.pro:<TRUE>: # MODULE_CONFIG = "$${QT.testlib.CONFIG}" # QMLTYPES_FILENAME = "plugins.qmltypes" -# QMLTYPES_INSTALL_DIR = "$$[QT_INSTALL_QML]/Qt/test/qtestroot" -# QML_IMPORT_NAME = "Qt.test.qtestroot" -# QML_IMPORT_VERSION = "1.0" -# qmldir.files = "$$PWD/qmldir" -# qmldir.path = "$$QMLTYPES_INSTALL_DIR" +# QMLTYPES_INSTALL_DIR = "$$[QT_INSTALL_QML]/QtTest" +# QML_IMPORT_NAME = "QtTest" +# QML_IMPORT_VERSION = "$$QT_VERSION" ## Scopes: ##################################################################### @@ -54,12 +54,6 @@ qt_internal_extend_target(QuickTest CONDITION QT_FEATURE_qml_debug DEFINES QT_QML_DEBUG_NO_WARNING ) - -#### Keys ignored in scope 4:.:.:qmltest.pro:prefix_build: -# INSTALLS = "qmldir" - -#### Keys ignored in scope 5:.:.:qmltest.pro:else: -# COPIES = "qmldir" qt_internal_add_docs(QuickTest doc/qtqmltest.qdocconf ) @@ -67,18 +61,10 @@ qt_internal_add_docs(QuickTest set_target_properties(QuickTest PROPERTIES QT_QML_MODULE_INSTALL_QMLTYPES TRUE - QT_QML_MODULE_VERSION 1.0 - QT_QML_MODULE_URI Qt.test.qtestroot + QT_QML_MODULE_VERSION ${CMAKE_PROJECT_VERSION} + QT_QML_MODULE_URI QtTest QT_QMLTYPES_FILENAME plugins.qmltypes - QT_QML_MODULE_INSTALL_DIR "${INSTALL_QMLDIR}/Qt/test/qtestroot" + QT_QML_MODULE_INSTALL_DIR "${INSTALL_QMLDIR}/QtTest" ) qt6_qml_type_registration(QuickTest) - -#special case begin -if (QT_WILL_INSTALL) - install(FILES qmldir DESTINATION "${INSTALL_QMLDIR}/Qt/test/qtestroot") -else() - file(COPY qmldir DESTINATION "${QT_BUILD_DIR}/${INSTALL_QMLDIR}/Qt/test/qtestroot") -endif() -#special case end diff --git a/src/qmltest/qmldir b/src/qmltest/qmldir deleted file mode 100644 index 5e9d5e2c95..0000000000 --- a/src/qmltest/qmldir +++ /dev/null @@ -1,2 +0,0 @@ -module Qt.test.qtestroot -typeinfo plugins.qmltypes diff --git a/src/qmltest/qmltest.pro b/src/qmltest/qmltest.pro index c2e8068fc6..2f26448707 100644 --- a/src/qmltest/qmltest.pro +++ b/src/qmltest/qmltest.pro @@ -31,14 +31,8 @@ qtConfig(qml-debug): DEFINES += QT_QML_DEBUG_NO_WARNING load(qt_module) QMLTYPES_FILENAME = plugins.qmltypes -QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/Qt/test/qtestroot -QML_IMPORT_NAME = Qt.test.qtestroot -QML_IMPORT_VERSION = 1.0 +QMLTYPES_INSTALL_DIR = $$[QT_INSTALL_QML]/QtTest +QML_IMPORT_NAME = QtTest +QML_IMPORT_VERSION = $$QT_VERSION CONFIG += qmltypes install_qmltypes install_metatypes -# Install qmldir -qmldir.files = $$PWD/qmldir -qmldir.path = $$QMLTYPES_INSTALL_DIR - -prefix_build: INSTALLS += qmldir -else: COPIES += qmldir diff --git a/src/qmltest/quicktest.cpp b/src/qmltest/quicktest.cpp index 5962af8569..9085f96337 100644 --- a/src/qmltest/quicktest.cpp +++ b/src/qmltest/quicktest.cpp @@ -133,13 +133,6 @@ bool QQuickTest::qWaitForItemPolished(const QQuickItem *item, int timeout) return QTest::qWaitFor([&]() { return !QQuickItemPrivate::get(item)->polishScheduled; }, timeout); } -static QObject *testRootObject(QQmlEngine *engine, QJSEngine *jsEngine) -{ - Q_UNUSED(engine); - Q_UNUSED(jsEngine); - return QTestRootObject::instance(); -} - static inline QString stripQuotes(const QString &s) { if (s.length() >= 2 && s.startsWith(QLatin1Char('"')) && s.endsWith(QLatin1Char('"'))) @@ -534,9 +527,6 @@ int quick_test_main_with_setup(int argc, char **argv, const char *name, const ch qputenv("QT_QTESTLIB_RUNNING", "1"); - // Register the custom factory function - qmlRegisterSingletonType<QTestRootObject>("Qt.test.qtestroot", 1, 0, "QTestRootObject", testRootObject); - QSet<QString> commandLineTestFunctions(QTest::testFunctions.cbegin(), QTest::testFunctions.cend()); const bool filteringTestFunctions = !commandLineTestFunctions.isEmpty(); @@ -594,7 +584,7 @@ int quick_test_main_with_setup(int argc, char **argv, const char *name, const ch QObject::connect(view.engine(), SIGNAL(quit()), &eventLoop, SLOT(quit())); view.rootContext()->setContextProperty - (QLatin1String("qtest"), QTestRootObject::instance()); // Deprecated. Use QTestRootObject from Qt.test.qtestroot instead + (QLatin1String("qtest"), QTestRootObject::instance()); // Deprecated. Use QTestRootObject from QtTest instead view.setObjectName(fi.baseName()); view.setTitle(view.objectName()); diff --git a/src/qmltest/quicktest_p.h b/src/qmltest/quicktest_p.h index 50fc3be050..88f56d3038 100644 --- a/src/qmltest/quicktest_p.h +++ b/src/qmltest/quicktest_p.h @@ -64,16 +64,18 @@ class QTestRootObject : public QObject Q_PROPERTY(bool windowShown READ windowShown NOTIFY windowShownChanged) Q_PROPERTY(bool hasTestCase READ hasTestCase WRITE setHasTestCase NOTIFY hasTestCaseChanged) Q_PROPERTY(QObject *defined READ defined) + QML_SINGLETON QML_ELEMENT + QML_ADDED_IN_VERSION(1, 0) public: - QTestRootObject(QObject *parent = nullptr) - : QObject(parent), hasQuit(false), m_windowShown(false), m_hasTestCase(false) { - m_defined = new QQmlPropertyMap(this); -#if defined(QT_OPENGL_ES_2_ANGLE) - m_defined->insert(QLatin1String("QT_OPENGL_ES_2_ANGLE"), QVariant(true)); -#endif + static QTestRootObject *create(QQmlEngine *q, QJSEngine *) + { + QTestRootObject *result = instance(); + QQmlEngine *engine = qmlEngine(result); + // You can only test on one engine at a time + return (engine == nullptr || engine == q) ? result : nullptr; } static QTestRootObject *instance() { @@ -103,6 +105,14 @@ private Q_SLOTS: void quit() { hasQuit = true; } private: + QTestRootObject(QObject *parent = nullptr) + : QObject(parent), hasQuit(false), m_windowShown(false), m_hasTestCase(false) { + m_defined = new QQmlPropertyMap(this); +#if defined(QT_OPENGL_ES_2_ANGLE) + m_defined->insert(QLatin1String("QT_OPENGL_ES_2_ANGLE"), QVariant(true)); +#endif + } + bool m_windowShown : 1; bool m_hasTestCase :1; QQmlPropertyMap *m_defined; diff --git a/src/imports/testlib/quicktestevent.cpp b/src/qmltest/quicktestevent.cpp index a1a707d2d6..a1a707d2d6 100644 --- a/src/imports/testlib/quicktestevent.cpp +++ b/src/qmltest/quicktestevent.cpp diff --git a/src/imports/testlib/quicktestevent_p.h b/src/qmltest/quicktestevent_p.h index 4e63a2e47e..4e63a2e47e 100644 --- a/src/imports/testlib/quicktestevent_p.h +++ b/src/qmltest/quicktestevent_p.h diff --git a/src/imports/testlib/quicktestresultforeign_p.h b/src/qmltest/quicktestglobal_p.h index e9dd12fa93..4a70c2478d 100644 --- a/src/imports/testlib/quicktestresultforeign_p.h +++ b/src/qmltest/quicktestglobal_p.h @@ -1,9 +1,9 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** -** This file is part of the test suite of the Qt Toolkit. +** This file is part of the QtQuick module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage @@ -37,8 +37,8 @@ ** ****************************************************************************/ -#ifndef QUICKTESTRESULTFOREIGN_P_H -#define QUICKTESTRESULTFOREIGN_P_H +#ifndef QUICKTESTGLOBAL_P_H +#define QUICKTESTGLOBAL_P_H // // W A R N I N G @@ -51,19 +51,11 @@ // We mean it. // -#include <QtQuickTest/private/quicktestresult_p.h> -#include <QtQml/qqml.h> +#include "quicktestglobal.h" -QT_BEGIN_NAMESPACE +#define Q_QUICK_TEST_PRIVATE_EXPORT Q_QUICK_TEST_EXPORT -struct QuickTestResultForeign -{ - Q_GADGET - QML_FOREIGN(QuickTestResult) - QML_NAMED_ELEMENT(TestResult) - QML_ADDED_IN_VERSION(1, 0) -}; +void Q_QUICK_TEST_PRIVATE_EXPORT qml_register_types_QtTest(); -QT_END_NAMESPACE -#endif // QUICKTESTRESULTFOREIGN_P_H +#endif // QUICKTESTGLOBAL_P_H diff --git a/src/qmltest/quicktestresult_p.h b/src/qmltest/quicktestresult_p.h index 7ebfb21186..54799e40aa 100644 --- a/src/qmltest/quicktestresult_p.h +++ b/src/qmltest/quicktestresult_p.h @@ -51,7 +51,7 @@ // We mean it. // -#include <QtQuickTest/quicktestglobal.h> +#include <QtQuickTest/private/quicktestglobal_p.h> #include <QtCore/qobject.h> #include <QtCore/qstring.h> #include <QtCore/qstringlist.h> @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE class QUrl; class QuickTestResultPrivate; -class Q_QUICK_TEST_EXPORT QuickTestResult : public QObject +class Q_QUICK_TEST_PRIVATE_EXPORT QuickTestResult : public QObject { Q_OBJECT Q_PROPERTY(QString testCaseName READ testCaseName WRITE setTestCaseName NOTIFY testCaseNameChanged) @@ -77,6 +77,9 @@ class Q_QUICK_TEST_EXPORT QuickTestResult : public QObject Q_PROPERTY(QStringList functionsToRun READ functionsToRun) Q_PROPERTY(QStringList tagsToRun READ tagsToRun) + QML_NAMED_ELEMENT(TestResult) + QML_ADDED_IN_VERSION(1, 0) + public: QuickTestResult(QObject *parent = nullptr); ~QuickTestResult() override; diff --git a/src/imports/testlib/quicktestutil.cpp b/src/qmltest/quicktestutil.cpp index 994c66845b..994c66845b 100644 --- a/src/imports/testlib/quicktestutil.cpp +++ b/src/qmltest/quicktestutil.cpp diff --git a/src/imports/testlib/quicktestutil_p.h b/src/qmltest/quicktestutil_p.h index 7e90c1cd1d..7e90c1cd1d 100644 --- a/src/imports/testlib/quicktestutil_p.h +++ b/src/qmltest/quicktestutil_p.h |