diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-02-26 14:56:38 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-02-26 17:51:38 +0100 |
commit | 78fa3cbf4ffdc1c7469e471e6b0349b3b5a14931 (patch) | |
tree | 391d366e9b5ededa29cd20535f69c9f74b8c8b2c /src | |
parent | 3db9811427b737d7f116578ead054d18876c93db (diff) |
Do not share product properties with artifacts.
Since products potentially share their property maps with their groups,
artifacts get product properties such as "name" and
"destinationDirectory". This is strange and can mess with change
tracking. Therefore we split up the product's property map in two: One
contains the module properties and is potentially shared with groups,
the other has the actual product properties and is not shared.
This patch also removes a workaround from an autotest that was required
until now to prevent a false positive in change tracking.
Change-Id: Ia1f1f0ce32669fd893a99f809753df526bf1442a
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/corelib/api/project.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/api/runenvironment.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/buildgraph.cpp | 11 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/buildgraphloader.cpp | 24 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/projectbuilddata.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/rulesapplicator.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/jsextensions/moduleproperties.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/language.cpp | 10 | ||||
-rw-r--r-- | src/lib/corelib/language/language.h | 3 | ||||
-rw-r--r-- | src/lib/corelib/language/projectresolver.cpp | 26 | ||||
-rw-r--r-- | src/lib/corelib/language/tst_language.cpp | 67 | ||||
-rw-r--r-- | src/lib/corelib/tools/persistence.cpp | 2 |
12 files changed, 87 insertions, 66 deletions
diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp index 8907e54a8..dd4d57a97 100644 --- a/src/lib/corelib/api/project.cpp +++ b/src/lib/corelib/api/project.cpp @@ -329,7 +329,7 @@ void ProjectPrivate::addGroup(const ProductData &product, const QString &groupNa resolvedGroup->location = groupInserter.itemPosition(); resolvedGroup->enabled = true; resolvedGroup->name = groupName; - resolvedGroup->properties = resolvedProduct->properties; + resolvedGroup->properties = resolvedProduct->moduleProperties; resolvedGroup->overrideTags = false; resolvedProduct->groups << resolvedGroup; foreach (const ProductData &newProduct, m_projectData.allProducts()) { diff --git a/src/lib/corelib/api/runenvironment.cpp b/src/lib/corelib/api/runenvironment.cpp index 25ec6ab46..b0be216f8 100644 --- a/src/lib/corelib/api/runenvironment.cpp +++ b/src/lib/corelib/api/runenvironment.cpp @@ -132,7 +132,7 @@ int RunEnvironment::runShell() int RunEnvironment::runTarget(const QString &targetBin, const QStringList &arguments) { const QStringList targetOS = PropertyFinder().propertyValue( - d->resolvedProduct->properties->value(), + d->resolvedProduct->moduleProperties->value(), QLatin1String("qbs"), QLatin1String("targetOS")).toStringList(); diff --git a/src/lib/corelib/buildgraph/buildgraph.cpp b/src/lib/corelib/buildgraph/buildgraph.cpp index 12ec342e4..5c0b4553c 100644 --- a/src/lib/corelib/buildgraph/buildgraph.cpp +++ b/src/lib/corelib/buildgraph/buildgraph.cpp @@ -89,7 +89,7 @@ private: foreach (const ResolvedModuleConstPtr &dependency, product->modules) { QScriptValue obj = engine->newObject(); setupModuleScriptValue(static_cast<ScriptEngine *>(engine), obj, - product->properties->value(), dependency->name); + product->moduleProperties->value(), dependency->name); result.setProperty(idx++, obj); } return result; @@ -154,13 +154,10 @@ static void setupProductScriptValue(ScriptEngine *engine, QScriptValue &productS DependenciesFunction(engine).init(productScriptValue, product); if (observer) observer->setProductObjectId(productScriptValue.objectId()); - const QVariantMap &propMap = product->properties->value(); + const QVariantMap &propMap = product->productProperties; for (QVariantMap::ConstIterator it = propMap.constBegin(); it != propMap.constEnd(); ++it) { - const QVariant &value = it.value(); - if (it.key() != QLatin1String("modules")) { - engine->setObservedProperty(productScriptValue, it.key(), - engine->toScriptValue(value), observer); - } + engine->setObservedProperty(productScriptValue, it.key(), engine->toScriptValue(it.value()), + observer); } } diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp index 49bd8b91e..cbbab3bf6 100644 --- a/src/lib/corelib/buildgraph/buildgraphloader.cpp +++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp @@ -467,8 +467,8 @@ bool BuildGraphLoader::checkProductForInstallInfoChanges(const ResolvedProductPt const QStringList specialProperties = QStringList() << QLatin1String("install") << QLatin1String("installDir") << QLatin1String("installPrefix"); foreach (const QString &key, specialProperties) { - if (restoredProduct->properties->qbsPropertyValue(key) - != newlyResolvedProduct->properties->qbsPropertyValue(key)) { + if (restoredProduct->moduleProperties->qbsPropertyValue(key) + != newlyResolvedProduct->moduleProperties->qbsPropertyValue(key)) { m_logger.qbsDebug() << "Product property 'qbs." << key << "' changed."; return true; } @@ -652,14 +652,24 @@ static SourceArtifactConstPtr findSourceArtifact(const ResolvedProductConstPtr & return artifact; } +static QVariantMap propertyMapByKind(const ResolvedProductConstPtr &product, Property::Kind kind) +{ + switch (kind) { + case Property::PropertyInModule: + return product->moduleProperties->value(); + case Property::PropertyInProduct: + return product->productProperties; + case Property::PropertyInProject: + return product->project->projectProperties(); + } +} + bool BuildGraphLoader::checkForPropertyChanges(const TransformerPtr &restoredTrafo, const ResolvedProductPtr &freshProduct) { // This check must come first, as it can prevent build data rescuing. foreach (const Property &property, restoredTrafo->propertiesRequestedInCommands) { - const QVariantMap properties = property.kind == Property::PropertyInProject - ? freshProduct->project->projectProperties() : freshProduct->properties->value(); - if (checkForPropertyChange(property, properties)) { + if (checkForPropertyChange(property, propertyMapByKind(freshProduct, property.kind))) { const JavaScriptCommandPtr &pseudoCommand = JavaScriptCommand::create(); pseudoCommand->setSourceCode(QLatin1String("random stuff that will cause " "commandsEqual() to fail")); @@ -669,9 +679,7 @@ bool BuildGraphLoader::checkForPropertyChanges(const TransformerPtr &restoredTra } foreach (const Property &property, restoredTrafo->propertiesRequestedInPrepareScript) { - const QVariantMap properties = property.kind == Property::PropertyInProject - ? freshProduct->project->projectProperties() : freshProduct->properties->value(); - if (checkForPropertyChange(property, properties)) + if (checkForPropertyChange(property, propertyMapByKind(freshProduct, property.kind))) return true; } diff --git a/src/lib/corelib/buildgraph/projectbuilddata.cpp b/src/lib/corelib/buildgraph/projectbuilddata.cpp index cea83b3cb..0111100d1 100644 --- a/src/lib/corelib/buildgraph/projectbuilddata.cpp +++ b/src/lib/corelib/buildgraph/projectbuilddata.cpp @@ -441,7 +441,7 @@ void BuildDataResolver::resolveProductBuildData(const ResolvedProductPtr &produc qbsFileArtifact = new Artifact; qbsFileArtifact->artifactType = Artifact::SourceFile; qbsFileArtifact->setFilePath(product->location.fileName()); - qbsFileArtifact->properties = product->properties; + qbsFileArtifact->properties = product->moduleProperties; insertArtifact(product, qbsFileArtifact, m_logger); } qbsFileArtifact->fileTags.insert("qbs"); diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp index e297ef23d..7e7ca1876 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.cpp +++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp @@ -371,7 +371,7 @@ Artifact *RulesApplicator::createOutputArtifact(const QString &filePath, const F outputArtifact->setFilePath(outputPath); outputArtifact->fileTags = fileTags; outputArtifact->alwaysUpdated = alwaysUpdated; - outputArtifact->properties = m_product->properties; + outputArtifact->properties = m_product->moduleProperties; insertArtifact(m_product, outputArtifact, m_logger); m_createdArtifacts += outputArtifact; } diff --git a/src/lib/corelib/jsextensions/moduleproperties.cpp b/src/lib/corelib/jsextensions/moduleproperties.cpp index 1d8286320..93aab3975 100644 --- a/src/lib/corelib/jsextensions/moduleproperties.cpp +++ b/src/lib/corelib/jsextensions/moduleproperties.cpp @@ -111,7 +111,7 @@ QScriptValue ModuleProperties::moduleProperties(QScriptContext *context, QScript PropertyMapConstPtr properties; const Artifact *artifact = 0; if (typeScriptValue.toString() == productType()) { - properties = static_cast<const ResolvedProduct *>(ptr)->properties; + properties = static_cast<const ResolvedProduct *>(ptr)->moduleProperties; } else if (typeScriptValue.toString() == artifactType()) { artifact = static_cast<const Artifact *>(ptr); properties = artifact->properties; diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp index 2f10adad4..ffe1e16da 100644 --- a/src/lib/corelib/language/language.cpp +++ b/src/lib/corelib/language/language.cpp @@ -495,7 +495,8 @@ void ResolvedProduct::load(PersistentPool &pool) >> sourceDirectory >> destinationDirectory >> location; - properties = pool.idLoadS<PropertyMapInternal>(); + pool.stream() >> productProperties; + moduleProperties = pool.idLoadS<PropertyMapInternal>(); pool.loadContainerS(rules); pool.loadContainerS(dependencies); pool.loadContainerS(fileTaggers); @@ -517,7 +518,8 @@ void ResolvedProduct::store(PersistentPool &pool) const << destinationDirectory << location; - pool.store(properties); + pool.stream() << productProperties; + pool.store(moduleProperties); pool.storeContainer(rules); pool.storeContainer(dependencies); pool.storeContainer(fileTaggers); @@ -686,7 +688,7 @@ void ResolvedProduct::setupBuildEnvironment(ScriptEngine *engine, const QProcess if (!buildEnvironment.isEmpty()) return; - buildEnvironment = getProcessEnvironment(engine, BuildEnv, modules, properties, + buildEnvironment = getProcessEnvironment(engine, BuildEnv, modules, moduleProperties, topLevelProject(), env); } @@ -695,7 +697,7 @@ void ResolvedProduct::setupRunEnvironment(ScriptEngine *engine, const QProcessEn if (!runEnvironment.isEmpty()) return; - runEnvironment = getProcessEnvironment(engine, RunEnv, modules, properties, + runEnvironment = getProcessEnvironment(engine, RunEnv, modules, moduleProperties, topLevelProject(), env); } diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h index d2b79a74f..ef545433a 100644 --- a/src/lib/corelib/language/language.h +++ b/src/lib/corelib/language/language.h @@ -359,7 +359,8 @@ public: QString destinationDirectory; CodeLocation location; WeakPointer<ResolvedProject> project; - PropertyMapPtr properties; + QVariantMap productProperties; + PropertyMapPtr moduleProperties; QSet<RulePtr> rules; QSet<ResolvedProductPtr> dependencies; QList<FileTaggerConstPtr> fileTaggers; diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp index 4dcec436d..c2f21de07 100644 --- a/src/lib/corelib/language/projectresolver.cpp +++ b/src/lib/corelib/language/projectresolver.cpp @@ -317,8 +317,12 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext) product->destinationDirectory = m_evaluator->stringValue(item, QLatin1String("destinationDirectory")); product->location = item->location(); - product->properties = PropertyMapInternal::create(); - product->properties->setValue(createProductConfig()); + product->productProperties = createProductConfig(); + QVariantMap moduleProperties; + moduleProperties.insert(QLatin1String("modules"), + product->productProperties.take(QLatin1String("modules"))); + product->moduleProperties = PropertyMapInternal::create(); + product->moduleProperties->setValue(moduleProperties); ModuleProperties::init(m_evaluator->scriptValue(item), product); QList<Item *> subItems = item->children(); @@ -443,10 +447,10 @@ void ProjectResolver::resolveGroup(Item *item, ProjectContext *projectContext) { Q_UNUSED(projectContext); checkCancelation(); - PropertyMapPtr properties = m_productContext->product->properties; + PropertyMapPtr moduleProperties = m_productContext->product->moduleProperties; if (isSomeModulePropertySet(item)) { - properties = PropertyMapInternal::create(); - properties->setValue(evaluateModuleValues(item)); + moduleProperties = PropertyMapInternal::create(); + moduleProperties->setValue(evaluateModuleValues(item)); } const bool isEnabled = m_evaluator->boolValue(item, QLatin1String("condition")); @@ -497,13 +501,13 @@ void ProjectResolver::resolveGroup(Item *item, ProjectContext *projectContext) wildcards->patterns = patterns; QSet<QString> files = wildcards->expandPatterns(group, m_productContext->product->sourceDirectory); foreach (const QString &fileName, files) - createSourceArtifact(m_productContext->product, properties, fileName, + createSourceArtifact(m_productContext->product, moduleProperties, fileName, group->fileTags, group->overrideTags, wildcards->files); group->wildcards = wildcards; } foreach (const QString &fileName, files) - createSourceArtifact(m_productContext->product, properties, fileName, + createSourceArtifact(m_productContext->product, moduleProperties, fileName, group->fileTags, group->overrideTags, group->files); ErrorInfo fileError; foreach (const SourceArtifactConstPtr &a, group->files) { @@ -519,7 +523,7 @@ void ProjectResolver::resolveGroup(Item *item, ProjectContext *projectContext) group->name = m_evaluator->stringValue(item, QLatin1String("name")); if (group->name.isEmpty()) group->name = Tr::tr("Group %1").arg(m_productContext->product->groups.count()); - group->properties = properties; + group->properties = moduleProperties; m_productContext->product->groups += group; } @@ -752,7 +756,7 @@ void ProjectResolver::resolveTransformer(Item *item, ProjectContext *projectCont if (Q_UNLIKELY(child->typeName() != QLatin1String("Artifact"))) throw ErrorInfo(Tr::tr("Transformer: wrong child type '%0'.").arg(child->typeName())); SourceArtifactPtr artifact = SourceArtifact::create(); - artifact->properties = m_productContext->product->properties; + artifact->properties = m_productContext->product->moduleProperties; QString fileName = m_evaluator->stringValue(child, QLatin1String("fileName")); if (Q_UNLIKELY(fileName.isEmpty())) throw ErrorInfo(Tr::tr("Artifact fileName must not be empty.")); @@ -854,11 +858,11 @@ void ProjectResolver::resolveProductDependencies(ProjectContext *projectContext) if (exportedConfig.isEmpty()) continue; - insertExportedConfig(usedProductName, exportedConfig, rproduct->properties); + insertExportedConfig(usedProductName, exportedConfig, rproduct->moduleProperties); // insert the configuration of the Export item into the artifact configurations foreach (SourceArtifactPtr artifact, rproduct->allEnabledFiles()) { - if (artifact->properties != rproduct->properties) + if (artifact->properties != rproduct->moduleProperties) insertExportedConfig(usedProductName, exportedConfig, artifact->properties); } diff --git a/src/lib/corelib/language/tst_language.cpp b/src/lib/corelib/language/tst_language.cpp index 2308a7aa2..71436c3a3 100644 --- a/src/lib/corelib/language/tst_language.cpp +++ b/src/lib/corelib/language/tst_language.cpp @@ -86,9 +86,14 @@ ResolvedModuleConstPtr TestLanguage::findModuleByName(ResolvedProductPtr product QVariant TestLanguage::productPropertyValue(ResolvedProductPtr product, QString propertyName) { QStringList propertyNameComponents = propertyName.split(QLatin1Char('.')); - if (propertyNameComponents.count() > 1) + QVariantMap properties; + if (propertyNameComponents.count() > 1) { propertyNameComponents.prepend(QLatin1String("modules")); - return getConfigProperty(product->properties->value(), propertyNameComponents); + properties = product->moduleProperties->value(); + } else { + properties = product->productProperties; + } + return getConfigProperty(properties, propertyNameComponents); } void TestLanguage::handleInitCleanupDataTags(const char *projectFileName, bool *handled) @@ -161,7 +166,7 @@ void TestLanguage::baseProperty() QHash<QString, ResolvedProductPtr> products = productsFromProject(project); ResolvedProductPtr product = products.value("product1"); QVERIFY(product); - QVariantMap cfg = product->properties->value(); + QVariantMap cfg = product->productProperties; QCOMPARE(cfg.value("narf").toStringList(), QStringList() << "boo"); QCOMPARE(cfg.value("zort").toStringList(), QStringList() << "bar" << "boo"); } catch (const ErrorInfo &e) { @@ -399,13 +404,13 @@ void TestLanguage::exports() QVERIFY(product); QStringList propertyName = QStringList() << "modules" << "mylib" << "modules" << "dummy" << "defines"; - QVariant propertyValue = getConfigProperty(product->properties->value(), propertyName); + QVariant propertyValue = getConfigProperty(product->moduleProperties->value(), propertyName); QCOMPARE(propertyValue.toStringList(), QStringList() << "USE_MYLIB"); product = products.value("mylib"); QVERIFY(product); propertyName = QStringList() << "modules" << "dummy" << "defines"; - propertyValue = getConfigProperty(product->properties->value(), propertyName); + propertyValue = getConfigProperty(product->moduleProperties->value(), propertyName); QCOMPARE(propertyValue.toStringList(), QStringList() << "BUILD_MYLIB"); product = products.value("A"); @@ -427,11 +432,11 @@ void TestLanguage::exports() QVERIFY(product); propertyName = QStringList() << "modules" << "productWithInheritedExportItem" << "modules" << "dummy" << "cxxFlags"; - propertyValue = getConfigProperty(product->properties->value(), propertyName); + propertyValue = getConfigProperty(product->moduleProperties->value(), propertyName); QCOMPARE(propertyValue.toStringList(), QStringList() << "-bar"); propertyName = QStringList() << "modules" << "productWithInheritedExportItem" << "modules" << "dummy" << "defines"; - propertyValue = getConfigProperty(product->properties->value(), propertyName); + propertyValue = getConfigProperty(product->moduleProperties->value(), propertyName); QCOMPARE(propertyValue.toStringList(), QStringList() << "ABC"); } catch (const ErrorInfo &e) { @@ -451,7 +456,7 @@ void TestLanguage::fileContextProperties() QHash<QString, ResolvedProductPtr> products = productsFromProject(project); ResolvedProductPtr product = products.value("product1"); QVERIFY(product); - QVariantMap cfg = product->properties->value(); + QVariantMap cfg = product->productProperties; QCOMPARE(cfg.value("narf").toString(), defaultParameters.projectFilePath()); QString dirPath = QFileInfo(defaultParameters.projectFilePath()).absolutePath(); QCOMPARE(cfg.value("zort").toString(), dirPath); @@ -585,20 +590,23 @@ void TestLanguage::homeDirectory() QVERIFY(product); QDir dir = QDir::home(); - QCOMPARE(product->properties->value().value("home").toString(), dir.canonicalPath()); - QCOMPARE(product->properties->value().value("homeSlash").toString(), dir.canonicalPath()); + QCOMPARE(product->productProperties.value("home").toString(), dir.canonicalPath()); + QCOMPARE(product->productProperties.value("homeSlash").toString(), + dir.canonicalPath()); dir.cdUp(); - QCOMPARE(product->properties->value().value("homeUp").toString(), dir.canonicalPath()); + QCOMPARE(product->productProperties.value("homeUp").toString(), + dir.canonicalPath()); dir = QDir::home(); - QCOMPARE(product->properties->value().value("homeFile").toString(), dir.filePath("a")); + QCOMPARE(product->productProperties.value("homeFile").toString(), + dir.filePath("a")); - QCOMPARE(product->properties->value().value("bogus1").toString(), + QCOMPARE(product->productProperties.value("bogus1").toString(), FileInfo::resolvePath(product->sourceDirectory, QLatin1String("a~b"))); - QCOMPARE(product->properties->value().value("bogus2").toString(), + QCOMPARE(product->productProperties.value("bogus2").toString(), FileInfo::resolvePath(product->sourceDirectory, QLatin1String("a/~/bb"))); - QCOMPARE(product->properties->value().value("user").toString(), + QCOMPARE(product->productProperties.value("user").toString(), FileInfo::resolvePath(product->sourceDirectory, QLatin1String("~foo/bar"))); } catch (const ErrorInfo &e) { @@ -849,7 +857,7 @@ void TestLanguage::moduleProperties() const QString productName = QString::fromLocal8Bit(QTest::currentDataTag()); ResolvedProductPtr product = products.value(productName); QVERIFY(product); - QVariantList values = PropertyFinder().propertyValues(product->properties->value(), + QVariantList values = PropertyFinder().propertyValues(product->moduleProperties->value(), "dummy", propertyName, PropertyFinder::DoMergeLists); QStringList valueStrings; @@ -883,7 +891,7 @@ void TestLanguage::moduleScope() QCOMPARE(products.count(), 1); ResolvedProductPtr product = products.value("product1"); QVERIFY(product); - IntPropertyFinder ipf(product->properties->value()); + IntPropertyFinder ipf(product->moduleProperties->value()); QCOMPARE(ipf.intValue("a"), 2); // overridden in module instance QCOMPARE(ipf.intValue("b"), 1); // genuine QCOMPARE(ipf.intValue("c"), 3); // genuine, dependent on overridden value @@ -941,7 +949,7 @@ void TestLanguage::modules() modulesInProduct.sort(); expectedModulesInProduct.sort(); QCOMPARE(modulesInProduct, expectedModulesInProduct); - QCOMPARE(product->properties->value().value("foo").toString(), expectedProductProperty); + QCOMPARE(product->productProperties.value("foo").toString(), expectedProductProperty); } void TestLanguage::outerInGroup() @@ -988,19 +996,20 @@ void TestLanguage::pathProperties() QHash<QString, ResolvedProductPtr> products = productsFromProject(project); ResolvedProductPtr product = products.value("product1"); QVERIFY(product); - QVariantMap cfg = product->properties->value(); QString projectFileDir = QFileInfo(defaultParameters.projectFilePath()).absolutePath(); - QCOMPARE(cfg.value("projectFileDir").toString(), projectFileDir); + const QVariantMap productProps = product->productProperties; + const QVariantMap moduleProps = product->moduleProperties->value(); + QCOMPARE(productProps.value("projectFileDir").toString(), projectFileDir); QStringList filesInProjectFileDir = QStringList() << FileInfo::resolvePath(projectFileDir, "aboutdialog.h") << FileInfo::resolvePath(projectFileDir, "aboutdialog.cpp"); - QCOMPARE(cfg.value("filesInProjectFileDir").toStringList(), filesInProjectFileDir); - QStringList includePaths = getConfigProperty(cfg, QStringList() << "modules" << "dummy" - << "includePaths").toStringList(); + QCOMPARE(productProps.value("filesInProjectFileDir").toStringList(), filesInProjectFileDir); + QStringList includePaths = getConfigProperty(moduleProps, + QStringList() << "modules" << "dummy" << "includePaths").toStringList(); QCOMPARE(includePaths, QStringList() << projectFileDir); - QCOMPARE(cfg.value("base_fileInProductDir").toString(), + QCOMPARE(productProps.value("base_fileInProductDir").toString(), FileInfo::resolvePath(projectFileDir, QLatin1String("foo"))); - QCOMPARE(cfg.value("base_fileInBaseProductDir").toString(), + QCOMPARE(productProps.value("base_fileInBaseProductDir").toString(), FileInfo::resolvePath(projectFileDir, QLatin1String("subdir/bar"))); } catch (const ErrorInfo &e) { exceptionCaught = true; @@ -1030,15 +1039,15 @@ void TestLanguage::profileValuesAndOverriddenValues() QVERIFY(product); PropertyFinder pf; QVariantList values; - values = pf.propertyValues(product->properties->value(), + values = pf.propertyValues(product->moduleProperties->value(), "dummy", "cxxFlags", PropertyFinder::DoMergeLists); QCOMPARE(values.length(), 1); QCOMPARE(values.first().toString(), QString("IN_PROFILE")); - values = pf.propertyValues(product->properties->value(), + values = pf.propertyValues(product->moduleProperties->value(), "dummy", "defines", PropertyFinder::DoMergeLists); QCOMPARE(values.length(), 1); QCOMPARE(values.first().toString(), QString("IN_FILE")); - values = pf.propertyValues(product->properties->value(), + values = pf.propertyValues(product->moduleProperties->value(), "dummy", "cFlags", PropertyFinder::DoMergeLists); QCOMPARE(values.length(), 1); QCOMPARE(values.first().toString(), QString("OVERRIDDEN")); @@ -1094,7 +1103,7 @@ void TestLanguage::productDirectories() ResolvedProductPtr product; product = products.value("MyApp"); QVERIFY(product); - const QVariantMap config = product->properties->value(); + const QVariantMap config = product->productProperties; QCOMPARE(config.value(QLatin1String("buildDirectory")).toString(), buildDir(defaultParameters)); QCOMPARE(config.value(QLatin1String("sourceDirectory")).toString(), testDataDir()); diff --git a/src/lib/corelib/tools/persistence.cpp b/src/lib/corelib/tools/persistence.cpp index d9c5f56e2..a01d35b46 100644 --- a/src/lib/corelib/tools/persistence.cpp +++ b/src/lib/corelib/tools/persistence.cpp @@ -40,7 +40,7 @@ namespace qbs { namespace Internal { -static const char QBS_PERSISTENCE_MAGIC[] = "QBSPERSISTENCE-64"; +static const char QBS_PERSISTENCE_MAGIC[] = "QBSPERSISTENCE-65"; PersistentPool::PersistentPool(const Logger &logger) : m_logger(logger) { |