diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2012-11-21 14:53:34 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2012-11-21 14:56:44 +0100 |
commit | 342d12cd9f70f8e41b4b8cf4304a512207b4fe98 (patch) | |
tree | 80a23eb630d363738c912c5c97fafa17ae3f5608 | |
parent | 405d40b3207a7251532c615f73a721875b6e2e09 (diff) |
fix handling of environment variables with lowercase names
Change-Id: I7aa179a028b60002f07d8e747ef7d091dd987839
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/jomlib/macrotable.cpp | 7 | ||||
-rw-r--r-- | tests/tests.cpp | 11 | ||||
-rw-r--r-- | tests/tests.h | 1 |
3 files changed, 16 insertions, 3 deletions
diff --git a/src/jomlib/macrotable.cpp b/src/jomlib/macrotable.cpp index a449590..484f976 100644 --- a/src/jomlib/macrotable.cpp +++ b/src/jomlib/macrotable.cpp @@ -49,7 +49,8 @@ QString MacroTable::macroValue(const QString& macroName) const */ void MacroTable::defineEnvironmentMacroValue(const QString& name, const QString& value, bool readOnly) { - if (m_macros.contains(name)) + const QString upperName = name.toUpper(); + if (m_macros.contains(upperName)) return; QString expandedValue; try { @@ -62,12 +63,12 @@ void MacroTable::defineEnvironmentMacroValue(const QString& name, const QString& // Infamous example: PROMPT=$+$P$_$G return; } - MacroData* macroData = internalSetMacroValue(name.toUpper(), value); + MacroData* macroData = internalSetMacroValue(upperName, value); if (!macroData) return; macroData->isEnvironmentVariable = true; macroData->isReadOnly = readOnly; - setEnvironmentVariable(name, expandedValue); + setEnvironmentVariable(upperName, expandedValue); } bool MacroTable::isMacroNameValid(const QString& name) const diff --git a/tests/tests.cpp b/tests/tests.cpp index a082102..8199cc9 100644 --- a/tests/tests.cpp +++ b/tests/tests.cpp @@ -1041,6 +1041,17 @@ void ParserTest::environmentVariables() QString(QLatin1String("VAR2 ") + expectedVar2).trimmed()); } +void ParserTest::environmentVariablesCaseInsensitivity() +{ + const QStringList environment = QStringList() << "Path=foobidoo"; + m_jomProcess->setEnvironment(environment); + QVERIFY(runJom(QStringList() << "/f" << "test.mk" << "/sl" << "PATH=C:\\Narf", + "blackbox/environmentVariablesCaseInsensitivity")); + QCOMPARE(m_jomProcess->exitCode(), 0); + const QByteArray output = m_jomProcess->readAllStandardOutput().trimmed(); + QCOMPARE(output.data(), "PATH C:\\Narf C:\\Narf"); +} + void ParserTest::environmentVariablesInCommands() { QVERIFY(runJom(QStringList() << "/f" << "test.mk" << "/sl", diff --git a/tests/tests.h b/tests/tests.h index 3b25eeb..fd9cc0d 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -67,6 +67,7 @@ private slots: void caseInsensitiveDependents(); void environmentVariables_data(); void environmentVariables(); + void environmentVariablesCaseInsensitivity(); void environmentVariablesInCommands(); void ignoreExitCodes(); void inlineFiles(); |