Add support for blacklisting test functions

We need to have a finer grained control over the tests
we skip in our CI system. This adds a blacklisting
mechanism that allows blacklisting individual test
functions (or even test data) using a set of predefined
matching keys for the operating system and some other
relevant variables.

QTestlib will search for a file called BLACKLIST in the test
directory and parse it if found. The file contains a simple
ini style list of functions to blacklist. For details see
qtestblacklist.cpp.

Change-Id: Id3fae4b264ca99970cbf9f45bfb85fa75c1fd823
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
Lars Knoll 2014-09-15 15:39:36 +02:00
parent 23a03ebcd1
commit 10414444e1
58 changed files with 420 additions and 69 deletions

View File

@ -68,7 +68,9 @@ public:
Pass,
XFail,
Fail,
XPass
XPass,
BlacklistedPass,
BlacklistedFail
};
enum MessageTypes {

View File

@ -89,6 +89,10 @@ namespace QTest {
return "FAIL! ";
case QAbstractTestLogger::XPass:
return "XPASS ";
case QAbstractTestLogger::BlacklistedPass:
return "BPASS ";
case QAbstractTestLogger::BlacklistedFail:
return "BFAIL ";
}
return "??????";
}
@ -351,15 +355,16 @@ void QPlainTestLogger::stopLogging()
{
char buf[1024];
if (QTestLog::verboseLevel() < 0) {
qsnprintf(buf, sizeof(buf), "Totals: %d passed, %d failed, %d skipped\n",
qsnprintf(buf, sizeof(buf), "Totals: %d passed, %d failed, %d skipped, %d blacklisted\n",
QTestLog::passCount(), QTestLog::failCount(),
QTestLog::skipCount());
QTestLog::skipCount(), QTestLog::blacklistCount());
} else {
qsnprintf(buf, sizeof(buf),
"Totals: %d passed, %d failed, %d skipped\n"
"Totals: %d passed, %d failed, %d skipped, %d blacklisted\n"
"********* Finished testing of %s *********\n",
QTestLog::passCount(), QTestLog::failCount(),
QTestLog::skipCount(), QTestResult::currentTestObjectName());
QTestLog::skipCount(), QTestLog::blacklistCount(),
QTestResult::currentTestObjectName());
}
outputMessage(buf);

View File

@ -0,0 +1,201 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtTest module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qtestblacklist_p.h"
#include "qtestresult_p.h"
#include <QtTest/qtestcase.h>
#include <QtCore/qbytearray.h>
#include <QtCore/qfile.h>
#include <set>
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:
*/
// this table can be extended with new keywords as required
const char *matchedConditions[] =
{
#ifdef Q_OS_LINUX
"linux",
#endif
#ifdef Q_OS_OSX
"osx",
#endif
#ifdef Q_OS_WIN
"windows",
#endif
#ifdef Q_OS_IOS
"ios",
#endif
#ifdef Q_OS_ANDROID
"android",
#endif
#ifdef Q_OS_QNX
"qnx",
#endif
#ifdef Q_OS_WINRT
"winrt",
#endif
#ifdef Q_OS_WINCE
"wince",
#endif
#if QT_POINTER_SIZE == 8
"64bit",
#else
"32bit",
#endif
#ifdef Q_CC_GNU
"gcc",
#endif
#ifdef Q_CC_CLANG
"clang",
#endif
#ifdef Q_CC_MSVC
"msvc",
#endif
#ifdef Q_AUTOTEST_EXPORT
"developer-build",
#endif
0
};
static bool checkCondition(const QByteArray &condition)
{
QList<QByteArray> conds = condition.split(' ');
std::set<QByteArray> matches;
const char **m = matchedConditions;
while (*m) {
matches.insert(*m);
++m;
}
for (int i = 0; i < conds.size(); ++i) {
QByteArray c = conds.at(i);
bool result = c.startsWith('!');
if (result)
c = c.mid(1);
result ^= (matches.find(c) != matches.end());
if (!result)
return false;
}
return true;
}
static bool ignoreAll = false;
static std::set<QByteArray> *ignoredTests = 0;
namespace QTestPrivate {
void parseBlackList()
{
QString filename = QTest::qFindTestData(QStringLiteral("BLACKLIST"));
if (filename.isEmpty())
return;
QFile ignored(filename);
if (!ignored.open(QIODevice::ReadOnly))
return;
QByteArray function;
while (!ignored.atEnd()) {
QByteArray line = ignored.readLine().simplified();
if (line.isEmpty() || line.startsWith('#'))
continue;
if (line.startsWith('[')) {
function = line.mid(1, line.length() - 2);
continue;
}
bool condition = checkCondition(line);
if (condition) {
if (!function.size()) {
ignoreAll = true;
} else {
if (!ignoredTests)
ignoredTests = new std::set<QByteArray>;
ignoredTests->insert(function);
}
}
}
}
void checkBlackList(const char *slot, const char *data)
{
bool ignore = ignoreAll;
if (!ignore && ignoredTests) {
QByteArray s = slot;
ignore = (ignoredTests->find(s) != ignoredTests->end());
if (!ignore && data) {
s += ':';
s += data;
ignore = (ignoredTests->find(s) != ignoredTests->end());
}
}
QTestResult::setBlacklistCurrentTest(ignore);
}
}
QT_END_NAMESPACE

View File

@ -0,0 +1,67 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtTest module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QTESTBLACKLIST_P_H
#define QTESTBLACKLIST_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtTest/qtest_global.h>
QT_BEGIN_NAMESPACE
namespace QTestPrivate {
void parseBlackList();
void checkBlackList(const char *slot, const char *data);
}
QT_END_NAMESPACE
#endif

View File

@ -63,6 +63,7 @@
#include <QtTest/private/qsignaldumper_p.h>
#include <QtTest/private/qbenchmark_p.h>
#include <QtTest/private/cycle_p.h>
#include <QtTest/private/qtestblacklist_p.h>
#include <numeric>
#include <algorithm>
@ -2016,6 +2017,9 @@ static bool qInvokeTestMethod(const char *slotName, const char *data=0)
QTestResult::setSkipCurrentTest(false);
if (!data || !qstrcmp(data, table.testData(curDataIndex)->dataTag())) {
foundFunction = true;
QTestPrivate::checkBlackList(slot, dataCount ? table.testData(curDataIndex)->dataTag() : 0);
QTestDataSetter s(curDataIndex >= dataCount ? static_cast<QTestData *>(0)
: table.testData(curDataIndex));
@ -2433,6 +2437,8 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
}
#endif
QTestPrivate::parseBlackList();
QTestResult::reset();
QTEST_ASSERT(testObject);

View File

@ -84,6 +84,7 @@ namespace QTest {
int fails = 0;
int passes = 0;
int skips = 0;
int blacklists = 0;
struct IgnoreResultList
{
@ -415,6 +416,25 @@ void QTestLog::addXPass(const char *msg, const char *file, int line)
QTest::TestLoggers::addIncident(QAbstractTestLogger::XPass, msg, file, line);
}
void QTestLog::addBPass(const char *msg)
{
QTEST_ASSERT(msg);
++QTest::blacklists;
QTest::TestLoggers::addIncident(QAbstractTestLogger::BlacklistedPass, msg);
}
void QTestLog::addBFail(const char *msg, const char *file, int line)
{
QTEST_ASSERT(msg);
QTEST_ASSERT(file);
++QTest::blacklists;
QTest::TestLoggers::addIncident(QAbstractTestLogger::BlacklistedFail, msg, file, line);
}
void QTestLog::addSkip(const char *msg, const char *file, int line)
{
QTEST_ASSERT(msg);
@ -552,6 +572,11 @@ int QTestLog::skipCount()
return QTest::skips;
}
int QTestLog::blacklistCount()
{
return QTest::blacklists;
}
void QTestLog::resetCounters()
{
QTest::passes = 0;

View File

@ -72,6 +72,8 @@ public:
static void addFail(const char *msg, const char *file, int line);
static void addXFail(const char *msg, const char *file, int line);
static void addXPass(const char *msg, const char *file, int line);
static void addBPass(const char *msg);
static void addBFail(const char *msg, const char *file, int line);
static void addSkip(const char *msg, const char *file, int line);
static void addBenchmarkResult(const QBenchmarkResult &result);
@ -102,6 +104,7 @@ public:
static int passCount();
static int failCount();
static int skipCount();
static int blacklistCount();
static void resetCounters();

View File

@ -62,6 +62,7 @@ namespace QTest
static const char *currentTestObjectName = 0;
static bool failed = false;
static bool skipCurrentTest = false;
static bool blacklistCurrentTest = false;
static const char *expectFailComment = 0;
static int expectFailMode = 0;
@ -77,10 +78,16 @@ void QTestResult::reset()
QTest::expectFailComment = 0;
QTest::expectFailMode = 0;
QTest::blacklistCurrentTest = false;
QTestLog::resetCounters();
}
void QTestResult::setBlacklistCurrentTest(bool b)
{
QTest::blacklistCurrentTest = b;
}
bool QTestResult::currentTestFailed()
{
return QTest::failed;
@ -139,7 +146,10 @@ void QTestResult::finishedCurrentTestDataCleanup()
{
// If the current test hasn't failed or been skipped, then it passes.
if (!QTest::failed && !QTest::skipCurrentTest) {
QTestLog::addPass("");
if (QTest::blacklistCurrentTest)
QTestLog::addBPass("");
else
QTestLog::addPass("");
}
QTest::failed = false;
@ -290,7 +300,10 @@ void QTestResult::addFailure(const char *message, const char *file, int line)
{
clearExpectFail();
QTestLog::addFail(message, file, line);
if (QTest::blacklistCurrentTest)
QTestLog::addBFail(message, file, line);
else
QTestLog::addFail(message, file, line);
QTest::failed = true;
}

View File

@ -74,6 +74,7 @@ public:
static void finishedCurrentTestDataCleanup();
static void finishedCurrentTestFunction();
static void reset();
static void setBlacklistCurrentTest(bool b);
static void addFailure(const char *message, const char *file, int line);
static bool compare(bool success, const char *failureMsg,

View File

@ -86,6 +86,10 @@ namespace QTest {
return "fail";
case QAbstractTestLogger::XPass:
return "xpass";
case QAbstractTestLogger::BlacklistedPass:
return "bpass";
case QAbstractTestLogger::BlacklistedFail:
return "bfail";
}
return "??????";
}

View File

@ -175,6 +175,13 @@ void QXunitTestLogger::addIncident(IncidentTypes type, const char *description,
++failureCounter;
typeBuf = "fail";
break;
case QAbstractTestLogger::BlacklistedPass:
typeBuf = "bpass";
break;
case QAbstractTestLogger::BlacklistedFail:
++failureCounter;
typeBuf = "bfail";
break;
default:
typeBuf = "??????";
break;
@ -207,6 +214,13 @@ void QXunitTestLogger::addIncident(IncidentTypes type, const char *description,
if (!strcmp(oldResult, "pass")) {
overwrite = true;
}
else if (!strcmp(oldResult, "bpass")) {
overwrite = (type == QAbstractTestLogger::XPass || type == QAbstractTestLogger::Fail) || (type == QAbstractTestLogger::XFail)
|| (type == QAbstractTestLogger::BlacklistedFail);
}
else if (!strcmp(oldResult, "bfail")) {
overwrite = (type == QAbstractTestLogger::XPass || type == QAbstractTestLogger::Fail) || (type == QAbstractTestLogger::XFail);
}
else if (!strcmp(oldResult, "xfail")) {
overwrite = (type == QAbstractTestLogger::XPass || type == QAbstractTestLogger::Fail);
}

View File

@ -33,7 +33,8 @@ HEADERS = qbenchmark.h \
qtestmouse.h \
qtestspontaneevent.h \
qtestsystem.h \
qtesttouch.h
qtesttouch.h \
qtestblacklist_p.h
SOURCES = qtestcase.cpp \
qtestlog.cpp \
@ -55,7 +56,9 @@ SOURCES = qtestcase.cpp \
qtestelement.cpp \
qtestelementattribute.cpp \
qtestxunitstreamer.cpp \
qxunittestlogger.cpp
qxunittestlogger.cpp \
qtestblacklist.cpp
DEFINES *= QT_NO_CAST_TO_ASCII \
QT_NO_CAST_FROM_ASCII \
QT_NO_DATASTREAM

View File

@ -52,6 +52,7 @@
#include <float.h>
#include <qlocale.h>
#include <private/qlocale_p.h>
#include <qnumeric.h>
#if defined(Q_OS_LINUX) && !defined(__UCLIBC__)
@ -1544,6 +1545,9 @@ public:
setWinLocaleInfo(LOCALE_SSHORTDATE, m_sdate);
setWinLocaleInfo(LOCALE_SLONGDATE, m_ldate);
setWinLocaleInfo(shortTimeType(), m_time);
// make sure QLocale::system() gets updated
QLocalePrivate::updateSystemPrivate();
}
QString m_decimal, m_thousand, m_sdate, m_ldate, m_time;
@ -1567,7 +1571,11 @@ void tst_QLocale::windowsDefaultLocale()
setWinLocaleInfo(LOCALE_SLONGDATE, longDateFormat);
const QString shortTimeFormat = QStringLiteral("h^m^s");
setWinLocaleInfo(shortTimeType(), shortTimeFormat);
// make sure QLocale::system() gets updated
QLocalePrivate::updateSystemPrivate();
QLocale locale = QLocale::system();
// make sure we are seeing the system's format strings
QCOMPARE(locale.decimalPoint(), QChar('@'));
QCOMPARE(locale.groupSeparator(), QChar('?'));

View File

@ -79,9 +79,8 @@ QT_END_NAMESPACE
void tst_QDBusXmlParser::initTestCase()
{
// If the seed not initialized yet (-1), set it to 0
// otherwise abort, so we don't get unexplained test failures later.
QVERIFY(qt_qhash_seed.testAndSetRelaxed(-1, 0));
// Always initialize the hash seed to 0 to get reliable test results
qt_qhash_seed.store(0);
}
void tst_QDBusXmlParser::parsing_data()

View File

@ -9,5 +9,5 @@ QWARN : tst_Alive::alive() TEST LAGS 4 PINGS behind!
PASS : tst_Alive::alive()
PASS : tst_Alive::addMouseDClick()
PASS : tst_Alive::cleanupTestCase()
Totals: 4 passed, 0 failed, 0 skipped
Totals: 4 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Alive *********

View File

@ -5,5 +5,5 @@ PASS : tst_Assert::testNumber1()
QFATAL : tst_Assert::testNumber2() ASSERT: "false" in file tst_assert.cpp, line 66
FAIL! : tst_Assert::testNumber2() Received a fatal error.
Loc: [Unknown file(0)]
Totals: 2 passed, 1 failed, 0 skipped
Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Assert *********

View File

@ -41,5 +41,5 @@ FAIL! : tst_BadXml::failWithNoFile() failure message
SKIP : tst_BadXml::encoding() Skipped for text due to unpredictable console encoding.
Loc: [tst_badxml.cpp(139)]
PASS : tst_BadXml::cleanupTestCase()
Totals: 10 passed, 5 failed, 1 skipped
Totals: 10 passed, 5 failed, 1 skipped, 0 blacklisted
********* Finished testing of tst_BadXml *********

View File

@ -5,5 +5,5 @@ PASS : tst_BenchlibCallgrind::twoHundredMillionInstructions()
RESULT : tst_BenchlibCallgrind::twoHundredMillionInstructions():
200,000,158 instruction reads per iteration (total: 200,000,158, iterations: 1)
PASS : tst_BenchlibCallgrind::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_BenchlibCallgrind *********

View File

@ -9,5 +9,5 @@ SKIP : tst_BenchlibCounting::skippingBenchmark() This is a skipping benchmark
FAIL! : tst_BenchlibCounting::failingBenchmark() This is a failing benchmark
Loc: [tst_benchlibcounting.cpp(71)]
PASS : tst_BenchlibCounting::cleanupTestCase()
Totals: 3 passed, 1 failed, 1 skipped
Totals: 3 passed, 1 failed, 1 skipped, 0 blacklisted
********* Finished testing of tst_BenchlibCounting *********

View File

@ -23,5 +23,5 @@ PASS : tst_BenchlibEventCounter::events(100000)
RESULT : tst_BenchlibEventCounter::events():"100000":
100,000 events per iteration (total: 100,000, iterations: 1)
PASS : tst_BenchlibEventCounter::cleanupTestCase()
Totals: 9 passed, 0 failed, 0 skipped
Totals: 9 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_BenchlibEventCounter *********

View File

@ -5,7 +5,7 @@ PASS : tst_BenchlibOptions::threeEvents()
RESULT : tst_BenchlibOptions::threeEvents():
3 events per iteration (total: 3, iterations: 1)
PASS : tst_BenchlibOptions::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_BenchlibOptions *********
********* Start testing of tst_BenchlibFifteenIterations *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
@ -14,7 +14,7 @@ PASS : tst_BenchlibFifteenIterations::threeEvents()
RESULT : tst_BenchlibFifteenIterations::threeEvents():
3.0 events per iteration (total: 45, iterations: 15)
PASS : tst_BenchlibFifteenIterations::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_BenchlibFifteenIterations *********
********* Start testing of tst_BenchlibOneHundredMinimum *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
@ -23,5 +23,5 @@ PASS : tst_BenchlibOneHundredMinimum::threeEvents()
RESULT : tst_BenchlibOneHundredMinimum::threeEvents():
3.00 events per iteration (total: 192, iterations: 64)
PASS : tst_BenchlibOneHundredMinimum::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_BenchlibOneHundredMinimum *********

View File

@ -5,5 +5,5 @@ PASS : tst_BenchlibTickCounter::threeBillionTicks()
RESULT : tst_BenchlibTickCounter::threeBillionTicks():
3,000,005,772 CPU ticks per iteration (total: 3,000,005,772, iterations: 1)
PASS : tst_BenchlibTickCounter::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_BenchlibTickCounter *********

View File

@ -11,5 +11,5 @@ PASS : tst_BenchlibWalltime::qbenchmark_once()
RESULT : tst_BenchlibWalltime::qbenchmark_once():
0 msecs per iteration (total: 0, iterations: 1)
PASS : tst_BenchlibWalltime::cleanupTestCase()
Totals: 5 passed, 0 failed, 0 skipped
Totals: 5 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_BenchlibWalltime *********

View File

@ -87,5 +87,5 @@ FAIL! : tst_Cmptest::compareQImages(different format) Compared QImages differ i
FAIL! : tst_Cmptest::compareQImages(different pixels) Compared values are not the same
Loc: [tst_cmptest.cpp(380)]
PASS : tst_Cmptest::cleanupTestCase()
Totals: 11 passed, 20 failed, 0 skipped
Totals: 11 passed, 20 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Cmptest *********

View File

@ -24,5 +24,5 @@ INFO : tst_DataTable::fiveTablePasses(fiveTablePasses_data1) QVERIFY(test)
PASS : tst_DataTable::fiveTablePasses(fiveTablePasses_data1)
INFO : tst_DataTable::cleanupTestCase() entering
PASS : tst_DataTable::cleanupTestCase()
Totals: 8 passed, 0 failed, 0 skipped
Totals: 8 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_DataTable *********

View File

@ -50,5 +50,5 @@ SKIP : tst_Counting::testSkipInCleanup(skip) Skip in cleanup()
Loc: [tst_counting.cpp(244)]
PASS : tst_Counting::testSkipInCleanup(after)
PASS : tst_Counting::cleanupTestCase()
Totals: 16 passed, 8 failed, 8 skipped
Totals: 16 passed, 8 failed, 8 skipped, 0 blacklisted
********* Finished testing of tst_Counting *********

View File

@ -3,5 +3,5 @@ Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HER
PASS : tst_Crashes::initTestCase()
FAIL! : tst_Crashes::crash() Caught unhandled exception
.\qtestcase.cpp(984) : failure location
Totals: 1 passed, 1 failed, 0 skipped
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Crashes *********

View File

@ -4,5 +4,5 @@ PASS : tst_Crashes::initTestCase()
QFATAL : tst_Crashes::crash() Received signal 11
FAIL! : tst_Crashes::crash() Received a fatal error.
Loc: [Unknown file(0)]
Totals: 1 passed, 1 failed, 0 skipped
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Crashes *********

View File

@ -47,5 +47,5 @@ FAIL! : tst_DataTable::fiveIsolatedFailures(fiveIsolatedFailures_data 4) '!test
FAIL! : tst_DataTable::fiveIsolatedFailures(fiveIsolatedFailures_data 5) '!test' returned FALSE. ()
Loc: [tst_datatable.cpp(173)]
PASS : tst_DataTable::cleanupTestCase()
Totals: 21 passed, 13 failed, 0 skipped
Totals: 21 passed, 13 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_DataTable *********

View File

@ -16,5 +16,5 @@ FAIL! : tst_DateTime::qurl(empty lhs) Compared values are not the same
Loc: [tst_datetime.cpp(73)]
PASS : tst_DateTime::qurl(same urls)
PASS : tst_DateTime::cleanupTestCase()
Totals: 4 passed, 3 failed, 0 skipped
Totals: 4 passed, 3 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_DateTime *********

View File

@ -3,19 +3,19 @@ Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HER
PASS : tst_TestA::initTestCase()
PASS : tst_TestA::slotName()
PASS : tst_TestA::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_TestA *********
********* Start testing of tst_TestA *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_TestA::initTestCase()
PASS : tst_TestA::slotName()
PASS : tst_TestA::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_TestA *********
********* Start testing of tst_TestB *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_TestB::initTestCase()
PASS : tst_TestB::slotName()
PASS : tst_TestB::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_TestB *********

View File

@ -3,5 +3,5 @@ Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HER
PASS : tst_Exception::initTestCase()
FAIL! : tst_Exception::throwException() Caught unhandled exception
Loc: [/home/frederik/dev/qt/qt-src-dev/qtbase/src/testlib/qtestcase.cpp(2229)]
Totals: 1 passed, 1 failed, 0 skipped
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Exception *********

View File

@ -51,5 +51,5 @@ XPASS : tst_ExpectFail::xpassDataDrivenWithQCompare(XPass) QCOMPARE(1, 1) retur
Loc: [tst_expectfail.cpp(271)]
PASS : tst_ExpectFail::xpassDataDrivenWithQCompare(Pass)
PASS : tst_ExpectFail::cleanupTestCase()
Totals: 18 passed, 6 failed, 0 skipped
Totals: 18 passed, 6 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_ExpectFail *********

View File

@ -4,5 +4,5 @@ PASS : tst_FailCleanup::initTestCase()
PASS : tst_FailCleanup::aTestFunction()
FAIL! : tst_FailCleanup::cleanupTestCase() 'false' returned FALSE. (Fail inside cleanupTestCase)
Loc: [tst_failcleanup.cpp(59)]
Totals: 2 passed, 1 failed, 0 skipped
Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_FailCleanup *********

View File

@ -3,5 +3,5 @@ Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HER
FAIL! : tst_FailInit::initTestCase() 'false' returned FALSE. ()
Loc: [tst_failinit.cpp(55)]
PASS : tst_FailInit::cleanupTestCase()
Totals: 1 passed, 1 failed, 0 skipped
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_FailInit *********

View File

@ -2,5 +2,5 @@
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
FAIL! : tst_FailInitData::initTestCase() 'false' returned FALSE. ()
Loc: [tst_failinitdata.cpp(56)]
Totals: 0 passed, 1 failed, 0 skipped
Totals: 0 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_FailInitData *********

View File

@ -4,5 +4,5 @@ PASS : tst_FetchBogus::initTestCase()
QFATAL : tst_FetchBogus::fetchBogus(foo) QFETCH: Requested testdata 'bubu' not available, check your _data function.
FAIL! : tst_FetchBogus::fetchBogus(foo) Received a fatal error.
Loc: [Unknown file(0)]
Totals: 1 passed, 1 failed, 0 skipped
Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_FetchBogus *********

View File

@ -5,5 +5,5 @@ WARNING: FindTestData::paths() testdata testfile could not be located!
Loc: [findtestdata.cpp(154)]
PASS : FindTestData::paths()
PASS : FindTestData::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of FindTestData *********

View File

@ -28,5 +28,5 @@ FAIL! : tst_float::compareFloatTests(1e+7) Compared floats are not the same (fu
Expected (t3): 3e+07
Loc: [tst_float.cpp(109)]
PASS : tst_float::cleanupTestCase()
Totals: 4 passed, 6 failed, 0 skipped
Totals: 4 passed, 6 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_float *********

View File

@ -50,5 +50,5 @@ QDEBUG : tst_globaldata::skipSingle(2:local 2) cleanup skipSingle local 2
PASS : tst_globaldata::skipSingle(2:local 2)
QDEBUG : tst_globaldata::cleanupTestCase() cleanupTestCase cleanupTestCase (null)
PASS : tst_globaldata::cleanupTestCase()
Totals: 9 passed, 0 failed, 4 skipped
Totals: 9 passed, 0 failed, 4 skipped, 0 blacklisted
********* Finished testing of tst_globaldata *********

View File

@ -12,5 +12,5 @@ Curabitur ligula sapien, tincidunt non, euismod vitae, posuere imperdiet, leo. M
Aenean posuere, tortor sed cursus feugiat, nunc augue blandit nunc, eu sollicitudin urna dolor sagittis lacus. Donec elit libero, sodales nec, volutpat a, suscipit non, turpis. Nullam sagittis. Suspendisse pulvinar, augue ac venenatis condimentum, sem libero volutpat nibh, nec pellentesque velit pede quis nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce id purus. Ut varius tincidunt libero. Phasellus dolor. Maecenas vestibulum mollis diam. Pellentesque ut neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Loc: [tst_longstring.cpp(67)]
PASS : tst_LongString::cleanupTestCase()
Totals: 2 passed, 1 failed, 0 skipped
Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_LongString *********

View File

@ -2005,5 +2005,5 @@ QWARN : MaxWarnings::warn() 2000
QSYSTEM: MaxWarnings::warn() Maximum amount of warnings exceeded. Use -maxwarnings to override.
PASS : MaxWarnings::warn()
PASS : MaxWarnings::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of MaxWarnings *********

View File

@ -3,33 +3,33 @@ Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HER
PASS : tst_Nothing::initTestCase()
PASS : tst_Nothing::nothing()
PASS : tst_Nothing::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Nothing *********
********* Start testing of tst_Nothing *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_Nothing::initTestCase()
PASS : tst_Nothing::nothing()
PASS : tst_Nothing::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Nothing *********
********* Start testing of tst_Nothing *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_Nothing::initTestCase()
PASS : tst_Nothing::nothing()
PASS : tst_Nothing::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Nothing *********
********* Start testing of tst_Nothing *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_Nothing::initTestCase()
PASS : tst_Nothing::nothing()
PASS : tst_Nothing::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Nothing *********
********* Start testing of tst_Nothing *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_Nothing::initTestCase()
PASS : tst_Nothing::nothing()
PASS : tst_Nothing::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Nothing *********

View File

@ -7,7 +7,7 @@ PASS : tst_QExecStringList::testB(Data2)
PASS : tst_QExecStringList::testB(Data3)
PASS : tst_QExecStringList::testC()
PASS : tst_QExecStringList::cleanupTestCase()
Totals: 7 passed, 0 failed, 0 skipped
Totals: 7 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_QExecStringList *********
********* Start testing of tst_QExecStringList *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
@ -18,14 +18,14 @@ PASS : tst_QExecStringList::testB(Data2)
PASS : tst_QExecStringList::testB(Data3)
PASS : tst_QExecStringList::testC()
PASS : tst_QExecStringList::cleanupTestCase()
Totals: 7 passed, 0 failed, 0 skipped
Totals: 7 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_QExecStringList *********
********* Start testing of tst_QExecStringList *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_QExecStringList::initTestCase()
PASS : tst_QExecStringList::testA()
PASS : tst_QExecStringList::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_QExecStringList *********
********* Start testing of tst_QExecStringList *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
@ -34,19 +34,19 @@ PASS : tst_QExecStringList::testB(Data1)
PASS : tst_QExecStringList::testB(Data2)
PASS : tst_QExecStringList::testB(Data3)
PASS : tst_QExecStringList::cleanupTestCase()
Totals: 5 passed, 0 failed, 0 skipped
Totals: 5 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_QExecStringList *********
********* Start testing of tst_QExecStringList *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_QExecStringList::initTestCase()
PASS : tst_QExecStringList::testB(Data2)
PASS : tst_QExecStringList::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_QExecStringList *********
********* Start testing of tst_QExecStringList *********
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_QExecStringList::initTestCase()
PASS : tst_QExecStringList::testC()
PASS : tst_QExecStringList::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_QExecStringList *********

View File

@ -6,4 +6,4 @@ XPASS : tst_Silent::xpass() 'true' returned TRUE unexpectedly. (This test shoul
QFATAL : tst_Silent::messages() This is a fatal error message that should still appear in silent test output
FAIL! : tst_Silent::messages() Received a fatal error.
Loc: [Unknown file(0)]
Totals: 3 passed, 3 failed, 1 skipped
Totals: 3 passed, 3 failed, 1 skipped, 0 blacklisted

View File

@ -4,5 +4,5 @@ PASS : tst_SingleSkip::initTestCase()
SKIP : tst_SingleSkip::myTest() skipping test
Loc: [tst_singleskip.cpp(56)]
PASS : tst_SingleSkip::cleanupTestCase()
Totals: 2 passed, 0 failed, 1 skipped
Totals: 2 passed, 0 failed, 1 skipped, 0 blacklisted
********* Finished testing of tst_SingleSkip *********

View File

@ -10,5 +10,5 @@ SKIP : tst_Skip::singleSkip(local 1) skipping one
QDEBUG : tst_Skip::singleSkip(local 2) this line should only be reached once (true)
PASS : tst_Skip::singleSkip(local 2)
PASS : tst_Skip::cleanupTestCase()
Totals: 3 passed, 0 failed, 3 skipped
Totals: 3 passed, 0 failed, 3 skipped, 0 blacklisted
********* Finished testing of tst_Skip *********

View File

@ -4,5 +4,5 @@ PASS : tst_SkipCleanup::initTestCase()
PASS : tst_SkipCleanup::aTestFunction()
SKIP : tst_SkipCleanup::cleanupTestCase() Skip inside cleanupTestCase.
Loc: [tst_skipcleanup.cpp(59)]
Totals: 2 passed, 0 failed, 1 skipped
Totals: 2 passed, 0 failed, 1 skipped, 0 blacklisted
********* Finished testing of tst_SkipCleanup *********

View File

@ -3,5 +3,5 @@ Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HER
SKIP : tst_SkipInit::initTestCase() Skip inside initTestCase. This should skip all tests in the class.
Loc: [tst_skipinit.cpp(55)]
PASS : tst_SkipInit::cleanupTestCase()
Totals: 1 passed, 0 failed, 1 skipped
Totals: 1 passed, 0 failed, 1 skipped, 0 blacklisted
********* Finished testing of tst_SkipInit *********

View File

@ -2,5 +2,5 @@
Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
SKIP : tst_SkipInitData::initTestCase() Skip inside initTestCase_data. This should skip all tests in the class.
Loc: [tst_skipinitdata.cpp(56)]
Totals: 0 passed, 0 failed, 1 skipped
Totals: 0 passed, 0 failed, 1 skipped, 0 blacklisted
********* Finished testing of tst_SkipInitData *********

View File

@ -3,5 +3,5 @@ Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HER
PASS : tst_Sleep::initTestCase()
PASS : tst_Sleep::sleep()
PASS : tst_Sleep::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Sleep *********

View File

@ -29,5 +29,5 @@ FAIL! : tst_StrCmp::failByteArraySingleChars() Compared values are not the same
Expected (QByteArray("7")): 37
Loc: [tst_strcmp.cpp(133)]
PASS : tst_StrCmp::cleanupTestCase()
Totals: 3 passed, 5 failed, 0 skipped
Totals: 3 passed, 5 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_StrCmp *********

View File

@ -46,5 +46,5 @@ FAIL! : tst_Subtest::test3(data2) Compared values are not the same
QDEBUG : tst_Subtest::test3(data2) cleanup test3 data2
QDEBUG : tst_Subtest::cleanupTestCase() cleanupTestCase cleanupTestCase (null)
PASS : tst_Subtest::cleanupTestCase()
Totals: 7 passed, 2 failed, 0 skipped
Totals: 7 passed, 2 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Subtest *********

View File

@ -65,5 +65,5 @@ SKIP : tst_Counting::testSkipInCleanup(skip) Skip in cleanup()
PASS : tst_Counting::testSkipInCleanup(after)
INFO : tst_Counting::cleanupTestCase() entering
PASS : tst_Counting::cleanupTestCase()
Totals: 16 passed, 8 failed, 8 skipped
Totals: 16 passed, 8 failed, 8 skipped, 0 blacklisted
********* Finished testing of tst_Counting *********

View File

@ -101,5 +101,5 @@ SKIP : tst_Counting::testSkipInCleanup(skip) Skip in cleanup()
PASS : tst_Counting::testSkipInCleanup(after)
INFO : tst_Counting::cleanupTestCase() entering
PASS : tst_Counting::cleanupTestCase()
Totals: 16 passed, 8 failed, 8 skipped
Totals: 16 passed, 8 failed, 8 skipped, 0 blacklisted
********* Finished testing of tst_Counting *********

View File

@ -17,5 +17,5 @@ FAIL! : tst_VerifyExceptionThrown::testFailMyDerivedException() Expected except
FAIL! : tst_VerifyExceptionThrown::testFailNoException() Expected exception of type std::exception to be thrown but no exception caught
Loc: [tst_verifyexceptionthrown.cpp(153)]
PASS : tst_VerifyExceptionThrown::cleanupTestCase()
Totals: 5 passed, 6 failed, 0 skipped
Totals: 5 passed, 6 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_VerifyExceptionThrown *********

View File

@ -22,5 +22,5 @@ INFO : tst_Warnings::testMissingWarningsWithData(second row) Did not receive m
INFO : tst_Warnings::testMissingWarningsWithData(second row) Did not receive message: "Warning1"
FAIL! : tst_Warnings::testMissingWarningsWithData(second row) Not all expected messages were received
PASS : tst_Warnings::cleanupTestCase()
Totals: 3 passed, 4 failed, 0 skipped
Totals: 3 passed, 4 failed, 0 skipped, 0 blacklisted
********* Finished testing of tst_Warnings *********

View File

@ -22,5 +22,5 @@ PASS : tst_Xunit::testFunc6()
XPASS : tst_Xunit::testFunc7() 'true' returned TRUE unexpectedly. ()
Loc: [tst_xunit.cpp(110)]
PASS : tst_Xunit::cleanupTestCase()
Totals: 5 passed, 3 failed, 1 skipped
Totals: 5 passed, 3 failed, 1 skipped, 0 blacklisted
********* Finished testing of tst_Xunit *********