summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestblacklist.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-06-06 08:34:03 +0200
committerLiang Qi <liang.qi@qt.io>2016-06-06 09:04:55 +0200
commit57057f76add416d0faf2e09a90c126baafb6198e (patch)
tree07d54f8e5daeb3ed1161723542e94c324d745166 /src/testlib/qtestblacklist.cpp
parentdc0ae02ebc8e221f952829230c0301a718a6f10b (diff)
parentfd70978693bd92761e9989bc1c76bf83c1e8c987 (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: .qmake.conf config.tests/unix/nis/nis.cpp mkspecs/unsupported/freebsd-g++/qplatformdefs.h src/corelib/tools/qdatetime.cpp src/corelib/tools/qsimd.cpp src/corelib/tools/qsimd_p.h src/network/access/access.pri src/network/access/qnetworkreplynsurlconnectionimpl.mm src/network/access/qnetworkreplynsurlconnectionimpl_p.h src/plugins/platforms/cocoa/qnsview.mm src/plugins/printsupport/windows/qwindowsprintdevice.cpp tests/auto/corelib/kernel/qobject/tst_qobject.cpp tests/auto/network/access/qnetworkreply/BLACKLIST tests/auto/widgets/widgets/qopenglwidget/BLACKLIST Change-Id: I4b32055bbf922392ef0264fd403405416fffee57
Diffstat (limited to 'src/testlib/qtestblacklist.cpp')
-rw-r--r--src/testlib/qtestblacklist.cpp70
1 files changed, 49 insertions, 21 deletions
diff --git a/src/testlib/qtestblacklist.cpp b/src/testlib/qtestblacklist.cpp
index 4ef2dd3f67..05ad5cef5b 100644
--- a/src/testlib/qtestblacklist.cpp
+++ b/src/testlib/qtestblacklist.cpp
@@ -52,21 +52,38 @@
QT_BEGIN_NAMESPACE
/*
- The file format is simply a grouped listing of keywords
- Ungrouped entries at the beginning apply to the whole testcase
- Groups define testfunctions or specific test data to ignore.
- After the groups come a list of entries (one per line) that define
- for which platform/os combination to ignore the test result.
- All keys in a single line have to match to blacklist the test.
-
- mac
- [testFunction]
- linux
- windows 64bit
- [testfunction2:testData]
- msvc
-
- The known keys are listed below:
+ The BLACKLIST file format is a grouped listing of keywords.
+
+ Blank lines and lines starting with # are simply ignored. An initial #-line
+ referring to this documentation is kind to readers. Comments can also be used
+ to indicate the reasons for ignoring particular cases.
+
+ A key names a platform, O/S, distribution, tool-chain or architecture; a !
+ prefix reverses what it checks. A version, joined to a key (at present, only
+ for distributions and for msvc) with a hyphen, limits the key to the specific
+ version. A keyword line matches if every key on it applies to the present
+ run. Successive lines are alternate conditions for ignoring a test.
+
+ Ungrouped lines at the beginning of a file apply to the whole testcase.
+ A group starts with a [square-bracketed] identification of a test function,
+ optionally with (after a colon, the name of) a specific data set, to ignore.
+ Subsequent lines give conditions for ignoring this test.
+
+ # See qtbase/src/testlib/qtestblacklist.cpp for format
+ osx
+
+ # QTBUG-12345
+ [testFunction]
+ linux
+ windows 64bit
+
+ # Needs basic C++11 support
+ [testfunction2:testData]
+ msvc-2010
+
+ Keys are lower-case. Distribution name and version are supported if
+ QSysInfo's productType() and productVersion() return them.
+ The other known keys are listed below:
*/
static QSet<QByteArray> keywords()
@@ -148,19 +165,30 @@ static QSet<QByteArray> keywords()
return set;
}
-static bool checkCondition(const QByteArray &condition)
+static QSet<QByteArray> activeConditions()
{
- static QSet<QByteArray> matchedConditions = keywords();
- QList<QByteArray> conds = condition.split(' ');
+ QSet<QByteArray> result = keywords();
QByteArray distributionName = QSysInfo::productType().toLower().toUtf8();
QByteArray distributionRelease = QSysInfo::productVersion().toLower().toUtf8();
if (!distributionName.isEmpty()) {
- if (matchedConditions.find(distributionName) == matchedConditions.end())
- matchedConditions.insert(distributionName);
- matchedConditions.insert(distributionName + "-" + distributionRelease);
+ if (result.find(distributionName) == result.end())
+ result.insert(distributionName);
+ if (!distributionRelease.isEmpty()) {
+ QByteArray versioned = distributionName + "-" + distributionRelease;
+ if (result.find(versioned) == result.end())
+ result.insert(versioned);
+ }
}
+ return result;
+}
+
+static bool checkCondition(const QByteArray &condition)
+{
+ static const QSet<QByteArray> matchedConditions = activeConditions();
+ QList<QByteArray> conds = condition.split(' ');
+
for (int i = 0; i < conds.size(); ++i) {
QByteArray c = conds.at(i);
bool result = c.startsWith('!');