summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestblacklist.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-06-13 09:01:02 +0200
committerLiang Qi <liang.qi@qt.io>2016-06-13 12:46:46 +0200
commit511790fd1af1e2886a0e2e8dd4308099705cd815 (patch)
treeb42aee537a6103cd064f9f41ae2889b09b79fd23 /src/testlib/qtestblacklist.cpp
parent1542d8881fc5ccbc5918cd4acbe4091ebbd24508 (diff)
parentcbe332405aa22257d432f1797b325f5e57007c20 (diff)
Merge remote-tracking branch 'origin/5.7' into dev
Conflicts: config_help.txt configure mkspecs/features/uikit/sdk.prf src/corelib/global/qhooks.cpp src/corelib/io/qfilesystemwatcher.cpp src/corelib/io/qlockfile_unix.cpp src/corelib/tools/qalgorithms.h src/gui/kernel/qwindowsysteminterface.h src/gui/text/qtextdocument_p.cpp src/network/access/access.pri src/network/access/qnetworkaccessmanager.cpp src/network/access/qnetworkreplynsurlconnectionimpl.mm src/src.pro src/testlib/qtestcase.cpp src/widgets/kernel/qwidgetbackingstore_p.h src/widgets/styles/qwindowscestyle.cpp src/widgets/styles/qwindowsmobilestyle.cpp tests/auto/corelib/io/qdiriterator/qdiriterator.pro tests/auto/corelib/io/qfileinfo/qfileinfo.pro tests/auto/gui/kernel/qwindow/BLACKLIST tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp tools/configure/configureapp.cpp Change-Id: Ibf7fb9c8cf263a810ade82f821345d0725c57c67
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 4435b509be..1fa76a692a 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('!');