aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/jsextensions/moduleproperties.cpp9
-rw-r--r--src/lib/jsextensions/moduleproperties.h1
-rw-r--r--tests/auto/blackbox/testdata/codegen/codegen.qbs6
3 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/jsextensions/moduleproperties.cpp b/src/lib/jsextensions/moduleproperties.cpp
index 86297a3eb..cc9102b73 100644
--- a/src/lib/jsextensions/moduleproperties.cpp
+++ b/src/lib/jsextensions/moduleproperties.cpp
@@ -121,7 +121,7 @@ QScriptValue ModuleProperties::moduleProperties(QScriptContext *context, QScript
}
ScriptEngine * const qbsEngine = static_cast<ScriptEngine *>(engine);
- const QString moduleName = context->argument(0).toString();
+ const QString moduleName = internalModuleName(context->argument(0).toString());
const QString propertyName = context->argument(1).toString();
QVariant value = qbsEngine->retrieveFromPropertyCache(moduleName, propertyName, properties);
@@ -143,5 +143,12 @@ QScriptValue ModuleProperties::moduleProperties(QScriptContext *context, QScript
return engine->toScriptValue(value);
}
+QString ModuleProperties::internalModuleName(const QString &name)
+{
+ QString result = name;
+ result.replace(QLatin1Char('.'), QLatin1Char('/'));
+ return result;
+}
+
} // namespace Internal
} // namespace qbs
diff --git a/src/lib/jsextensions/moduleproperties.h b/src/lib/jsextensions/moduleproperties.h
index 644f5f25c..9032d83ee 100644
--- a/src/lib/jsextensions/moduleproperties.h
+++ b/src/lib/jsextensions/moduleproperties.h
@@ -53,6 +53,7 @@ private:
static QScriptValue moduleProperties(QScriptContext *context, QScriptEngine *engine,
bool oneValue);
+ static QString internalModuleName(const QString &name);
};
} // namespace Internal
diff --git a/tests/auto/blackbox/testdata/codegen/codegen.qbs b/tests/auto/blackbox/testdata/codegen/codegen.qbs
index d7210e21c..bb71a5540 100644
--- a/tests/auto/blackbox/testdata/codegen/codegen.qbs
+++ b/tests/auto/blackbox/testdata/codegen/codegen.qbs
@@ -18,6 +18,7 @@ Project {
fileTags: ['text']
}
Depends { name: 'cpp' }
+ Depends { name: 'Qt.core' }
}
Rule {
@@ -40,6 +41,11 @@ Project {
return str;
}
+ // check whether multipart module name translation is working
+ var actual = product.moduleProperty("Qt.core", "mocName");
+ if (!actual || !actual.contains("moc"))
+ throw "multipart module name translation is broken";
+
// check whether we can access project properties here
var expected = "CODEGEN_" + product.moduleProperty("qbs", "targetOS")[0].toUpperCase();
if (project.osSpecificName !== expected)