diff options
author | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2020-08-26 14:03:42 +0200 |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2020-08-26 14:03:42 +0200 |
commit | 2a054d48ef5a412d104aff0389bcaa69ba2c9878 (patch) | |
tree | 953847f836611a0b2225f2fe62808623538a9ca8 /tests/auto/qquickstyle | |
parent | 2812d380e5999733aaaf2ace2bdbd0702ce293dc (diff) | |
parent | f51b569219f4fe9ee196c92958bb5dc9f3810678 (diff) |
Merge branch 'dev' into nativestyle
Change-Id: I9999194551f71abec3731355cd746e69e2e0b187
Diffstat (limited to 'tests/auto/qquickstyle')
19 files changed, 48 insertions, 265 deletions
diff --git a/tests/auto/qquickstyle/CMakeLists.txt b/tests/auto/qquickstyle/CMakeLists.txt index 94aa7249..71e58cca 100644 --- a/tests/auto/qquickstyle/CMakeLists.txt +++ b/tests/auto/qquickstyle/CMakeLists.txt @@ -28,74 +28,29 @@ qt_add_test(tst_qquickstyle Qt::GuiPrivate Qt::QmlPrivate Qt::QuickControls2 + Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private Qt::TestPrivate TESTDATA ${test_data} ) -file(GLOB resource_glob_0 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "qrcStyles1/QrcStyle1/*.qml") -foreach(file IN LISTS resource_glob_0) - set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}") -endforeach() - -file(GLOB resource_glob_1 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "qrcStyles2/QrcStyle2/*.qml") -foreach(file IN LISTS resource_glob_1) - set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}") -endforeach() - -file(GLOB resource_glob_2 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "qrcStyles3/QrcStyle3/*.qml") -foreach(file IN LISTS resource_glob_2) - set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}") -endforeach() - -file(GLOB resource_glob_3 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "qrcStyles4/QrcStyle4/*.qml") -foreach(file IN LISTS resource_glob_3) - set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}") -endforeach() - # Resources: -set(qmake_qrcStyles1_resource_files - ${resource_glob_0} -) - -qt_add_resource(tst_qquickstyle "qmake_qrcStyles1" - PREFIX - "/" - FILES - ${qmake_qrcStyles1_resource_files} -) -set(qmake_qrcStyles2_resource_files - ${resource_glob_1} +set(qmake_custom_resource_files + "data/Custom/Label.qml" + "data/Custom/qmldir" ) -qt_add_resource(tst_qquickstyle "qmake_qrcStyles2" +qt_add_resource(tst_qquickstyle "qmake_custom" PREFIX "/" FILES - ${qmake_qrcStyles2_resource_files} -) -set(qmake_qrcStyles3_resource_files - ${resource_glob_2} + ${qmake_custom_resource_files} ) -qt_add_resource(tst_qquickstyle "qmake_qrcStyles3" - PREFIX - "/" - FILES - ${qmake_qrcStyles3_resource_files} -) -set(qmake_qrcStyles4_resource_files - ${resource_glob_3} -) - -qt_add_resource(tst_qquickstyle "qmake_qrcStyles4" - PREFIX - "/" - FILES - ${qmake_qrcStyles4_resource_files} -) +#### Keys ignored in scope 1:.:.:qquickstyle.pro:<TRUE>: +# OTHER_FILES = "data/CmdLineArgStyle/Control.qml" "data/CmdLineArgStyle/qmldir" "data/EnvVarStyle/Control.qml" "data/EnvVarStyle/qmldir" "data/EnvVarFallbackStyle/Control.qml" "data/EnvVarFallbackStyle/qmldir" ## Scopes: ##################################################################### diff --git a/tests/auto/qquickstyle/data/CmdLineArgStyle/Control.qml b/tests/auto/qquickstyle/data/CmdLineArgStyle/Control.qml new file mode 100644 index 00000000..744dcd8f --- /dev/null +++ b/tests/auto/qquickstyle/data/CmdLineArgStyle/Control.qml @@ -0,0 +1,2 @@ +import QtQuick.Templates as T +T.Label {} diff --git a/tests/auto/qquickstyle/data/CmdLineArgStyle/qmldir b/tests/auto/qquickstyle/data/CmdLineArgStyle/qmldir new file mode 100644 index 00000000..c2cc85c2 --- /dev/null +++ b/tests/auto/qquickstyle/data/CmdLineArgStyle/qmldir @@ -0,0 +1,2 @@ +module CmdLineArgStyle +Control 1.0 Control.qml diff --git a/tests/auto/qquickstyle/data/Custom/Label.qml b/tests/auto/qquickstyle/data/Custom/Label.qml new file mode 100644 index 00000000..744dcd8f --- /dev/null +++ b/tests/auto/qquickstyle/data/Custom/Label.qml @@ -0,0 +1,2 @@ +import QtQuick.Templates as T +T.Label {} diff --git a/tests/auto/qquickstyle/data/Custom/qmldir b/tests/auto/qquickstyle/data/Custom/qmldir new file mode 100644 index 00000000..08de6fa8 --- /dev/null +++ b/tests/auto/qquickstyle/data/Custom/qmldir @@ -0,0 +1,2 @@ +module Custom +Label 1.0 Label.qml diff --git a/tests/auto/qquickstyle/data/EnvVarFallbackStyle/Control.qml b/tests/auto/qquickstyle/data/EnvVarFallbackStyle/Control.qml new file mode 100644 index 00000000..744dcd8f --- /dev/null +++ b/tests/auto/qquickstyle/data/EnvVarFallbackStyle/Control.qml @@ -0,0 +1,2 @@ +import QtQuick.Templates as T +T.Label {} diff --git a/tests/auto/qquickstyle/data/EnvVarFallbackStyle/qmldir b/tests/auto/qquickstyle/data/EnvVarFallbackStyle/qmldir new file mode 100644 index 00000000..bebd8e07 --- /dev/null +++ b/tests/auto/qquickstyle/data/EnvVarFallbackStyle/qmldir @@ -0,0 +1,2 @@ +module EnvVarFallbackStyle +Control 1.0 Control.qml diff --git a/tests/auto/qquickstyle/data/EnvVarStyle/Control.qml b/tests/auto/qquickstyle/data/EnvVarStyle/Control.qml new file mode 100644 index 00000000..744dcd8f --- /dev/null +++ b/tests/auto/qquickstyle/data/EnvVarStyle/Control.qml @@ -0,0 +1,2 @@ +import QtQuick.Templates as T +T.Label {} diff --git a/tests/auto/qquickstyle/data/EnvVarStyle/qmldir b/tests/auto/qquickstyle/data/EnvVarStyle/qmldir new file mode 100644 index 00000000..42223a19 --- /dev/null +++ b/tests/auto/qquickstyle/data/EnvVarStyle/qmldir @@ -0,0 +1,2 @@ +module EnvVarStyle +Control 1.0 Control.qml diff --git a/tests/auto/qquickstyle/data/custom.conf b/tests/auto/qquickstyle/data/custom.conf index 2230b452..ac79338c 100644 --- a/tests/auto/qquickstyle/data/custom.conf +++ b/tests/auto/qquickstyle/data/custom.conf @@ -1,5 +1,5 @@ [Controls] -Style=:/Custom +Style=Custom [Custom] Font\PixelSize=3 diff --git a/tests/auto/qquickstyle/data/dependencies.qml b/tests/auto/qquickstyle/data/dependencies.qml index dac5f935..280cfd29 100644 --- a/tests/auto/qquickstyle/data/dependencies.qml +++ b/tests/auto/qquickstyle/data/dependencies.qml @@ -1,4 +1,4 @@ -import QtQuick 2.12 -import QtQuick.Controls 2.12 +import QtQuick +import QtQuick.Controls Control { } diff --git a/tests/auto/qquickstyle/data/designer/ButtonSpecifics.qml b/tests/auto/qquickstyle/data/designer/ButtonSpecifics.qml index 9faaa8b7..21226ed2 100644 --- a/tests/auto/qquickstyle/data/designer/ButtonSpecifics.qml +++ b/tests/auto/qquickstyle/data/designer/ButtonSpecifics.qml @@ -1,3 +1,3 @@ -import HelperWidgets 2.0 +import HelperWidgets ButtonSection { } diff --git a/tests/auto/qquickstyle/data/dummyStyles/DummyStyle/Button.qml b/tests/auto/qquickstyle/data/dummyStyles/DummyStyle/Button.qml index eaeeadcd..dcacc011 100644 --- a/tests/auto/qquickstyle/data/dummyStyles/DummyStyle/Button.qml +++ b/tests/auto/qquickstyle/data/dummyStyles/DummyStyle/Button.qml @@ -1,2 +1,2 @@ -import QtQuick.Templates 2.12 as T +import QtQuick.Templates as T T.Button { } diff --git a/tests/auto/qquickstyle/qquickstyle.pro b/tests/auto/qquickstyle/qquickstyle.pro index ef1dd2e0..eed434b5 100644 --- a/tests/auto/qquickstyle/qquickstyle.pro +++ b/tests/auto/qquickstyle/qquickstyle.pro @@ -11,18 +11,16 @@ include (../shared/util.pri) TESTDATA = $$PWD/data/* -qrcStyles1.files = $$files(qrcStyles1/QrcStyle1/*.qml) -qrcStyles1.prefix = / -RESOURCES += qrcStyles1 - -qrcStyles2.files = $$files(qrcStyles2/QrcStyle2/*.qml) -qrcStyles2.prefix = / -RESOURCES += qrcStyles2 - -qrcStyles3.files = $$files(qrcStyles3/QrcStyle3/*.qml) -qrcStyles3.prefix = / -RESOURCES += qrcStyles3 - -qrcStyles4.files = $$files(qrcStyles4/QrcStyle4/*.qml) -qrcStyles4.prefix = / -RESOURCES += qrcStyles4 +OTHER_FILES += \ + data/CmdLineArgStyle/Control.qml \ + data/CmdLineArgStyle/qmldir \ + data/EnvVarStyle/Control.qml \ + data/EnvVarStyle/qmldir \ + data/EnvVarFallbackStyle/Control.qml \ + data/EnvVarFallbackStyle/qmldir + +custom.files = \ + data/Custom/Label.qml \ + data/Custom/qmldir +custom.prefix = / +RESOURCES += custom diff --git a/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml b/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml deleted file mode 100644 index eaeeadcd..00000000 --- a/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml +++ /dev/null @@ -1,2 +0,0 @@ -import QtQuick.Templates 2.12 as T -T.Button { } diff --git a/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml b/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml deleted file mode 100644 index eaeeadcd..00000000 --- a/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml +++ /dev/null @@ -1,2 +0,0 @@ -import QtQuick.Templates 2.12 as T -T.Button { } diff --git a/tests/auto/qquickstyle/qrcStyles3/QrcStyle3/Button.qml b/tests/auto/qquickstyle/qrcStyles3/QrcStyle3/Button.qml deleted file mode 100644 index eaeeadcd..00000000 --- a/tests/auto/qquickstyle/qrcStyles3/QrcStyle3/Button.qml +++ /dev/null @@ -1,2 +0,0 @@ -import QtQuick.Templates 2.12 as T -T.Button { } diff --git a/tests/auto/qquickstyle/qrcStyles4/QrcStyle4/Button.qml b/tests/auto/qquickstyle/qrcStyles4/QrcStyle4/Button.qml deleted file mode 100644 index eaeeadcd..00000000 --- a/tests/auto/qquickstyle/qrcStyles4/QrcStyle4/Button.qml +++ /dev/null @@ -1,2 +0,0 @@ -import QtQuick.Templates 2.12 as T -T.Button { } diff --git a/tests/auto/qquickstyle/tst_qquickstyle.cpp b/tests/auto/qquickstyle/tst_qquickstyle.cpp index 48cc88b7..e675d335 100644 --- a/tests/auto/qquickstyle/tst_qquickstyle.cpp +++ b/tests/auto/qquickstyle/tst_qquickstyle.cpp @@ -57,11 +57,6 @@ private slots: void configurationFile(); void commandLineArgument(); void environmentVariables(); - void availableStyles(); - void qrcStylePaths_data(); - void qrcStylePaths(); - void qrcInQtQuickControlsStylePathEnvVar_data(); - void qrcInQtQuickControlsStylePathEnvVar(); private: void loadControls(); @@ -74,7 +69,6 @@ void tst_QQuickStyle::cleanup() QGuiApplicationPrivate::styleOverride.clear(); qunsetenv("QT_QUICK_CONTROLS_STYLE"); - qunsetenv("QT_QUICK_CONTROLS_STYLE_PATH"); qunsetenv("QT_QUICK_CONTROLS_FALLBACK_STYLE"); qunsetenv("QT_QUICK_CONTROLS_CONF"); } @@ -82,6 +76,7 @@ void tst_QQuickStyle::cleanup() void tst_QQuickStyle::loadControls() { QQmlEngine engine; + engine.addImportPath(dataDirectory()); QQmlComponent component(&engine); component.setData("import QtQuick 2.0; import QtQuick.Controls 2.1; Control { }", QUrl()); @@ -97,11 +92,9 @@ void tst_QQuickStyle::unloadControls() void tst_QQuickStyle::lookup() { QVERIFY(QQuickStyle::name().isEmpty()); - QVERIFY(!QQuickStyle::path().isEmpty()); - QQuickStyle::setStyle("material"); + QQuickStyle::setStyle("Material"); QCOMPARE(QQuickStyle::name(), QString("Material")); - QVERIFY(!QQuickStyle::path().isEmpty()); loadControls(); @@ -110,7 +103,6 @@ void tst_QQuickStyle::lookup() QCOMPARE(QQuickTheme::instance()->font(QQuickTheme::TextArea).pixelSize(), 16); QCOMPARE(QQuickStyle::name(), QString("Material")); - QVERIFY(!QQuickStyle::path().isEmpty()); } void tst_QQuickStyle::configurationFile_data() @@ -137,6 +129,7 @@ void tst_QQuickStyle::configurationFile() // Load a control. The import causes the configuration file to be read. QQmlEngine engine; + engine.addImportPath(":/data"); QQmlComponent labelComponent(&engine); labelComponent.setData("import QtQuick 2.0; import QtQuick.Controls 2.12; Label {}", QUrl()); @@ -144,8 +137,6 @@ void tst_QQuickStyle::configurationFile() QVERIFY2(!object.isNull(), qPrintable(labelComponent.errorString())); QCOMPARE(QQuickStyle::name(), expectedStyle); - if (!expectedPath.isEmpty()) - QCOMPARE(QQuickStyle::path(), expectedPath); // Test that fonts and palettes specified in configuration files are respected. QQuickLabel *label = qobject_cast<QQuickLabel *>(object.data()); @@ -169,179 +160,10 @@ void tst_QQuickStyle::environmentVariables() { qputenv("QT_QUICK_CONTROLS_STYLE", "EnvVarStyle"); qputenv("QT_QUICK_CONTROLS_FALLBACK_STYLE", "EnvVarFallbackStyle"); + QTest::ignoreMessage(QtWarningMsg, "QT_QUICK_CONTROLS_FALLBACK_STYLE: the specified fallback style" \ + " \"EnvVarFallbackStyle\" is not one of the built-in Qt Quick Controls 2 styles"); QCOMPARE(QQuickStyle::name(), QString("EnvVarStyle")); - QCOMPARE(QQuickStylePrivate::fallbackStyle(), QString("EnvVarFallbackStyle")); -} - -void tst_QQuickStyle::availableStyles() -{ - QString path = QFINDTESTDATA("data"); - QVERIFY(!path.isEmpty()); - - QQuickStyle::addStylePath(path); - QStringList paths = QQuickStylePrivate::stylePaths(); -#ifndef Q_OS_WIN - QVERIFY(paths.contains(path)); -#else - QVERIFY(paths.contains(path, Qt::CaseInsensitive)); -#endif - - const QStringList styles = QQuickStyle::availableStyles(); - QVERIFY(!styles.isEmpty()); - QCOMPARE(styles.first(), QString("Default")); - QVERIFY(!styles.contains("designer")); - - // QTBUG-60973 - for (const QString &style : styles) { - QVERIFY2(!style.endsWith(".dSYM"), qPrintable(style)); - } -} - -void tst_QQuickStyle::qrcStylePaths_data() -{ - QTest::addColumn<QString>("stylePath"); - QTest::addColumn<QString>("expectedStyleName"); - - QTest::addRow("qrc:/qrcStyles1") << QString::fromLatin1("qrc:/qrcStyles1") << QString::fromLatin1("QrcStyle1"); - QTest::addRow(":/qrcStyles2") << QString::fromLatin1(":/qrcStyles2") << QString::fromLatin1("QrcStyle2"); -} - -void tst_QQuickStyle::qrcStylePaths() -{ - QFETCH(QString, stylePath); - QFETCH(QString, expectedStyleName); - - QQuickStyle::addStylePath(stylePath); - - const QStringList paths = QQuickStylePrivate::stylePaths(); - QString expectedStylePath = stylePath; - if (expectedStylePath.startsWith(QLatin1String("qrc"))) - expectedStylePath.remove(0, 3); - if (!paths.contains(expectedStylePath)) { - QString message; - QDebug stream(&message); - stream.nospace() << "QQuickStylePrivate::stylePaths() doesn't contain " << expectedStylePath << ":\n" << paths; - QFAIL(qPrintable(message)); - } - - const QStringList styles = QQuickStyle::availableStyles(); - QVERIFY(!styles.isEmpty()); - if (!styles.contains(expectedStyleName)) { - QString message; - QDebug stream(&message); - stream.nospace() << "QQuickStyle::availableStyles() doesn't contain " << expectedStyleName << ":\n" << styles; - QFAIL(qPrintable(message)); - } -} - -void tst_QQuickStyle::qrcInQtQuickControlsStylePathEnvVar_data() -{ - QTest::addColumn<QString>("environmentVariable"); - QTest::addColumn<QStringList>("expectedAvailableStyles"); - - const QChar listSeparator = QDir::listSeparator(); - const QStringList defaultAvailableStyles = QQuickStyle::availableStyles(); - - { - QString environmentVariable; - QDebug stream(&environmentVariable); - // We use qrcStyles3 and qrcStyles4 in order to not conflict with - // qrcStylePaths(), since we currently have no way of clearing customStylePaths. - stream.noquote().nospace() << "/some/bogus/path/" << listSeparator - << ":/qrcStyles3"; - - QStringList expectedAvailableStyles = defaultAvailableStyles; - // We need to keep the Default style at the start of the list, - // as that's what availableStyles() does. - expectedAvailableStyles.insert(1, QLatin1String("QrcStyle3")); - - QTest::addRow("%s", qPrintable(environmentVariable)) - << environmentVariable << expectedAvailableStyles; - } - - { - QString environmentVariable; - QDebug stream(&environmentVariable); - stream.noquote().nospace() << ":/qrcStyles4" << listSeparator - << "/some/bogus/path"; - - QStringList expectedAvailableStyles = defaultAvailableStyles; - expectedAvailableStyles.insert(1, QLatin1String("QrcStyle4")); - - QTest::addRow("%s", qPrintable(environmentVariable)) - << environmentVariable << expectedAvailableStyles; - } - - { - QString environmentVariable; - QDebug stream(&environmentVariable); - stream.noquote().nospace() << ":/qrcStyles3" << listSeparator - << ":/qrcStyles4" << listSeparator - << QFINDTESTDATA("data/dummyStyles"); - - QStringList expectedAvailableStyles = defaultAvailableStyles; - expectedAvailableStyles.insert(1, QLatin1String("DummyStyle")); - expectedAvailableStyles.insert(1, QLatin1String("QrcStyle4")); - expectedAvailableStyles.insert(1, QLatin1String("QrcStyle3")); - - QTest::addRow("%s", qPrintable(environmentVariable)) - << environmentVariable << expectedAvailableStyles; - } - - { - QString environmentVariable; - QDebug stream(&environmentVariable); - stream.noquote().nospace() << QFINDTESTDATA("data/dummyStyles") << listSeparator - << ":/qrcStyles3" << listSeparator - << ":/qrcStyles4"; - - QStringList expectedAvailableStyles = defaultAvailableStyles; - expectedAvailableStyles.insert(1, QLatin1String("QrcStyle4")); - expectedAvailableStyles.insert(1, QLatin1String("QrcStyle3")); - expectedAvailableStyles.insert(1, QLatin1String("DummyStyle")); - - QTest::addRow("%s", qPrintable(environmentVariable)) - << environmentVariable << expectedAvailableStyles; - } - - { - QString environmentVariable; - QDebug stream(&environmentVariable); - // Same as the last row, except it adds a superfluous separator - // to ensure that it handles it gracefully rather than failing an assertion. - stream.noquote().nospace() << QFINDTESTDATA("data/dummyStyles") << listSeparator - << ":/qrcStyles3" << listSeparator - << ":/qrcStyles4" << listSeparator; - - QStringList expectedAvailableStyles = defaultAvailableStyles; - expectedAvailableStyles.insert(1, QLatin1String("QrcStyle4")); - expectedAvailableStyles.insert(1, QLatin1String("QrcStyle3")); - expectedAvailableStyles.insert(1, QLatin1String("DummyStyle")); - - QTest::addRow("%s", qPrintable(environmentVariable)) - << environmentVariable << expectedAvailableStyles; - } -} - -/* - Tests that qrc paths work with QT_QUICK_CONTROLS_STYLE_PATH. -*/ -void tst_QQuickStyle::qrcInQtQuickControlsStylePathEnvVar() -{ - QFETCH(QString, environmentVariable); - QFETCH(QStringList, expectedAvailableStyles); - - qputenv("QT_QUICK_CONTROLS_STYLE_PATH", environmentVariable.toLocal8Bit()); - - const QStringList availableStyles = QQuickStyle::availableStyles(); - if (availableStyles != expectedAvailableStyles) { - QString failureMessage; - QDebug stream(&failureMessage); - stream << "Mismatch in actual vs expected available styles:" - << "\n Expected:" << expectedAvailableStyles - << "\n Actual:" << availableStyles; - QFAIL(qPrintable(failureMessage)); - } + QCOMPARE(QQuickStylePrivate::fallbackStyle(), QString()); } QTEST_MAIN(tst_QQuickStyle) |