Make tst_selftests parallel-safe.
Use a QTemporaryDir for temporary files, instead of the current working directory. Change-Id: Ifeb2944238f785a1f7beb0dc2a7c1e092d121db5 Reviewed-by: Kalle Lehtonen <kalle.ju.lehtonen@nokia.com> Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com>
This commit is contained in:
parent
70ad49d661
commit
b1e59467fb
@ -1,4 +1,5 @@
|
|||||||
CONFIG += testcase
|
CONFIG += testcase
|
||||||
|
CONFIG += parallel_test
|
||||||
SOURCES += ../tst_selftests.cpp
|
SOURCES += ../tst_selftests.cpp
|
||||||
QT = core xml testlib-private
|
QT = core xml testlib-private
|
||||||
|
|
||||||
|
@ -43,13 +43,19 @@
|
|||||||
#include <QtCore/QXmlStreamReader>
|
#include <QtCore/QXmlStreamReader>
|
||||||
#include <QtCore/QFileInfo>
|
#include <QtCore/QFileInfo>
|
||||||
#include <QtCore/QDir>
|
#include <QtCore/QDir>
|
||||||
|
#include <QtCore/QTemporaryDir>
|
||||||
#include <QtTest/QtTest>
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
#include <private/cycle_p.h>
|
#include <private/cycle_p.h>
|
||||||
|
|
||||||
|
struct LoggerSet;
|
||||||
|
|
||||||
class tst_Selftests: public QObject
|
class tst_Selftests: public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
tst_Selftests();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void initTestCase();
|
void initTestCase();
|
||||||
void runSubTest_data();
|
void runSubTest_data();
|
||||||
@ -58,6 +64,10 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void doRunSubTest(QString const& subdir, QStringList const& loggers, QStringList const& arguments);
|
void doRunSubTest(QString const& subdir, QStringList const& loggers, QStringList const& arguments);
|
||||||
|
QString logName(const QString &logger) const;
|
||||||
|
QList<LoggerSet> allLoggerSets() const;
|
||||||
|
|
||||||
|
QTemporaryDir tempDir;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BenchmarkResult
|
struct BenchmarkResult
|
||||||
@ -153,9 +163,9 @@ static inline QString logFormat(const QString &logger)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return the log file name, or an empty string if the log goes to stdout.
|
// Return the log file name, or an empty string if the log goes to stdout.
|
||||||
static inline QString logName(const QString &logger)
|
QString tst_Selftests::logName(const QString &logger) const
|
||||||
{
|
{
|
||||||
return (logger.startsWith("stdout") ? "" : QString("test_output." + logger));
|
return (logger.startsWith("stdout") ? "" : QString(tempDir.path() + "/test_output." + logger));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load the expected test output for the nominated test (subdir) and logger
|
// Load the expected test output for the nominated test (subdir) and logger
|
||||||
@ -184,7 +194,7 @@ struct LoggerSet
|
|||||||
|
|
||||||
// This function returns a list of all sets of loggers to be used for
|
// This function returns a list of all sets of loggers to be used for
|
||||||
// running each subtest.
|
// running each subtest.
|
||||||
static QList<LoggerSet> allLoggerSets()
|
QList<LoggerSet> tst_Selftests::allLoggerSets() const
|
||||||
{
|
{
|
||||||
// Note that in order to test XML output to standard output, the subtests
|
// Note that in order to test XML output to standard output, the subtests
|
||||||
// must not send output directly to stdout, bypassing Qt's output mechanisms
|
// must not send output directly to stdout, bypassing Qt's output mechanisms
|
||||||
@ -289,6 +299,10 @@ static QList<LoggerSet> allLoggerSets()
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tst_Selftests::tst_Selftests()
|
||||||
|
: tempDir(QDir::tempPath() + "/tst_selftests.XXXXXX")
|
||||||
|
{}
|
||||||
|
|
||||||
void tst_Selftests::initTestCase()
|
void tst_Selftests::initTestCase()
|
||||||
{
|
{
|
||||||
//Detect the location of the sub programs
|
//Detect the location of the sub programs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user