QTestlib-Selftest: Add initTestCase() setting the directory.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Tue, 13 Dec 2011 16:08:45 +0000 (17:08 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 15 Dec 2011 20:04:27 +0000 (21:04 +0100)
Required for launching the sub-processes. The test worked only
when launched locally, not from 'make check'.

Change-Id: I42c9202a7726c3135f94445fb336b2b8241535a4
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
tests/auto/testlib/selftests/tst_selftests.cpp

index f3b4738..ea47678 100644 (file)
 ****************************************************************************/
 
 #include <QtCore>
-#include <QtTest/QtTest>
 #include <QtCore/QXmlStreamReader>
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+#include <QtTest/QtTest>
+
 #include <private/cycle_p.h>
 
 class tst_Selftests: public QObject
 {
     Q_OBJECT
 private slots:
+    void initTestCase();
     void runSubTest_data();
     void runSubTest();
     void cleanup();
@@ -285,6 +289,13 @@ static QList<LoggerSet> allLoggerSets()
     ;
 }
 
+void tst_Selftests::initTestCase()
+{
+    // chdir to our testdata path and execute helper apps relative to that.
+    QString testdataDir = QFileInfo(QFINDTESTDATA("float")).absolutePath();
+    QVERIFY2(QDir::setCurrent(testdataDir), qPrintable("Could not chdir to " + testdataDir));
+}
+
 void tst_Selftests::runSubTest_data()
 {
     QTest::addColumn<QString>("subdir");
@@ -443,7 +454,9 @@ void tst_Selftests::doRunSubTest(QString const& subdir, QStringList const& logge
     QProcess proc;
     static const QProcessEnvironment environment = processEnvironment();
     proc.setProcessEnvironment(environment);
-    proc.start(subdir + QLatin1Char('/') + subdir, arguments);
+    const QString path = subdir + QLatin1Char('/') + subdir;
+    proc.start(path, arguments);
+    QVERIFY2(proc.waitForStarted(), qPrintable(QString::fromLatin1("Cannot start '%1': %2").arg(path, proc.errorString())));
     QVERIFY2(proc.waitForFinished(), qPrintable(proc.errorString()));
 
     QList<QByteArray> actualOutputs;