From b1e59467fb37c6d21c3ade0b6758b422a9d09c92 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Tue, 29 May 2012 10:58:41 +1000 Subject: Make tst_selftests parallel-safe. Use a QTemporaryDir for temporary files, instead of the current working directory. Change-Id: Ifeb2944238f785a1f7beb0dc2a7c1e092d121db5 Reviewed-by: Kalle Lehtonen Reviewed-by: Toby Tomkins --- tests/auto/testlib/selftests/test/test.pro | 1 + tests/auto/testlib/selftests/tst_selftests.cpp | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) (limited to 'tests/auto/testlib') diff --git a/tests/auto/testlib/selftests/test/test.pro b/tests/auto/testlib/selftests/test/test.pro index a395ecea47..30f18b1bbb 100644 --- a/tests/auto/testlib/selftests/test/test.pro +++ b/tests/auto/testlib/selftests/test/test.pro @@ -1,4 +1,5 @@ CONFIG += testcase +CONFIG += parallel_test SOURCES += ../tst_selftests.cpp QT = core xml testlib-private diff --git a/tests/auto/testlib/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp index 26ccd826ca..4eff3f7cdc 100644 --- a/tests/auto/testlib/selftests/tst_selftests.cpp +++ b/tests/auto/testlib/selftests/tst_selftests.cpp @@ -43,13 +43,19 @@ #include #include #include +#include #include #include +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 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 allLoggerSets() +QList 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 allLoggerSets() ; } +tst_Selftests::tst_Selftests() + : tempDir(QDir::tempPath() + "/tst_selftests.XXXXXX") +{} + void tst_Selftests::initTestCase() { //Detect the location of the sub programs -- cgit v1.2.3