Move pass/fail/skip counters from QTestResult to QTestLog.

This change will enable further simplification of QTestResult and
QTestLog in the future, including removing a circular dependency between
the two classes.

The "getter" functions in QTestResult are retained for now, but will be
removed in a future commit, once QtQuickTest has been changed to call
the getters that this commit adds to QTestLog.

This commit is adapted from an unfinished change by Henrik Hartz.

Change-Id: Ife7f80ac6a4310449a4712e96e0bea6c02139a5a
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
This commit is contained in:
Jason McDonald 2012-01-16 15:12:39 +10:00 committed by Qt by Nokia
parent 6acdb32561
commit 2ba0d1e550
5 changed files with 51 additions and 21 deletions

View File

@ -344,14 +344,14 @@ void QPlainTestLogger::stopLogging()
char buf[1024]; char buf[1024];
if (QTestLog::verboseLevel() < 0) { 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\n",
QTestResult::passCount(), QTestResult::failCount(), QTestLog::passCount(), QTestLog::failCount(),
QTestResult::skipCount()); QTestLog::skipCount());
} else { } else {
qsnprintf(buf, sizeof(buf), qsnprintf(buf, sizeof(buf),
"Totals: %d passed, %d failed, %d skipped\n" "Totals: %d passed, %d failed, %d skipped\n"
"********* Finished testing of %s *********\n", "********* Finished testing of %s *********\n",
QTestResult::passCount(), QTestResult::failCount(), QTestLog::passCount(), QTestLog::failCount(),
QTestResult::skipCount(), QTestResult::currentTestObjectName()); QTestLog::skipCount(), QTestResult::currentTestObjectName());
} }
outputMessage(buf); outputMessage(buf);

View File

@ -2025,7 +2025,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
} }
#endif #endif
saveCoverageTool(argv[0], QTestResult::failCount()); saveCoverageTool(argv[0], QTestLog::failCount());
#ifdef QTESTLIB_USE_VALGRIND #ifdef QTESTLIB_USE_VALGRIND
if (QBenchmarkGlobalData::current->mode() == QBenchmarkGlobalData::CallgrindParentProcess) if (QBenchmarkGlobalData::current->mode() == QBenchmarkGlobalData::CallgrindParentProcess)
@ -2033,7 +2033,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
#endif #endif
// make sure our exit code is never going above 127 // make sure our exit code is never going above 127
// since that could wrap and indicate 0 test fails // since that could wrap and indicate 0 test fails
return qMin(QTestResult::failCount(), 127); return qMin(QTestLog::failCount(), 127);
} }
/*! /*!

View File

@ -58,6 +58,10 @@ QT_BEGIN_NAMESPACE
namespace QTest { namespace QTest {
int fails = 0;
int passes = 0;
int skips = 0;
struct IgnoreResultList struct IgnoreResultList
{ {
inline IgnoreResultList(QtMsgType tp, const char *message) inline IgnoreResultList(QtMsgType tp, const char *message)
@ -305,6 +309,8 @@ void QTestLog::addPass(const char *msg)
QTEST_ASSERT(msg); QTEST_ASSERT(msg);
++QTest::passes;
QTest::TestLoggers::addIncident(QAbstractTestLogger::Pass, msg); QTest::TestLoggers::addIncident(QAbstractTestLogger::Pass, msg);
} }
@ -312,6 +318,8 @@ void QTestLog::addFail(const char *msg, const char *file, int line)
{ {
QTEST_ASSERT(msg); QTEST_ASSERT(msg);
++QTest::fails;
QTest::TestLoggers::addIncident(QAbstractTestLogger::Fail, msg, file, line); QTest::TestLoggers::addIncident(QAbstractTestLogger::Fail, msg, file, line);
} }
@ -328,6 +336,8 @@ void QTestLog::addXPass(const char *msg, const char *file, int line)
QTEST_ASSERT(msg); QTEST_ASSERT(msg);
QTEST_ASSERT(file); QTEST_ASSERT(file);
++QTest::fails;
QTest::TestLoggers::addIncident(QAbstractTestLogger::XPass, msg, file, line); QTest::TestLoggers::addIncident(QAbstractTestLogger::XPass, msg, file, line);
} }
@ -336,6 +346,8 @@ void QTestLog::addSkip(const char *msg, const char *file, int line)
QTEST_ASSERT(msg); QTEST_ASSERT(msg);
QTEST_ASSERT(file); QTEST_ASSERT(file);
++QTest::skips;
QTest::TestLoggers::addMessage(QAbstractTestLogger::Skip, msg, file, line); QTest::TestLoggers::addMessage(QAbstractTestLogger::Skip, msg, file, line);
} }
@ -447,4 +459,26 @@ void QTestLog::setPrintAvailableTagsMode()
printAvailableTags = true; printAvailableTags = true;
} }
int QTestLog::passCount()
{
return QTest::passes;
}
int QTestLog::failCount()
{
return QTest::fails;
}
int QTestLog::skipCount()
{
return QTest::skips;
}
void QTestLog::resetCounters()
{
QTest::passes = 0;
QTest::fails = 0;
QTest::skips = 0;
}
QT_END_NAMESPACE QT_END_NAMESPACE

View File

@ -96,6 +96,12 @@ public:
static void setPrintAvailableTagsMode(); static void setPrintAvailableTagsMode();
static int passCount();
static int failCount();
static int skipCount();
static void resetCounters();
private: private:
QTestLog(); QTestLog();
~QTestLog(); ~QTestLog();

View File

@ -62,10 +62,6 @@ namespace QTest
static bool skipCurrentTest = false; static bool skipCurrentTest = false;
static QTestResult::TestLocation location = QTestResult::NoWhere; static QTestResult::TestLocation location = QTestResult::NoWhere;
static int fails = 0;
static int passes = 0;
static int skips = 0;
static const char *expectFailComment = 0; static const char *expectFailComment = 0;
static int expectFailMode = 0; static int expectFailMode = 0;
} }
@ -80,12 +76,10 @@ void QTestResult::reset()
QTest::dataFailed = false; QTest::dataFailed = false;
QTest::location = QTestResult::NoWhere; QTest::location = QTestResult::NoWhere;
QTest::fails = 0;
QTest::passes = 0;
QTest::skips = 0;
QTest::expectFailComment = 0; QTest::expectFailComment = 0;
QTest::expectFailMode = 0; QTest::expectFailMode = 0;
QTestLog::resetCounters();
} }
bool QTestResult::currentTestFailed() bool QTestResult::currentTestFailed()
@ -140,7 +134,6 @@ void QTestResult::finishedCurrentTestFunction()
if (!QTest::failed && !QTest::skipCurrentTest) { if (!QTest::failed && !QTest::skipCurrentTest) {
QTestLog::addPass(""); QTestLog::addPass("");
++QTest::passes;
} }
QTest::currentTestFunc = 0; QTest::currentTestFunc = 0;
QTest::failed = false; QTest::failed = false;
@ -211,7 +204,6 @@ static bool checkStatement(bool statement, const char *msg, const char *file, in
bool doContinue = (QTest::expectFailMode == QTest::Continue); bool doContinue = (QTest::expectFailMode == QTest::Continue);
clearExpectFail(); clearExpectFail();
QTest::failed = true; QTest::failed = true;
++QTest::fails;
return doContinue; return doContinue;
} }
return true; return true;
@ -277,7 +269,6 @@ void QTestResult::addFailure(const char *message, const char *file, int line)
QTestLog::addFail(message, file, line); QTestLog::addFail(message, file, line);
QTest::failed = true; QTest::failed = true;
QTest::dataFailed = true; QTest::dataFailed = true;
++QTest::fails;
} }
void QTestResult::addSkip(const char *message, const char *file, int line) void QTestResult::addSkip(const char *message, const char *file, int line)
@ -285,7 +276,6 @@ void QTestResult::addSkip(const char *message, const char *file, int line)
clearExpectFail(); clearExpectFail();
QTestLog::addSkip(message, file, line); QTestLog::addSkip(message, file, line);
++QTest::skips;
} }
QTestResult::TestLocation QTestResult::currentTestLocation() QTestResult::TestLocation QTestResult::currentTestLocation()
@ -310,17 +300,17 @@ const char *QTestResult::currentTestObjectName()
int QTestResult::passCount() int QTestResult::passCount()
{ {
return QTest::passes; return QTestLog::passCount();
} }
int QTestResult::failCount() int QTestResult::failCount()
{ {
return QTest::fails; return QTestLog::failCount();
} }
int QTestResult::skipCount() int QTestResult::skipCount()
{ {
return QTest::skips; return QTestLog::skipCount();
} }
void QTestResult::ignoreMessage(QtMsgType type, const char *msg) void QTestResult::ignoreMessage(QtMsgType type, const char *msg)