aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2021-01-11 17:36:30 +0100
committerMitch Curtis <mitch.curtis@qt.io>2021-01-13 11:33:07 +0100
commit4b66c0bd7de6063982459fe45f69278fd0519b1b (patch)
treef460843770617b2a08d4cf586be70778c6e3a22b
parent023a03e9c5d2e714b676df0c89e90f3057be52e4 (diff)
Ensure that C++ Qt Quick tests are run with all applicable styles
Since 8b534487044dfb3b464431ecb91ef4e0864af4ed, the C++ tests were only being run with the default style for the platform that they were run on. Fix this by keeping track of whether a default style is in use and checking it in the tests. Pick-to: 6.0 Change-Id: I4ddd90aba12ede83fff0d3d1002534e79fce8c87 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r--src/quickcontrols2/qquickstyle.cpp16
-rw-r--r--src/quickcontrols2/qquickstyle_p.h1
-rw-r--r--tests/auto/qquickstyle/tst_qquickstyle.cpp1
-rw-r--r--tests/auto/shared/qtest_quickcontrols.h6
4 files changed, 23 insertions, 1 deletions
diff --git a/src/quickcontrols2/qquickstyle.cpp b/src/quickcontrols2/qquickstyle.cpp
index f4e1da00..7c403529 100644
--- a/src/quickcontrols2/qquickstyle.cpp
+++ b/src/quickcontrols2/qquickstyle.cpp
@@ -184,7 +184,10 @@ struct QQuickStyleSpec
// Find the config file.
resolveConfigFilePath();
+ usingDefaultStyle = false;
+
if (style.isEmpty() || style.toLower() == QStringLiteral("default")) {
+ usingDefaultStyle = true;
style.clear();
qCDebug(lcQtQuickControlsStyle) << "no style (or Default) was specified;"
@@ -226,6 +229,7 @@ struct QQuickStyleSpec
custom = false;
resolved = false;
+ usingDefaultStyle = false;
style.clear();
fallbackStyle.clear();
fallbackMethod.clear();
@@ -250,6 +254,8 @@ struct QQuickStyleSpec
bool custom = false;
// Have we resolved the style yet?
bool resolved = false;
+ // Are we using the default style for this platform (because no style was specified)?
+ bool usingDefaultStyle = false;
// The name of the style.
QString style;
// The built-in style to use if the requested style cannot be found.
@@ -262,6 +268,11 @@ struct QQuickStyleSpec
Q_GLOBAL_STATIC(QQuickStyleSpec, styleSpec)
+/*
+ Note that most of these functions (with the exception of e.g. isResolved())
+ should not be called before the style has been resolved, as it's only after
+ that happens that they will have been set.
+*/
QString QQuickStylePrivate::style()
{
return styleSpec()->style;
@@ -287,6 +298,11 @@ bool QQuickStylePrivate::isResolved()
return styleSpec()->resolved;
}
+bool QQuickStylePrivate::isUsingDefaultStyle()
+{
+ return styleSpec()->usingDefaultStyle;
+}
+
void QQuickStylePrivate::init()
{
QQuickStyleSpec *spec = styleSpec();
diff --git a/src/quickcontrols2/qquickstyle_p.h b/src/quickcontrols2/qquickstyle_p.h
index 8d0e5a8d..31c70893 100644
--- a/src/quickcontrols2/qquickstyle_p.h
+++ b/src/quickcontrols2/qquickstyle_p.h
@@ -63,6 +63,7 @@ public:
static QString fallbackStyle();
static bool isCustomStyle();
static bool isResolved();
+ static bool isUsingDefaultStyle();
static bool exists();
static void init();
static void reset();
diff --git a/tests/auto/qquickstyle/tst_qquickstyle.cpp b/tests/auto/qquickstyle/tst_qquickstyle.cpp
index b9497500..97259051 100644
--- a/tests/auto/qquickstyle/tst_qquickstyle.cpp
+++ b/tests/auto/qquickstyle/tst_qquickstyle.cpp
@@ -137,6 +137,7 @@ void tst_QQuickStyle::configurationFile()
QVERIFY2(!object.isNull(), qPrintable(labelComponent.errorString()));
QCOMPARE(QQuickStyle::name(), expectedStyle);
+ QVERIFY(!QQuickStylePrivate::isUsingDefaultStyle());
// Test that fonts and palettes specified in configuration files are respected.
QQuickLabel *label = qobject_cast<QQuickLabel *>(object.data());
diff --git a/tests/auto/shared/qtest_quickcontrols.h b/tests/auto/shared/qtest_quickcontrols.h
index acd0304c..8eadd979 100644
--- a/tests/auto/shared/qtest_quickcontrols.h
+++ b/tests/auto/shared/qtest_quickcontrols.h
@@ -46,7 +46,11 @@
static QStringList testStyles()
{
- if (QQuickStyle::name().isEmpty())
+ // It's not enough to check if the name is empty, because since Qt 6
+ // we set an appropriate style for the platform if no style was specified.
+ // Also, we need the name check to come first, as isUsingDefaultStyle() does not do any resolving,
+ // and so its return value wouldn't be correct otherwise.
+ if (QQuickStyle::name().isEmpty() || QQuickStylePrivate::isUsingDefaultStyle())
return QQuickStylePrivate::builtInStyles();
return QStringList(QQuickStyle::name());
}