qmake-test: Fix jom/nmake handling on Windows.

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>
This commit is contained in:
Friedemann Kleint 2012-03-01 10:37:58 +01:00 committed by Qt by Nokia
parent fe092d1a6d
commit 5cd56df0f2

View File

@ -132,13 +132,34 @@ bool TestCompiler::errorOut()
return false; 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 ) bool TestCompiler::runCommand( QString cmdline, bool expectFail )
{ {
testOutput_.append("Running command: " + cmdline); testOutput_.append("Running command: " + cmdline);
QProcess child; QProcess child;
if (!environment_.empty()) child.setEnvironment(systemEnvironment() + environment_);
child.setEnvironment(QProcess::systemEnvironment() + environment_);
child.start(cmdline); child.start(cmdline);
if (!child.waitForStarted(-1)) { if (!child.waitForStarted(-1)) {