qmake-test: Fix jom/nmake handling on Windows.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Thu, 1 Mar 2012 09:37:58 +0000 (10:37 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 1 Mar 2012 11:16:57 +0000 (12:16 +0100)
The test fails if MAKEFLAGS is set up for jom since the test
always uses nmake. Remove MAKEFLAGS from the process environment.

Change-Id: Idaed3cc964832b83c282a59fc5257572c520b882
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com>
tests/auto/tools/qmake/testcompiler.cpp

index 97c640b..4e5dc26 100644 (file)
@@ -132,13 +132,34 @@ bool TestCompiler::errorOut()
     return false;
 }
 
+// Return the system environment, remove MAKEFLAGS variable in
+// case the CI uses jom passing flags incompatible to nmake
+// or vice versa.
+static inline QStringList systemEnvironment()
+{
+#ifdef Q_OS_WIN
+    static QStringList result;
+    if (result.isEmpty()) {
+        foreach (const QString &variable, QProcess::systemEnvironment()) {
+            if (variable.startsWith(QStringLiteral("MAKEFLAGS="), Qt::CaseInsensitive)) {
+                qWarning("Removing environment setting '%s'", qPrintable(variable));
+            } else {
+                result.push_back(variable);
+            }
+        }
+    }
+#else
+    static const QStringList result = QProcess::systemEnvironment();
+#endif // ifdef Q_OS_WIN
+    return result;
+}
+
 bool TestCompiler::runCommand( QString cmdline, bool expectFail )
 {
     testOutput_.append("Running command: " + cmdline);
 
     QProcess child;
-    if (!environment_.empty())
-        child.setEnvironment(QProcess::systemEnvironment() + environment_);
+    child.setEnvironment(systemEnvironment() + environment_);
 
     child.start(cmdline);
     if (!child.waitForStarted(-1)) {