summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason McDonald <[email protected]>2011-09-02 17:08:20 +1000
committerQt by Nokia <[email protected]>2011-09-05 06:33:07 +0200
commitcab90f8c8b19892b2e026d12411702dbc8c10fb9 (patch)
tree5163e3739d118b646b56cda5a48228e15ae49d6c
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 <[email protected]> Reviewed-by: Rohan McGovern <[email protected]>
-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 d71addb655e..e2f253c22e7 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 47f772e7ed2..3e118630124 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 6dc2135d1b7..14fa752c401 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 baa1e248283..432e900320f 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 5019f406800..9bb591989d6 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 410972db0f1..d53b00ca7f7 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 c667289b66b..f06382978f9 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 ec153c8e17e..304cd0a0efc 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 5a3fb27d784..c273493c481 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 69705b837bc..f923b2334b1 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 0607504310c..a51d70533d6 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);