summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/testlib/qabstracttestlogger_p.h7
-rw-r--r--src/testlib/qtestlog.cpp24
-rw-r--r--src/testlib/qtestlog_p.h2
3 files changed, 25 insertions, 8 deletions
diff --git a/src/testlib/qabstracttestlogger_p.h b/src/testlib/qabstracttestlogger_p.h
index 079f5f87d5..3e4f725a98 100644
--- a/src/testlib/qabstracttestlogger_p.h
+++ b/src/testlib/qabstracttestlogger_p.h
@@ -51,7 +51,8 @@
// We mean it.
//
-#include <qglobal.h>
+#include <QtTest/qttestglobal.h>
+
#include <stdio.h>
#include <stdlib.h>
@@ -60,7 +61,7 @@ QT_BEGIN_NAMESPACE
class QBenchmarkResult;
class QTestData;
-class QAbstractTestLogger
+class Q_TESTLIB_EXPORT QAbstractTestLogger
{
public:
enum IncidentTypes {
@@ -184,7 +185,7 @@ namespace QTest
namespace QTestPrivate
{
enum IdentifierPart { TestObject = 0x1, TestFunction = 0x2, TestDataTag = 0x4, AllParts = 0xFFFF };
- void generateTestIdentifier(QTestCharBuffer *identifier, int parts = AllParts);
+ void Q_TESTLIB_EXPORT generateTestIdentifier(QTestCharBuffer *identifier, int parts = AllParts);
}
QT_END_NAMESPACE
diff --git a/src/testlib/qtestlog.cpp b/src/testlib/qtestlog.cpp
index 05c96d62d5..7fbb3155fa 100644
--- a/src/testlib/qtestlog.cpp
+++ b/src/testlib/qtestlog.cpp
@@ -99,7 +99,7 @@ static void saveCoverageTool(const char * appname, bool testfailed, bool install
static QElapsedTimer elapsedFunctionTime;
static QElapsedTimer elapsedTotalTime;
-#define FOREACH_TEST_LOGGER for (QAbstractTestLogger *logger : QTest::loggers)
+#define FOREACH_TEST_LOGGER for (QAbstractTestLogger *logger : *QTest::loggers())
namespace QTest {
@@ -168,7 +168,7 @@ namespace QTest {
static IgnoreResultList *ignoreResultList = nullptr;
- static QList<QAbstractTestLogger *> loggers;
+ Q_GLOBAL_STATIC(QList<QAbstractTestLogger *>, loggers)
static int verbosity = 0;
static int maxWarnings = 2002;
@@ -429,7 +429,7 @@ void QTestLog::stopLogging()
logger->stopLogging();
delete logger;
}
- QTest::loggers.clear();
+ QTest::loggers()->clear();
saveCoverageTool(QTestResult::currentAppName(), failCount() != 0, QTestLog::installedTestCoverage());
}
@@ -474,12 +474,26 @@ void QTestLog::addLogger(LogMode mode, const char *filename)
}
QTEST_ASSERT(logger);
- QTest::loggers.append(logger);
+ addLogger(logger);
+}
+
+/*!
+ \internal
+
+ Adds a new logger to the set of loggers that will be used
+ to report incidents and messages during testing.
+
+ The function takes ownership of the logger.
+*/
+void QTestLog::addLogger(QAbstractTestLogger *logger)
+{
+ QTEST_ASSERT(logger);
+ QTest::loggers()->append(logger);
}
int QTestLog::loggerCount()
{
- return QTest::loggers.size();
+ return QTest::loggers()->size();
}
bool QTestLog::loggerUsingStdout()
diff --git a/src/testlib/qtestlog_p.h b/src/testlib/qtestlog_p.h
index ddaf14ed9b..bdb22acbd3 100644
--- a/src/testlib/qtestlog_p.h
+++ b/src/testlib/qtestlog_p.h
@@ -64,6 +64,7 @@ QT_BEGIN_NAMESPACE
class QBenchmarkResult;
class QRegularExpression;
class QTestData;
+class QAbstractTestLogger;
class Q_TESTLIB_EXPORT QTestLog
{
@@ -115,6 +116,7 @@ public:
static void stopLogging();
static void addLogger(LogMode mode, const char *filename);
+ static void addLogger(QAbstractTestLogger *logger);
static int loggerCount();
static bool loggerUsingStdout();