summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
authorJason McDonald <jason.mcdonald@nokia.com>2011-09-02 17:08:20 +1000
committerQt by Nokia <qt-info@nokia.com>2011-09-05 06:33:07 +0200
commitcab90f8c8b19892b2e026d12411702dbc8c10fb9 (patch)
tree5163e3739d118b646b56cda5a48228e15ae49d6c /src/testlib
parent91fe1fd9e8f5b040511721cb64b11772e034b265 (diff)
Pass log file name when constructing loggers.
Pass the filename when creating the logger rather than when commencing output. This will simplify forthcoming changes for running multiple loggers. Change-Id: I563aa97661caf279a5dcccb1321ff3ce4725b332 Reviewed-on: http://codereview.qt.nokia.com/4116 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/qabstracttestlogger.cpp30
-rw-r--r--src/testlib/qabstracttestlogger_p.h6
-rw-r--r--src/testlib/qplaintestlogger.cpp7
-rw-r--r--src/testlib/qplaintestlogger_p.h4
-rw-r--r--src/testlib/qtestcase.cpp14
-rw-r--r--src/testlib/qtestlog.cpp62
-rw-r--r--src/testlib/qtestlog_p.h6
-rw-r--r--src/testlib/qxmltestlogger.cpp8
-rw-r--r--src/testlib/qxmltestlogger_p.h4
-rw-r--r--src/testlib/qxunittestlogger.cpp9
-rw-r--r--src/testlib/qxunittestlogger_p.h4
11 files changed, 75 insertions, 79 deletions
diff --git a/src/testlib/qabstracttestlogger.cpp b/src/testlib/qabstracttestlogger.cpp
index d71addb655..e2f253c22e 100644
--- a/src/testlib/qabstracttestlogger.cpp
+++ b/src/testlib/qabstracttestlogger.cpp
@@ -54,18 +54,8 @@
QT_BEGIN_NAMESPACE
-void QAbstractTestLogger::outputString(const char *msg)
+QAbstractTestLogger::QAbstractTestLogger(const char *filename)
{
- QTEST_ASSERT(stream);
-
- ::fputs(msg, stream);
- ::fflush(stream);
-}
-
-void QAbstractTestLogger::startLogging(const char *filename)
-{
- QTEST_ASSERT(!stream);
-
if (!filename) {
stream = stdout;
return;
@@ -81,7 +71,7 @@ void QAbstractTestLogger::startLogging(const char *filename)
}
}
-void QAbstractTestLogger::stopLogging()
+QAbstractTestLogger::~QAbstractTestLogger()
{
QTEST_ASSERT(stream);
if (stream != stdout) {
@@ -97,6 +87,22 @@ void QAbstractTestLogger::stopLogging()
stream = 0;
}
+void QAbstractTestLogger::outputString(const char *msg)
+{
+ QTEST_ASSERT(stream);
+
+ ::fputs(msg, stream);
+ ::fflush(stream);
+}
+
+void QAbstractTestLogger::startLogging()
+{
+}
+
+void QAbstractTestLogger::stopLogging()
+{
+}
+
namespace QTest
{
diff --git a/src/testlib/qabstracttestlogger_p.h b/src/testlib/qabstracttestlogger_p.h
index 47f772e7ed..3e11863012 100644
--- a/src/testlib/qabstracttestlogger_p.h
+++ b/src/testlib/qabstracttestlogger_p.h
@@ -80,10 +80,10 @@ public:
Info
};
- QAbstractTestLogger() : stream(0) {}
- virtual ~QAbstractTestLogger() {}
+ QAbstractTestLogger(const char *filename);
+ virtual ~QAbstractTestLogger();
- virtual void startLogging(const char *filename);
+ virtual void startLogging();
virtual void stopLogging();
virtual void enterTestFunction(const char *function) = 0;
diff --git a/src/testlib/qplaintestlogger.cpp b/src/testlib/qplaintestlogger.cpp
index 6dc2135d1b..14fa752c40 100644
--- a/src/testlib/qplaintestlogger.cpp
+++ b/src/testlib/qplaintestlogger.cpp
@@ -344,7 +344,8 @@ void QPlainTestLogger::printBenchmarkResult(const QBenchmarkResult &result)
outputMessage(buf);
}
-QPlainTestLogger::QPlainTestLogger()
+QPlainTestLogger::QPlainTestLogger(const char *filename)
+ : QAbstractTestLogger(filename)
{
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
InitializeCriticalSection(&QTest::outputCriticalSection);
@@ -358,9 +359,9 @@ QPlainTestLogger::~QPlainTestLogger()
#endif
}
-void QPlainTestLogger::startLogging(const char *filename)
+void QPlainTestLogger::startLogging()
{
- QAbstractTestLogger::startLogging(filename);
+ QAbstractTestLogger::startLogging();
char buf[1024];
if (QTestLog::verboseLevel() < 0) {
diff --git a/src/testlib/qplaintestlogger_p.h b/src/testlib/qplaintestlogger_p.h
index baa1e24828..432e900320 100644
--- a/src/testlib/qplaintestlogger_p.h
+++ b/src/testlib/qplaintestlogger_p.h
@@ -60,10 +60,10 @@ QT_BEGIN_NAMESPACE
class QPlainTestLogger : public QAbstractTestLogger
{
public:
- QPlainTestLogger();
+ QPlainTestLogger(const char *filename);
~QPlainTestLogger();
- void startLogging(const char *filename);
+ void startLogging();
void stopLogging();
void enterTestFunction(const char *function);
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 5019f40680..9bb591989d 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -1000,6 +1000,9 @@ static int qToInt(char *str)
Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml)
{
+ QTestLog::LogMode logFormat = QTestLog::Plain;
+ const char *logFilename = 0;
+
const char *testOptions =
" Output options:\n"
" -xunitxml : Outputs results as XML XUnit document\n"
@@ -1063,11 +1066,11 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml)
exit(0);
}
} else if (strcmp(argv[i], "-xunitxml") == 0) {
- QTestLog::setLogMode(QTestLog::XunitXML);
+ logFormat = QTestLog::XunitXML;
} else if (strcmp(argv[i], "-xml") == 0) {
- QTestLog::setLogMode(QTestLog::XML);
+ logFormat = QTestLog::XML;
} else if (strcmp(argv[i], "-lightxml") == 0) {
- QTestLog::setLogMode(QTestLog::LightXML);
+ logFormat = QTestLog::LightXML;
} else if (strcmp(argv[i], "-silent") == 0) {
QTestLog::setVerboseLevel(-1);
} else if (strcmp(argv[i], "-v1") == 0) {
@@ -1081,7 +1084,7 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml)
fprintf(stderr, "-o needs an extra parameter specifying the filename\n");
exit(1);
} else {
- QTestLog::redirectOutput(argv[++i]);
+ logFilename = argv[++i];
}
} else if (strcmp(argv[i], "-eventdelay") == 0) {
if (i + 1 >= argc) {
@@ -1244,6 +1247,9 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml)
QTEST_ASSERT(QTest::testFuncCount < 512);
}
}
+
+ // Create the logger
+ QTestLog::initLogger(logFormat, logFilename);
}
QBenchmarkResult qMedian(const QList<QBenchmarkResult> &container)
diff --git a/src/testlib/qtestlog.cpp b/src/testlib/qtestlog.cpp
index 410972db0f..d53b00ca7f 100644
--- a/src/testlib/qtestlog.cpp
+++ b/src/testlib/qtestlog.cpp
@@ -87,7 +87,6 @@ namespace QTest {
static int maxWarnings = 2002;
static QAbstractTestLogger *testLogger = 0;
- static const char *outFile = 0;
static QtMsgHandler oldMessageHandler;
@@ -164,24 +163,6 @@ namespace QTest {
break;
}
}
-
- void initLogger()
- {
- switch (QTest::logMode) {
- case QTestLog::Plain:
- QTest::testLogger = new QPlainTestLogger;
- break;
- case QTestLog::XML:
- QTest::testLogger = new QXmlTestLogger(QXmlTestLogger::Complete);
- break;
- case QTestLog::LightXML:
- QTest::testLogger = new QXmlTestLogger(QXmlTestLogger::Light);
- break;
- case QTestLog::XunitXML:
- QTest::testLogger = new QXunitTestLogger();
- break;
- }
- }
}
void QTestLog::enterTestFunction(const char* function)
@@ -276,9 +257,8 @@ void QTestLog::addBenchmarkResult(const QBenchmarkResult &result)
void QTestLog::startLogging()
{
- QTEST_ASSERT(!QTest::testLogger);
- QTest::initLogger();
- QTest::testLogger->startLogging(QTest::outFile);
+ QTEST_ASSERT(QTest::testLogger);
+ QTest::testLogger->startLogging();
QTest::oldMessageHandler = qInstallMsgHandler(QTest::messageHandler);
}
@@ -292,6 +272,27 @@ void QTestLog::stopLogging()
QTest::testLogger = 0;
}
+void QTestLog::initLogger(LogMode mode, const char *filename)
+{
+ QTest::logMode = mode;
+
+ switch (mode) {
+ case QTestLog::Plain:
+ QTest::testLogger = new QPlainTestLogger(filename);
+ break;
+ case QTestLog::XML:
+ QTest::testLogger = new QXmlTestLogger(QXmlTestLogger::Complete, filename);
+ break;
+ case QTestLog::LightXML:
+ QTest::testLogger = new QXmlTestLogger(QXmlTestLogger::Light, filename);
+ break;
+ case QTestLog::XunitXML:
+ QTest::testLogger = new QXunitTestLogger(filename);
+ break;
+ }
+ QTEST_ASSERT(QTest::testLogger);
+}
+
void QTestLog::warn(const char *msg)
{
QTEST_ASSERT(QTest::testLogger);
@@ -308,11 +309,6 @@ void QTestLog::info(const char *msg, const char *file, int line)
QTest::testLogger->addMessage(QAbstractTestLogger::Info, msg, file, line);
}
-void QTestLog::setLogMode(LogMode mode)
-{
- QTest::logMode = mode;
-}
-
QTestLog::LogMode QTestLog::logMode()
{
return QTest::logMode;
@@ -344,18 +340,6 @@ void QTestLog::addIgnoreMessage(QtMsgType type, const char *msg)
list->next = item;
}
-void QTestLog::redirectOutput(const char *fileName)
-{
- QTEST_ASSERT(fileName);
-
- QTest::outFile = fileName;
-}
-
-const char *QTestLog::outputFileName()
-{
- return QTest::outFile;
-}
-
void QTestLog::setMaxWarnings(int m)
{
QTest::maxWarnings = m <= 0 ? INT_MAX : m + 2;
diff --git a/src/testlib/qtestlog_p.h b/src/testlib/qtestlog_p.h
index c667289b66..f06382978f 100644
--- a/src/testlib/qtestlog_p.h
+++ b/src/testlib/qtestlog_p.h
@@ -83,15 +83,13 @@ public:
static void startLogging();
static void stopLogging();
- static void setLogMode(LogMode mode);
+ static void initLogger(LogMode mode, const char *filename);
+
static LogMode logMode();
static void setVerboseLevel(int level);
static int verboseLevel();
- static void redirectOutput(const char *fileName);
- static const char *outputFileName();
-
static void setMaxWarnings(int max);
private:
diff --git a/src/testlib/qxmltestlogger.cpp b/src/testlib/qxmltestlogger.cpp
index ec153c8e17..304cd0a0ef 100644
--- a/src/testlib/qxmltestlogger.cpp
+++ b/src/testlib/qxmltestlogger.cpp
@@ -92,8 +92,8 @@ namespace QTest {
}
-QXmlTestLogger::QXmlTestLogger(XmlMode mode )
- : xmlmode(mode)
+QXmlTestLogger::QXmlTestLogger(XmlMode mode, const char *filename)
+ : QAbstractTestLogger(filename), xmlmode(mode)
{
}
@@ -101,9 +101,9 @@ QXmlTestLogger::~QXmlTestLogger()
{
}
-void QXmlTestLogger::startLogging(const char *filename)
+void QXmlTestLogger::startLogging()
{
- QAbstractTestLogger::startLogging(filename);
+ QAbstractTestLogger::startLogging();
QTestCharBuffer buf;
if (xmlmode == QXmlTestLogger::Complete) {
diff --git a/src/testlib/qxmltestlogger_p.h b/src/testlib/qxmltestlogger_p.h
index 5a3fb27d78..c273493c48 100644
--- a/src/testlib/qxmltestlogger_p.h
+++ b/src/testlib/qxmltestlogger_p.h
@@ -63,10 +63,10 @@ class QXmlTestLogger : public QAbstractTestLogger
public:
enum XmlMode { Complete = 0, Light };
- QXmlTestLogger(XmlMode mode);
+ QXmlTestLogger(XmlMode mode, const char *filename);
~QXmlTestLogger();
- void startLogging(const char *filename);
+ void startLogging();
void stopLogging();
void enterTestFunction(const char *function);
diff --git a/src/testlib/qxunittestlogger.cpp b/src/testlib/qxunittestlogger.cpp
index 69705b837b..f923b2334b 100644
--- a/src/testlib/qxunittestlogger.cpp
+++ b/src/testlib/qxunittestlogger.cpp
@@ -51,8 +51,9 @@
QT_BEGIN_NAMESPACE
-QXunitTestLogger::QXunitTestLogger()
- : listOfTestcases(0)
+QXunitTestLogger::QXunitTestLogger(const char *filename)
+ : QAbstractTestLogger(filename)
+ , listOfTestcases(0)
, currentLogElement(0)
, errorLogElement(0)
, logFormatter(0)
@@ -68,9 +69,9 @@ QXunitTestLogger::~QXunitTestLogger()
delete logFormatter;
}
-void QXunitTestLogger::startLogging(const char *filename)
+void QXunitTestLogger::startLogging()
{
- QAbstractTestLogger::startLogging(filename);
+ QAbstractTestLogger::startLogging();
logFormatter = new QTestXunitStreamer(this);
delete errorLogElement;
diff --git a/src/testlib/qxunittestlogger_p.h b/src/testlib/qxunittestlogger_p.h
index 0607504310..a51d70533d 100644
--- a/src/testlib/qxunittestlogger_p.h
+++ b/src/testlib/qxunittestlogger_p.h
@@ -63,10 +63,10 @@ class QTestElement;
class QXunitTestLogger : public QAbstractTestLogger
{
public:
- QXunitTestLogger();
+ QXunitTestLogger(const char *filename);
~QXunitTestLogger();
- void startLogging(const char *filename);
+ void startLogging();
void stopLogging();
void enterTestFunction(const char *function);