aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-09-24 14:17:59 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-09-24 17:49:36 +0200
commitf25526ee38331f3e5b9926de525de2d292b5b9fa (patch)
tree7353e62d68b34ce23ebf7b5066ce3849a0be537e
parent7a4988687d3db80d4d75ab13c87a629551fb7345 (diff)
Store the build graph when adding or removing files.
Otherwise, if the project is closed without building, it will needlessly be re-resolved the next time it is opened. Change-Id: I6b88498c5576539d8ee9c5f84e22344af44d2bfe Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r--src/lib/corelib/api/project.cpp8
-rw-r--r--tests/auto/api/tst_api.cpp1
2 files changed, 9 insertions, 0 deletions
diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp
index 2b36d971a..6856adaae 100644
--- a/src/lib/corelib/api/project.cpp
+++ b/src/lib/corelib/api/project.cpp
@@ -1060,6 +1060,8 @@ ErrorInfo Project::addGroup(const ProductData &product, const QString &groupName
QBS_CHECK(isValid());
d->prepareChangeToProject();
d->addGroup(product, groupName);
+ d->internalProject->lastResolveTime = FileTime::currentTime();
+ d->internalProject->store(d->logger);
return ErrorInfo();
} catch (ErrorInfo errorInfo) {
errorInfo.prepend(Tr::tr("Failure adding group '%1' to product '%2'.")
@@ -1085,6 +1087,8 @@ ErrorInfo Project::addFiles(const ProductData &product, const GroupData &group,
QBS_CHECK(isValid());
d->prepareChangeToProject();
d->addFiles(product, group, filePaths);
+ d->internalProject->lastResolveTime = FileTime::currentTime();
+ d->internalProject->store(d->logger);
return ErrorInfo();
} catch (ErrorInfo errorInfo) {
errorInfo.prepend(Tr::tr("Failure adding files to product."));
@@ -1109,6 +1113,8 @@ ErrorInfo Project::removeFiles(const ProductData &product, const GroupData &grou
QBS_CHECK(isValid());
d->prepareChangeToProject();
d->removeFiles(product, group, filePaths);
+ d->internalProject->lastResolveTime = FileTime::currentTime();
+ d->internalProject->store(d->logger);
return ErrorInfo();
} catch (ErrorInfo errorInfo) {
errorInfo.prepend(Tr::tr("Failure removing files from product '%1'.").arg(product.name()));
@@ -1128,6 +1134,8 @@ ErrorInfo Project::removeGroup(const ProductData &product, const GroupData &grou
QBS_CHECK(isValid());
d->prepareChangeToProject();
d->removeGroup(product, group);
+ d->internalProject->lastResolveTime = FileTime::currentTime();
+ d->internalProject->store(d->logger);
return ErrorInfo();
} catch (ErrorInfo errorInfo) {
errorInfo.prepend(Tr::tr("Failure removing group '%1' from product '%2'.")
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 687863876..1ed331cca 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -771,6 +771,7 @@ void TestApi::projectInvalidation()
const QString projectDirPath = QDir::cleanPath(m_workingDataDir + "/project-invalidation");
setupParams.setProjectFilePath(projectDirPath + "/project.qbs");
QDir::setCurrent(projectDirPath);
+ setupParams.setBuildRoot(projectDirPath);
QVERIFY(QFile::copy("project.no-error.qbs", "project.qbs"));
QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(setupParams,
m_logSink, 0));