aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-12-21 08:46:05 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2017-12-22 09:40:41 +0000
commit7862e87dc3ed3f7e2e6c8de936d6e15e914a02a4 (patch)
treef4f7ed6fe3760a686ef37bd0fcb4ed93a0795456
parentb277571692eddad3fd67eb600ee68ca8381a72f4 (diff)
qbs.Environment: Normalize key values on Windows
The names of environment variables are case-insensitive on Windows. Convert them to upper case when handing out the environment, so that users can count on the names being canonical. Change-Id: Iba2ce768b7cd22270dd2d240d15fc1a78915e3a7 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
-rw-r--r--src/lib/corelib/jsextensions/environmentextension.cpp7
-rw-r--r--tests/auto/blackbox/testdata/env-normalization/env-normalization.qbs12
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp12
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
4 files changed, 30 insertions, 2 deletions
diff --git a/src/lib/corelib/jsextensions/environmentextension.cpp b/src/lib/corelib/jsextensions/environmentextension.cpp
index 39a57a17b..d151957a4 100644
--- a/src/lib/corelib/jsextensions/environmentextension.cpp
+++ b/src/lib/corelib/jsextensions/environmentextension.cpp
@@ -41,6 +41,7 @@
#include <language/scriptengine.h>
#include <logging/translator.h>
+#include <tools/hostosinfo.h>
#include <QtCore/qdir.h>
@@ -145,8 +146,10 @@ QScriptValue EnvironmentExtension::js_currentEnv(QScriptContext *context, QScrip
if (!procenv)
procenv = &env;
QScriptValue envObject = engine->newObject();
- for (const QString &key : procenv->keys())
- envObject.setProperty(key, QScriptValue(procenv->value(key)));
+ for (const QString &key : procenv->keys()) {
+ const QString keyName = HostOsInfo::isWindowsHost() ? key.toUpper() : key;
+ envObject.setProperty(keyName, QScriptValue(procenv->value(key)));
+ }
return envObject;
}
diff --git a/tests/auto/blackbox/testdata/env-normalization/env-normalization.qbs b/tests/auto/blackbox/testdata/env-normalization/env-normalization.qbs
new file mode 100644
index 000000000..a197208fb
--- /dev/null
+++ b/tests/auto/blackbox/testdata/env-normalization/env-normalization.qbs
@@ -0,0 +1,12 @@
+import qbs
+import qbs.Environment
+
+Product {
+ Probe {
+ id: dummy
+ property var env: Environment.currentEnv()
+ configure: {
+ console.info(JSON.stringify(env));
+ }
+ }
+}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 21db45279..0fabf9058 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -4742,6 +4742,18 @@ void TestBlackbox::enableRtti()
}
}
+void TestBlackbox::envNormalization()
+{
+ QDir::setCurrent(testDataDir + "/env-normalization");
+ QbsRunParameters params;
+ params.environment.insert("myvar", "x");
+ QCOMPARE(runQbs(params), 0);
+ if (HostOsInfo::isWindowsHost())
+ QVERIFY2(m_qbsStdout.contains("\"MYVAR\":\"x\""), m_qbsStdout.constData());
+ else
+ QVERIFY2(m_qbsStdout.contains("\"myvar\":\"x\""), m_qbsStdout.constData());
+}
+
void TestBlackbox::generatedArtifactAsInputToDynamicRule()
{
QDir::setCurrent(testDataDir + "/generated-artifact-as-input-to-dynamic-rule");
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index 218c10a7a..cc21c2be9 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -83,6 +83,7 @@ private slots:
void enableExceptions();
void enableExceptions_data();
void enableRtti();
+ void envNormalization();
void erroneousFiles_data();
void erroneousFiles();
void errorInfo();