diff options
Diffstat (limited to 'tests/auto')
17 files changed, 365 insertions, 278 deletions
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 28d00c2a..d64c4b67 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -30,4 +30,6 @@ SUBDIRS += \ sanity \ snippets \ styleimports \ + styleimportscompiletimematerial \ + styleimportscompiletimeqmlonly \ translation diff --git a/tests/auto/shared/visualtestutil.h b/tests/auto/shared/visualtestutil.h index cbc0bade..78c625ea 100644 --- a/tests/auto/shared/visualtestutil.h +++ b/tests/auto/shared/visualtestutil.h @@ -118,9 +118,14 @@ namespace QQuickVisualTestUtil class QQuickApplicationHelper { public: - QQuickApplicationHelper(QQmlDataTest *testCase, const QString &testFilePath) : - component(&engine) + QQuickApplicationHelper(QQmlDataTest *testCase, const QString &testFilePath, + const QStringList &qmlImportPaths = QStringList()) { + for (const auto &path : qmlImportPaths) + engine.addImportPath(path); + + QQmlComponent component(&engine); + component.loadUrl(testCase->testFileUrl(testFilePath)); QObject *rootObject = component.create(); cleanup.reset(rootObject); @@ -152,7 +157,6 @@ namespace QQuickVisualTestUtil } QQmlEngine engine; - QQmlComponent component; QScopedPointer<QObject> cleanup; QQuickApplicationWindow *appWindow = nullptr; QQuickWindow *window = nullptr; diff --git a/tests/auto/styleimports/data/importImagineStyleWithoutControls.qml b/tests/auto/styleimports/data/importImagineStyleWithoutControls.qml deleted file mode 100644 index cffec326..00000000 --- a/tests/auto/styleimports/data/importImagineStyleWithoutControls.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick.Controls.Imagine - -ApplicationWindow { - title: "Test Application Window" - width: 400 - height: 400 -} diff --git a/tests/auto/styleimports/data/importUniversalStyleWithoutControls.qml b/tests/auto/styleimports/data/importUniversalStyleWithoutControls.qml deleted file mode 100644 index 9ff52d4f..00000000 --- a/tests/auto/styleimports/data/importUniversalStyleWithoutControls.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick.Controls.Universal - -ApplicationWindow { - title: "Test Application Window" - width: 400 - height: 400 -} diff --git a/tests/auto/styleimports/data/importWindowsStyleWithoutControls.qml b/tests/auto/styleimports/data/importWindowsStyleWithoutControls.qml deleted file mode 100644 index 71cb18ee..00000000 --- a/tests/auto/styleimports/data/importWindowsStyleWithoutControls.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick.Controls.Windows - -ApplicationWindow { - title: "Test Application Window" - width: 400 - height: 400 -} diff --git a/tests/auto/styleimports/data/importmacOSStyleWithoutControls.qml b/tests/auto/styleimports/data/importmacOSStyleWithoutControls.qml deleted file mode 100644 index 5e91c29f..00000000 --- a/tests/auto/styleimports/data/importmacOSStyleWithoutControls.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick.Controls.macOS - -ApplicationWindow { - title: "Test Application Window" - width: 400 - height: 400 -} diff --git a/tests/auto/styleimports/tst_styleimports.cpp b/tests/auto/styleimports/tst_styleimports.cpp index 408f06c3..5e525b0f 100644 --- a/tests/auto/styleimports/tst_styleimports.cpp +++ b/tests/auto/styleimports/tst_styleimports.cpp @@ -61,9 +61,6 @@ private slots: void platformSelectors(); - void importStyleWithoutControls_data(); - void importStyleWithoutControls(); - void fallbackStyleShouldNotOverwriteTheme_data(); void fallbackStyleShouldNotOverwriteTheme(); }; @@ -208,44 +205,6 @@ void tst_StyleImports::platformSelectors() #endif } -void tst_StyleImports::importStyleWithoutControls_data() -{ - QTest::addColumn<QString>("style"); - - const auto builtInStyles = QQuickStylePrivate::builtInStyles(); - for (const auto &styleName : builtInStyles) - QTest::addRow(qPrintable(styleName)) << styleName; -} - -// Tests that warnings are printed when trying to import a specific style without first importing QtQuick.Controls. -void tst_StyleImports::importStyleWithoutControls() -{ - QFETCH(QString, style); - - QQmlApplicationEngine engine; - const QUrl url(testFileUrl(QString::fromLatin1("import%1StyleWithoutControls.qml").arg(style))); - bool success = false; - - // Account for extra warnings for fallback styles. - QTest::ignoreMessage(QtWarningMsg, QRegularExpression("QtQuick.Controls must be imported before importing.*Basic")); - if (style == QLatin1String("macOS")) - QTest::ignoreMessage(QtWarningMsg, QRegularExpression("QtQuick.Controls must be imported before importing.*Fusion")); - - // Account for the warning for the current style. - if (style != QLatin1String("Basic")) - QTest::ignoreMessage(QtWarningMsg, QRegularExpression("QtQuick.Controls must be imported before importing.*" + style)); - - QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, - this, [url, &success](QObject *obj, const QUrl &objUrl) { - if (url == objUrl) - success = obj; - }, Qt::QueuedConnection); - - engine.load(url); - // It should load, but with warnings. - QTRY_VERIFY(success); -} - void tst_StyleImports::fallbackStyleShouldNotOverwriteTheme_data() { QTest::addColumn<QString>("style"); diff --git a/tests/auto/styleimportscompiletimematerial/CMakeLists.txt b/tests/auto/styleimportscompiletimematerial/CMakeLists.txt new file mode 100644 index 00000000..b5910e92 --- /dev/null +++ b/tests/auto/styleimportscompiletimematerial/CMakeLists.txt @@ -0,0 +1,62 @@ +# Generated from styleimports.pro. + +##################################################################### +## tst_styleimports Test: +##################################################################### + +# Collect test data +file(GLOB_RECURSE test_data_glob + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + data/*) +list(APPEND test_data ${test_data_glob}) + +qt_add_test(tst_styleimports + SOURCES + ../shared/qtest_quickcontrols.h + ../shared/util.cpp ../shared/util.h + ../shared/visualtestutil.cpp ../shared/visualtestutil.h + tst_styleimports.cpp + DEFINES + QQC2_IMPORT_PATH=\\\"${CMAKE_CURRENT_SOURCE_DIR}/../../../src/imports\\\" + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::Gui + Qt::GuiPrivate + Qt::QmlPrivate + Qt::QuickControls2 + Qt::QuickControls2Private + Qt::QuickPrivate + Qt::QuickTemplates2Private + Qt::TestPrivate + TESTDATA ${test_data} +) + +# Resources: +set(qmake_resourcestyle_resource_files + "ResourceStyle/Button.qml" + "ResourceStyle/qmldir" +) + +qt_add_resource(tst_styleimports "qmake_resourcestyle" + PREFIX + "/" + FILES + ${qmake_resourcestyle_resource_files} +) + + +#### Keys ignored in scope 1:.:.:styleimports.pro:<TRUE>: +# OTHER_FILES = "data/*.qml" "data/qmldir" "data/FileSystemStyle/*.qml" "data/FileSystemStyle/qmldir" "data/PlatformStyle/*.qml" "data/PlatformStyle/+linux/*.qml" "data/PlatformStyle/+macos/*.qml" "data/PlatformStyle/+windows/*.qml" "data/PlatformStyle/qmldir" + +## Scopes: +##################################################################### + +qt_extend_target(tst_styleimports CONDITION ANDROID OR IOS + DEFINES + QT_QMLTEST_DATADIR=\\\":/data\\\" +) + +qt_extend_target(tst_styleimports CONDITION NOT ANDROID AND NOT IOS + DEFINES + QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/data\\\" +) diff --git a/tests/auto/styleimports/data/importMaterialStyleWithoutControls.qml b/tests/auto/styleimportscompiletimematerial/data/importMaterialStyleWithoutControls.qml index b195f365..7cb4fd58 100644 --- a/tests/auto/styleimports/data/importMaterialStyleWithoutControls.qml +++ b/tests/auto/styleimportscompiletimematerial/data/importMaterialStyleWithoutControls.qml @@ -54,4 +54,11 @@ ApplicationWindow { title: "Test Application Window" width: 400 height: 400 + + property alias button: button + + Button { + id: button + text: "Material Button" + } } diff --git a/tests/auto/styleimportscompiletimematerial/styleimportscompiletimematerial.pro b/tests/auto/styleimportscompiletimematerial/styleimportscompiletimematerial.pro new file mode 100644 index 00000000..163f6bab --- /dev/null +++ b/tests/auto/styleimportscompiletimematerial/styleimportscompiletimematerial.pro @@ -0,0 +1,15 @@ +CONFIG += testcase +TARGET = tst_styleimportscompiletimematerial +SOURCES += tst_styleimportscompiletimematerial.cpp + +macos:CONFIG -= app_bundle + +QT += testlib core-private gui-private qml-private quick-private quickcontrols2-private quicktemplates2-private + +include (../shared/util.pri) + +TESTDATA = data/* + +OTHER_FILES += \ + data/*.qml + diff --git a/tests/auto/styleimportscompiletimematerial/tst_styleimportscompiletimematerial.cpp b/tests/auto/styleimportscompiletimematerial/tst_styleimportscompiletimematerial.cpp new file mode 100644 index 00000000..c0f88b31 --- /dev/null +++ b/tests/auto/styleimportscompiletimematerial/tst_styleimportscompiletimematerial.cpp @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCore/qregularexpression.h> +#include <QtTest/qtest.h> +#include <QtQml/qqmlcomponent.h> +#include <QtQml/qqmlcontext.h> +#include <QtQml/qqmlapplicationengine.h> +#include <QtQml/qqmlengine.h> +#include <QtQml/private/qqmlmetatype_p.h> +#include <QtQuick/qquickwindow.h> +#include <QtQuickControls2/qquickstyle.h> +#include <QtQuickControls2/private/qquickstyle_p.h> +#include <QtQuickTemplates2/private/qquickbutton_p.h> + +#include "../shared/util.h" +#include "../shared/visualtestutil.h" + +using namespace QQuickVisualTestUtil; + +class tst_StyleImportsCompileTimeMaterial : public QQmlDataTest +{ + Q_OBJECT + +private slots: + void importMaterialStyleWithoutControls(); +}; + +void tst_StyleImportsCompileTimeMaterial::importMaterialStyleWithoutControls() +{ + QQuickApplicationHelper helper(this, QLatin1String("importMaterialStyleWithoutControls.qml")); + QVERIFY2(helper.ready, helper.failureMessage()); + + auto button = helper.window->property("button").value<QQuickButton*>(); + QVERIFY(button); + // The Material style sets a size 14 font for Button. + QCOMPARE(button->font().pixelSize(), 14); + const QTypeRevision latestControlsRevision = QQmlMetaType::latestModuleVersion(QLatin1String("QtQuick.Controls")); + QVERIFY2(!latestControlsRevision.isValid(), "QtQuick.Controls should not be imported when using compile-time style selection"); +} + +QTEST_MAIN(tst_StyleImportsCompileTimeMaterial) + +#include "tst_styleimportscompiletimematerial.moc" diff --git a/tests/auto/styleimportscompiletimeqmlonly/CMakeLists.txt b/tests/auto/styleimportscompiletimeqmlonly/CMakeLists.txt new file mode 100644 index 00000000..b5910e92 --- /dev/null +++ b/tests/auto/styleimportscompiletimeqmlonly/CMakeLists.txt @@ -0,0 +1,62 @@ +# Generated from styleimports.pro. + +##################################################################### +## tst_styleimports Test: +##################################################################### + +# Collect test data +file(GLOB_RECURSE test_data_glob + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + data/*) +list(APPEND test_data ${test_data_glob}) + +qt_add_test(tst_styleimports + SOURCES + ../shared/qtest_quickcontrols.h + ../shared/util.cpp ../shared/util.h + ../shared/visualtestutil.cpp ../shared/visualtestutil.h + tst_styleimports.cpp + DEFINES + QQC2_IMPORT_PATH=\\\"${CMAKE_CURRENT_SOURCE_DIR}/../../../src/imports\\\" + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::Gui + Qt::GuiPrivate + Qt::QmlPrivate + Qt::QuickControls2 + Qt::QuickControls2Private + Qt::QuickPrivate + Qt::QuickTemplates2Private + Qt::TestPrivate + TESTDATA ${test_data} +) + +# Resources: +set(qmake_resourcestyle_resource_files + "ResourceStyle/Button.qml" + "ResourceStyle/qmldir" +) + +qt_add_resource(tst_styleimports "qmake_resourcestyle" + PREFIX + "/" + FILES + ${qmake_resourcestyle_resource_files} +) + + +#### Keys ignored in scope 1:.:.:styleimports.pro:<TRUE>: +# OTHER_FILES = "data/*.qml" "data/qmldir" "data/FileSystemStyle/*.qml" "data/FileSystemStyle/qmldir" "data/PlatformStyle/*.qml" "data/PlatformStyle/+linux/*.qml" "data/PlatformStyle/+macos/*.qml" "data/PlatformStyle/+windows/*.qml" "data/PlatformStyle/qmldir" + +## Scopes: +##################################################################### + +qt_extend_target(tst_styleimports CONDITION ANDROID OR IOS + DEFINES + QT_QMLTEST_DATADIR=\\\":/data\\\" +) + +qt_extend_target(tst_styleimports CONDITION NOT ANDROID AND NOT IOS + DEFINES + QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/data\\\" +) diff --git a/tests/auto/styleimports/data/importFusionStyleWithoutControls.qml b/tests/auto/styleimportscompiletimeqmlonly/data/QmlOnly/Button.qml index ba61406f..73d94c1c 100644 --- a/tests/auto/styleimports/data/importFusionStyleWithoutControls.qml +++ b/tests/auto/styleimportscompiletimeqmlonly/data/QmlOnly/Button.qml @@ -48,10 +48,36 @@ ** ****************************************************************************/ -import QtQuick.Controls.Fusion +import QtQuick +import QtQuick.Templates as T -ApplicationWindow { - title: "Test Application Window" - width: 400 - height: 400 +T.Button { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + horizontalPadding: padding + 2 + spacing: 6 + font.pixelSize: 8 + + contentItem: T.Label { + text: control.text + font: control.font + color: control.checked || control.highlighted ? control.palette.brightText : + control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText + verticalAlignment: T.Label.AlignVCenter + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: !control.flat || control.down || control.checked || control.highlighted + color: "#ccc" + border.color: control.palette.highlight + border.width: control.visualFocus ? 2 : 0 + } } diff --git a/tests/auto/styleimportscompiletimeqmlonly/data/QmlOnly/qmldir b/tests/auto/styleimportscompiletimeqmlonly/data/QmlOnly/qmldir new file mode 100644 index 00000000..5e60f095 --- /dev/null +++ b/tests/auto/styleimportscompiletimeqmlonly/data/QmlOnly/qmldir @@ -0,0 +1,3 @@ +module QmlOnly +Button 1.0 Button.qml +import QtQuick.Controls.Basic diff --git a/tests/auto/styleimports/data/importBasicStyleWithoutControls.qml b/tests/auto/styleimportscompiletimeqmlonly/data/importQmlOnlyStyleWithoutControls.qml index 40e02666..027d5636 100644 --- a/tests/auto/styleimports/data/importBasicStyleWithoutControls.qml +++ b/tests/auto/styleimportscompiletimeqmlonly/data/importQmlOnlyStyleWithoutControls.qml @@ -48,10 +48,17 @@ ** ****************************************************************************/ -import QtQuick.Controls.Basic +import QmlOnly ApplicationWindow { title: "Test Application Window" width: 400 height: 400 + + property alias button: button + + Button { + id: button + text: "QmlOnly Button" + } } diff --git a/tests/auto/styleimportscompiletimeqmlonly/styleimportscompiletimeqmlonly.pro b/tests/auto/styleimportscompiletimeqmlonly/styleimportscompiletimeqmlonly.pro new file mode 100644 index 00000000..3f3189c6 --- /dev/null +++ b/tests/auto/styleimportscompiletimeqmlonly/styleimportscompiletimeqmlonly.pro @@ -0,0 +1,17 @@ +CONFIG += testcase +TARGET = tst_styleimportscompiletimeqmlonly +SOURCES += tst_styleimportscompiletimeqmlonly.cpp + +macos:CONFIG -= app_bundle + +QT += testlib core-private gui-private qml-private quick-private quickcontrols2-private quicktemplates2-private + +include (../shared/util.pri) + +TESTDATA = data/* + +OTHER_FILES += \ + data/*.qml \ + data/QmlOnly/*.qml \ + data/QmlOnly/qmldir + diff --git a/tests/auto/styleimportscompiletimeqmlonly/tst_styleimportscompiletimeqmlonly.cpp b/tests/auto/styleimportscompiletimeqmlonly/tst_styleimportscompiletimeqmlonly.cpp new file mode 100644 index 00000000..7fd41ed9 --- /dev/null +++ b/tests/auto/styleimportscompiletimeqmlonly/tst_styleimportscompiletimeqmlonly.cpp @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCore/qregularexpression.h> +#include <QtTest/qtest.h> +#include <QtQml/qqmlcomponent.h> +#include <QtQml/qqmlcontext.h> +#include <QtQml/qqmlapplicationengine.h> +#include <QtQml/qqmlengine.h> +#include <QtQuick/qquickwindow.h> +#include <QtQuickControls2/qquickstyle.h> +#include <QtQuickControls2/private/qquickstyle_p.h> +#include <QtQuickTemplates2/private/qquickbutton_p.h> + +#include "../shared/util.h" +#include "../shared/visualtestutil.h" + +using namespace QQuickVisualTestUtil; + +class tst_StyleImportsCompileTimeQmlOnly : public QQmlDataTest +{ + Q_OBJECT + +private slots: + void importQmlOnlyStyleWithoutControls(); +}; + +void tst_StyleImportsCompileTimeQmlOnly::importQmlOnlyStyleWithoutControls() +{ + QQuickApplicationHelper helper(this, + QLatin1String("importQmlOnlyStyleWithoutControls.qml"), QStringList() << dataDirectory()); + QVERIFY2(helper.ready, helper.failureMessage()); + + auto button = helper.window->property("button").value<QQuickButton*>(); + QVERIFY(button); + QCOMPARE(button->font().pixelSize(), 8); +} + +QTEST_MAIN(tst_StyleImportsCompileTimeQmlOnly) + +#include "tst_styleimportscompiletimeqmlonly.moc" |