From bbc106599334cb46e3aeaf9ee5b1b54435dc1fa6 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Thu, 28 Jun 2018 11:20:30 +0200 Subject: tst_tumbler: replace loop with tryVerify() 'cause it's better. Change-Id: I00a538013a10a7ff3b551b9f550427f898610dbb Reviewed-by: Liang Qi --- tests/auto/controls/data/tst_tumbler.qml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/controls/data/tst_tumbler.qml b/tests/auto/controls/data/tst_tumbler.qml index 49fd78cc..d668fac0 100644 --- a/tests/auto/controls/data/tst_tumbler.qml +++ b/tests/auto/controls/data/tst_tumbler.qml @@ -279,13 +279,7 @@ TestCase { tryCompare(tumbler, "currentIndex", data.currentIndex); tumblerView = findView(tumbler); - // TODO: replace once QTBUG-19708 is fixed. - for (var delay = 1000; delay >= 0; delay -= 50) { - if (tumblerView.currentItem) - break; - wait(50); - } - verify(tumblerView.currentItem); + tryVerify(function() { return tumblerView.currentItem }); compare(tumblerView.currentIndex, data.currentIndex); compare(tumblerView.currentItem.text, data.currentIndex.toString()); -- cgit v1.2.3 From 62abe69e45a8958006b7b83cf1de6033be431eeb Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Wed, 4 Jul 2018 15:23:18 +0200 Subject: Fix qrc paths in QT_QUICK_CONTROLS_STYLE_PATH Parse the environment variable manually when the platform's list separator is ':', to avoid issues with qrc paths (which start with ':') not working. Task-number: QTBUG-68219 Change-Id: Ic71d49da5a72a37bc1d2e7b19fbf1de71b3917f3 Reviewed-by: Richard Moe Gustavsen --- tests/auto/qquickstyle/qquickstyle.pro | 8 ++ .../qquickstyle/qrcStyles1/QrcStyle1/Button.qml | 2 + .../qquickstyle/qrcStyles2/QrcStyle2/Button.qml | 2 + tests/auto/qquickstyle/tst_qquickstyle.cpp | 111 +++++++++++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml create mode 100644 tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml (limited to 'tests/auto') diff --git a/tests/auto/qquickstyle/qquickstyle.pro b/tests/auto/qquickstyle/qquickstyle.pro index da74b6cd..983e5438 100644 --- a/tests/auto/qquickstyle/qquickstyle.pro +++ b/tests/auto/qquickstyle/qquickstyle.pro @@ -10,3 +10,11 @@ QT_PRIVATE += core-private gui-private quickcontrols2-private 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 diff --git a/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml b/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml new file mode 100644 index 00000000..5b08222c --- /dev/null +++ b/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml @@ -0,0 +1,2 @@ +import QtQuick.Templates 2.0 as T +T.Button { } diff --git a/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml b/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml new file mode 100644 index 00000000..5b08222c --- /dev/null +++ b/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml @@ -0,0 +1,2 @@ +import QtQuick.Templates 2.0 as T +T.Button { } diff --git a/tests/auto/qquickstyle/tst_qquickstyle.cpp b/tests/auto/qquickstyle/tst_qquickstyle.cpp index 4a34f24a..8b2358f8 100644 --- a/tests/auto/qquickstyle/tst_qquickstyle.cpp +++ b/tests/auto/qquickstyle/tst_qquickstyle.cpp @@ -55,6 +55,8 @@ private slots: void commandLineArgument(); void environmentVariables(); void availableStyles(); + void qrcInQtQuickControlsStylePathEnvVar_data(); + void qrcInQtQuickControlsStylePathEnvVar(); private: void loadControls(); @@ -67,6 +69,7 @@ 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"); } @@ -167,6 +170,114 @@ void tst_QQuickStyle::availableStyles() } } +void tst_QQuickStyle::qrcInQtQuickControlsStylePathEnvVar_data() +{ + QTest::addColumn("environmentVariable"); + QTest::addColumn("expectedAvailableStyles"); + + const QChar listSeparator = QDir::listSeparator(); + const QStringList defaultAvailableStyles = QQuickStyle::availableStyles(); + + { + QString environmentVariable; + QDebug stream(&environmentVariable); + stream.noquote().nospace() << "/some/bogus/path/" << listSeparator + << ":/qrcStyles1"; + + QStringList expectedAvailableStyles = defaultAvailableStyles; + // We need to move the Default style to the start of the list, + // as that's what availableStyles() does. + expectedAvailableStyles.insert(1, QLatin1String("QrcStyle1")); + + QTest::addRow("%s", qPrintable(environmentVariable)) + << environmentVariable << expectedAvailableStyles; + } + + { + QString environmentVariable; + QDebug stream(&environmentVariable); + stream.noquote().nospace() << ":/qrcStyles2" << listSeparator + << "/some/bogus/path"; + + QStringList expectedAvailableStyles = defaultAvailableStyles; + expectedAvailableStyles.insert(1, QLatin1String("QrcStyle2")); + + QTest::addRow("%s", qPrintable(environmentVariable)) + << environmentVariable << expectedAvailableStyles; + } + + { + QString environmentVariable; + QDebug stream(&environmentVariable); + stream.noquote().nospace() << ":/qrcStyles1" << listSeparator + << ":/qrcStyles2" << listSeparator + << QFINDTESTDATA("data"); + + QStringList expectedAvailableStyles = defaultAvailableStyles; + expectedAvailableStyles.insert(1, QLatin1String("DummyStyle")); + expectedAvailableStyles.insert(1, QLatin1String("QrcStyle2")); + expectedAvailableStyles.insert(1, QLatin1String("QrcStyle1")); + + QTest::addRow("%s", qPrintable(environmentVariable)) + << environmentVariable << expectedAvailableStyles; + } + + { + QString environmentVariable; + QDebug stream(&environmentVariable); + stream.noquote().nospace() << QFINDTESTDATA("data") << listSeparator + << ":/qrcStyles1" << listSeparator + << ":/qrcStyles2"; + + QStringList expectedAvailableStyles = defaultAvailableStyles; + expectedAvailableStyles.insert(1, QLatin1String("QrcStyle2")); + expectedAvailableStyles.insert(1, QLatin1String("QrcStyle1")); + 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") << listSeparator + << ":/qrcStyles1" << listSeparator + << ":/qrcStyles2" << listSeparator; + + QStringList expectedAvailableStyles = defaultAvailableStyles; + expectedAvailableStyles.insert(1, QLatin1String("QrcStyle2")); + expectedAvailableStyles.insert(1, QLatin1String("QrcStyle1")); + 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)); + } +} + QTEST_MAIN(tst_QQuickStyle) #include "tst_qquickstyle.moc" -- cgit v1.2.3