summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2012-11-21 14:53:34 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2012-11-21 14:56:44 +0100
commit342d12cd9f70f8e41b4b8cf4304a512207b4fe98 (patch)
tree80a23eb630d363738c912c5c97fafa17ae3f5608
parent405d40b3207a7251532c615f73a721875b6e2e09 (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.cpp7
-rw-r--r--tests/tests.cpp11
-rw-r--r--tests/tests.h1
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();