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>
This commit is contained in:
Jason McDonald 2011-09-02 17:08:20 +10:00 committed by Qt by Nokia
parent 91fe1fd9e8
commit cab90f8c8b
11 changed files with 75 additions and 79 deletions

View File

@ -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
{

View File

@ -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;

View File

@ -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) {

View File

@ -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);

View File

@ -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)

View File

@ -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;

View File

@ -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:

View File

@ -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) {

View File

@ -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);

View File

@ -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;

View File

@ -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);