From cab90f8c8b19892b2e026d12411702dbc8c10fb9 Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Fri, 2 Sep 2011 17:08:20 +1000 Subject: 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 Reviewed-by: Rohan McGovern --- src/testlib/qabstracttestlogger.cpp | 30 +++++++++++------- src/testlib/qabstracttestlogger_p.h | 6 ++-- src/testlib/qplaintestlogger.cpp | 7 +++-- src/testlib/qplaintestlogger_p.h | 4 +-- src/testlib/qtestcase.cpp | 14 ++++++--- src/testlib/qtestlog.cpp | 62 ++++++++++++++----------------------- src/testlib/qtestlog_p.h | 6 ++-- src/testlib/qxmltestlogger.cpp | 8 ++--- src/testlib/qxmltestlogger_p.h | 4 +-- src/testlib/qxunittestlogger.cpp | 9 +++--- src/testlib/qxunittestlogger_p.h | 4 +-- 11 files changed, 75 insertions(+), 79 deletions(-) (limited to 'src') 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 &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); -- cgit v1.2.3