summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestblacklist.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@theqtcompany.com>2015-06-03 10:23:56 +0200
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2015-06-03 10:23:56 +0200
commite2f66f921594b7be4af4a058c959557489e86879 (patch)
treecc44931708b57bd5a761906797c7dee0360d1d6b /src/testlib/qtestblacklist.cpp
parent933bf178aab88ab5df8a68cbf02611d6d8744b1b (diff)
parent754efa57d89c62d1796e01b407e9222e67450f52 (diff)
Merge remote-tracking branch 'origin/5.5' into dev
Conflicts: src/corelib/global/qnamespace.qdoc src/corelib/io/qwindowspipereader.cpp src/corelib/io/qwindowspipereader_p.h src/corelib/statemachine/qstatemachine.cpp src/corelib/statemachine/qstatemachine_p.h src/plugins/platforms/xcb/qxcbconnection.h tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp tests/auto/tools/qmake/tst_qmake.cpp tests/manual/touch/main.cpp Change-Id: I917d694890e79ee3da7d65134b5b085e23e0dd62
Diffstat (limited to 'src/testlib/qtestblacklist.cpp')
-rw-r--r--src/testlib/qtestblacklist.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/testlib/qtestblacklist.cpp b/src/testlib/qtestblacklist.cpp
index bfeca08617..f9ce908a00 100644
--- a/src/testlib/qtestblacklist.cpp
+++ b/src/testlib/qtestblacklist.cpp
@@ -34,6 +34,7 @@
#include "qtestresult_p.h"
#include <QtTest/qtestcase.h>
+#include <QtTest/qtest.h>
#include <QtCore/qbytearray.h>
#include <QtCore/qfile.h>
#include <QtCore/qset.h>
@@ -161,6 +162,9 @@ static bool checkCondition(const QByteArray &condition)
static bool ignoreAll = false;
static std::set<QByteArray> *ignoredTests = 0;
+static std::set<QByteArray> *gpuFeatures = 0;
+
+Q_TESTLIB_EXPORT std::set<QByteArray> *(*qgpu_features_ptr)(const QString &) = 0;
namespace QTestPrivate {
@@ -196,7 +200,18 @@ void parseBlackList()
}
}
-void checkBlackList(const char *slot, const char *data)
+void parseGpuBlackList()
+{
+ if (!qgpu_features_ptr)
+ return;
+ QString filename = QTest::qFindTestData(QStringLiteral("GPU_BLACKLIST"));
+ if (filename.isEmpty())
+ return;
+ if (!gpuFeatures)
+ gpuFeatures = qgpu_features_ptr(filename);
+}
+
+void checkBlackLists(const char *slot, const char *data)
{
bool ignore = ignoreAll;
@@ -211,6 +226,16 @@ void checkBlackList(const char *slot, const char *data)
}
QTestResult::setBlacklistCurrentTest(ignore);
+
+ // Tests blacklisted in GPU_BLACKLIST are to be skipped. Just ignoring the result is
+ // not sufficient since these are expected to crash or behave in undefined ways.
+ if (!ignore && gpuFeatures) {
+ const QByteArray disableKey = QByteArrayLiteral("disable_") + QByteArray(slot);
+ if (gpuFeatures->find(disableKey) != gpuFeatures->end()) {
+ const QByteArray msg = QByteArrayLiteral("Skipped due to GPU blacklist: ") + disableKey;
+ QTest::qSkip(msg.constData(), __FILE__, __LINE__);
+ }
+ }
}
}