QTestlib/Selftest: Fix Windows.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Wed, 7 Dec 2011 15:45:14 +0000 (16:45 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 8 Dec 2011 07:51:35 +0000 (08:51 +0100)
- Do not run with empty environment. At least PATH
  is required at least (Qt + MSVC/MinGW runtime)
- Account for MSVC's different formatting of double numbers.

Change-Id: Ic7b1cf4a16a88c5384347b2651b011ac13c92d70
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
tests/auto/testlib/selftests/tst_selftests.cpp

index 4308141..f7a485b 100644 (file)
@@ -426,11 +426,20 @@ void tst_Selftests::runSubTest_data()
     }
 }
 
+static inline QProcessEnvironment processEnvironment()
+{
+    QProcessEnvironment result;
+    const QString path = QStringLiteral("PATH");
+    result.insert(path, QProcessEnvironment::systemEnvironment().value(path));
+    return result;
+}
+
 void tst_Selftests::doRunSubTest(QString const& subdir, QStringList const& loggers, QStringList const& arguments)
 {
     QProcess proc;
-    proc.setEnvironment(QStringList(""));
-    proc.start(subdir + "/" + subdir, arguments);
+    static const QProcessEnvironment environment = processEnvironment();
+    proc.setProcessEnvironment(environment);
+    proc.start(subdir + QLatin1Char('/') + subdir, arguments);
     QVERIFY2(proc.waitForFinished(), qPrintable(proc.errorString()));
 
     QList<QByteArray> actualOutputs;
@@ -469,6 +478,15 @@ void tst_Selftests::doRunSubTest(QString const& subdir, QStringList const& logge
         QString logger = loggers[n];
         QList<QByteArray> res = splitLines(actualOutputs[n]);
         QList<QByteArray> exp = expectedResult(subdir, logger);
+#ifdef Q_CC_MSVC
+        // MSVC formats double numbers differently
+        if (n == 0 && subdir == QStringLiteral("float")) {
+            for (int i = 0; i < exp.size(); ++i) {
+                exp[i].replace("e-07", "e-007");
+                exp[i].replace("e+07", "e+007");
+            }
+        }
+#endif
 
         // For the "crashes" test, there are multiple versions of the
         // expected output.  Load the one with the same line count as