summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/qtestcase.cpp9
-rw-r--r--src/testlib/qtestresult.cpp24
-rw-r--r--src/testlib/qtestresult_p.h2
3 files changed, 19 insertions, 16 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index d94abff23c..161af0f10f 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -1518,6 +1518,7 @@ static void qInvokeTestMethodDataEntry(char *slot)
QTestResult::setCurrentTestLocation(QTestResult::CleanupFunc);
invokeMethod(QTest::currentTestObject, "cleanup()");
+ QTestResult::finishedCurrentTestDataCleanup();
QTestResult::setCurrentTestLocation(QTestResult::NoWhere);
// If this test method has a benchmark, repeat until all measurements are
@@ -1749,8 +1750,10 @@ static void qInvokeTestMethods(QObject *testObject)
QTestResult::setCurrentTestLocation(QTestResult::InitFunc);
invokeMethod(testObject, "initTestCase()");
- // finishedCurrentTestFunction() resets QTestResult::testFailed(), so use a local copy.
- const bool previousFailed = QTestResult::testFailed();
+ // finishedCurrentTestDataCleanup() resets QTestResult::currentTestFailed(), so use a local copy.
+ const bool previousFailed = QTestResult::currentTestFailed();
+ QTestResult::finishedCurrentTestData();
+ QTestResult::finishedCurrentTestDataCleanup();
QTestResult::finishedCurrentTestFunction();
if (!QTestResult::skipCurrentTest() && !previousFailed) {
@@ -1782,6 +1785,8 @@ static void qInvokeTestMethods(QObject *testObject)
QTestResult::setSkipCurrentTest(false);
QTestResult::setCurrentTestFunction("cleanupTestCase");
invokeMethod(testObject, "cleanupTestCase()");
+ QTestResult::finishedCurrentTestData();
+ QTestResult::finishedCurrentTestDataCleanup();
}
QTestResult::finishedCurrentTestFunction();
QTestResult::setCurrentTestFunction(0);
diff --git a/src/testlib/qtestresult.cpp b/src/testlib/qtestresult.cpp
index c49c7aefe3..cfa85eb065 100644
--- a/src/testlib/qtestresult.cpp
+++ b/src/testlib/qtestresult.cpp
@@ -58,7 +58,6 @@ namespace QTest
static const char *currentTestFunc = 0;
static const char *currentTestObjectName = 0;
static bool failed = false;
- static bool dataFailed = false;
static bool skipCurrentTest = false;
static QTestResult::TestLocation location = QTestResult::NoWhere;
@@ -75,7 +74,6 @@ void QTestResult::reset()
QTest::currentTestFunc = 0;
QTest::currentTestObjectName = 0;
QTest::failed = false;
- QTest::dataFailed = false;
QTest::location = QTestResult::NoWhere;
QTest::expectFailComment = 0;
@@ -86,7 +84,7 @@ void QTestResult::reset()
bool QTestResult::currentTestFailed()
{
- return QTest::dataFailed;
+ return QTest::failed;
}
QTestData *QTestResult::currentGlobalTestData()
@@ -107,7 +105,7 @@ void QTestResult::setCurrentGlobalTestData(QTestData *data)
void QTestResult::setCurrentTestData(QTestData *data)
{
QTest::currentTestData = data;
- QTest::dataFailed = false;
+ QTest::failed = false;
}
void QTestResult::setCurrentTestFunction(const char *func)
@@ -133,21 +131,27 @@ void QTestResult::finishedCurrentTestData()
addFailure("QEXPECT_FAIL was called without any subsequent verification statements", 0, 0);
clearExpectFail();
- if (!QTest::dataFailed && QTestLog::unhandledIgnoreMessages()) {
+ if (!QTest::failed && QTestLog::unhandledIgnoreMessages()) {
QTestLog::printUnhandledIgnoreMessages();
addFailure("Not all expected messages were received", 0, 0);
}
QTestLog::clearIgnoreMessages();
}
-void QTestResult::finishedCurrentTestFunction()
+void QTestResult::finishedCurrentTestDataCleanup()
{
+ // If the current test hasn't failed or been skipped, then it passes.
if (!QTest::failed && !QTest::skipCurrentTest) {
QTestLog::addPass("");
}
+
+ QTest::failed = false;
+}
+
+void QTestResult::finishedCurrentTestFunction()
+{
QTest::currentTestFunc = 0;
QTest::failed = false;
- QTest::dataFailed = false;
QTest::location = NoWhere;
QTestLog::leaveTestFunction();
@@ -276,7 +280,6 @@ void QTestResult::addFailure(const char *message, const char *file, int line)
QTestLog::addFail(message, file, line);
QTest::failed = true;
- QTest::dataFailed = true;
}
void QTestResult::addSkip(const char *message, const char *file, int line)
@@ -306,11 +309,6 @@ const char *QTestResult::currentTestObjectName()
return QTest::currentTestObjectName ? QTest::currentTestObjectName : "";
}
-bool QTestResult::testFailed()
-{
- return QTest::failed;
-}
-
void QTestResult::setSkipCurrentTest(bool value)
{
QTest::skipCurrentTest = value;
diff --git a/src/testlib/qtestresult_p.h b/src/testlib/qtestresult_p.h
index 81e11180ef..5c6c4fba90 100644
--- a/src/testlib/qtestresult_p.h
+++ b/src/testlib/qtestresult_p.h
@@ -74,6 +74,7 @@ public:
static const char *currentDataTag();
static const char *currentGlobalDataTag();
static void finishedCurrentTestData();
+ static void finishedCurrentTestDataCleanup();
static void finishedCurrentTestFunction();
static void reset();
@@ -92,7 +93,6 @@ public:
QTest::TestFailMode mode, const char *file, int line);
static bool verify(bool statement, const char *statementStr, const char *extraInfo,
const char *file, int line);
- static bool testFailed();
static void setSkipCurrentTest(bool value);
static bool skipCurrentTest();