summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestblacklist.cpp
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2022-02-15 17:00:10 +0100
committerEdward Welbourne <edward.welbourne@qt.io>2022-03-14 20:16:35 +0100
commit479c95729a986fb9a6a25cdf763898cb865b61c7 (patch)
treeeba45187e69fb6908050cf78b7399cda73aeb20e /src/testlib/qtestblacklist.cpp
parentf081b2cb37e94fbf2e81013aa61da593fcba81c9 (diff)
Support global data tags in blacklisting identification of test-cases
Previously the blacklisting file format only worked with slot:data or plain slot names for the items to blacklist. However, tests with global data report themselves with the global data-row tag in the same way as function-specific ones do; and tests which have both join the two as slot(global:data) in the test output name, so the reader is apt to mistake global:data for a data tag. In any case, it is potentially desirable to be able to blacklist a function with either or both of global and local data-row tags specified. Add support for that and remove a blacklisting that was only needed due to the lack of this support. For now, make the new parameter to checkBlackLists() optional, so that qtdeclarative's qmltest framework can adapt to this change. Fixes: QTBUG-100870 Change-Id: I9125811ebdab75d3fb462ba8b60561f003426502 Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/testlib/qtestblacklist.cpp')
-rw-r--r--src/testlib/qtestblacklist.cpp53
1 files changed, 36 insertions, 17 deletions
diff --git a/src/testlib/qtestblacklist.cpp b/src/testlib/qtestblacklist.cpp
index 4e9934c80d..4ca3ec128f 100644
--- a/src/testlib/qtestblacklist.cpp
+++ b/src/testlib/qtestblacklist.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtTest module of the Qt Toolkit.
@@ -59,17 +59,25 @@ QT_BEGIN_NAMESPACE
referring to this documentation is kind to readers. Comments can also be used
to indicate the reasons for ignoring particular cases.
- The key "ci" applies only when run by COIN.
- The key "cmake" applies when Qt is built using CMake. Other keys name platforms,
- operating systems, distributions, tool-chains or architectures; 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.
+ The key "ci" applies only when run by COIN. The key "cmake" applies when Qt
+ is built using CMake. Other keys name platforms, operating systems,
+ distributions, tool-chains or architectures; 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 to
+ ignore. For data-driven tests, this identification can be narrowed by the
+ inclusion of global and local data row tags, separated from the function name
+ and each other by colons. If both global and function-specific data rows tags
+ are supplied, the global one comes first (as in the tag reported in test
+ output, albeit in parentheses after the function name). Even when a test does
+ have global and local data tags, you can omit either or both. (If a global
+ data row's name coincides with that of a local data row, some unintended
+ matches may result; try to keep your data-row tags distinct.)
+
Subsequent lines give conditions for ignoring this test.
# See qtbase/src/testlib/qtestblacklist.cpp for format
@@ -89,6 +97,9 @@ QT_BEGIN_NAMESPACE
[testfunction2:testData]
msvc-2010
+ [getFile:withProxy SSL:localhost]
+ android
+
QML test functions are identified using the following format:
<TestCase name>::<function name>:<data tag>
@@ -296,17 +307,25 @@ void parseBlackList()
}
}
-void checkBlackLists(const char *slot, const char *data)
+void checkBlackLists(const char *slot, const char *data, const char *global)
{
bool ignore = ignoreAll;
if (!ignore && ignoredTests) {
QByteArray s = slot;
- ignore = (ignoredTests->find(s) != ignoredTests->end());
+ ignore = ignoredTests->find(s) != ignoredTests->end();
if (!ignore && data) {
- s += ':';
- s += data;
- ignore = (ignoredTests->find(s) != ignoredTests->end());
+ s = (s + ':') + data;
+ ignore = ignoredTests->find(s) != ignoredTests->end();
+ }
+
+ if (!ignore && global) {
+ s = slot + ":"_qba + global;
+ ignore = ignoredTests->find(s) != ignoredTests->end();
+ if (!ignore && data) {
+ s = (s + ':') + data;
+ ignore = ignoredTests->find(s) != ignoredTests->end();
+ }
}
}