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 += parallel_test
|
||||
SOURCES += ../tst_selftests.cpp
|
||||
QT = core xml testlib-private
|
||||
|
||||
|
@ -43,13 +43,19 @@
|
||||
#include <QtCore/QXmlStreamReader>
|
||||
#include <QtCore/QFileInfo>
|
||||
#include <QtCore/QDir>
|
||||
#include <QtCore/QTemporaryDir>
|
||||
#include <QtTest/QtTest>
|
||||
|
||||
#include <private/cycle_p.h>
|
||||
|
||||
struct LoggerSet;
|
||||
|
||||
class tst_Selftests: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
tst_Selftests();
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void runSubTest_data();
|
||||
@ -58,6 +64,10 @@ private slots:
|
||||
|
||||
private:
|
||||
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
|
||||
@ -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.
|
||||
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
|
||||
@ -184,7 +194,7 @@ struct LoggerSet
|
||||
|
||||
// This function returns a list of all sets of loggers to be used for
|
||||
// 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
|
||||
// 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()
|
||||
{
|
||||
//Detect the location of the sub programs
|
||||
|
Loading…
Reference in New Issue
Block a user