aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/api/tst_api.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/api/tst_api.cpp')
-rw-r--r--tests/auto/api/tst_api.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index cc85fd704..fd2968441 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -29,6 +29,8 @@
#include "tst_api.h"
+#include "../shared.h"
+
#include <api/jobs.h>
#include <api/project.h>
#include <api/projectdata.h>
@@ -760,6 +762,36 @@ void TestApi::nonexistingProjectPropertyFromCommandLine()
qPrintable(job->error().toString()));
}
+void TestApi::projectInvalidation()
+{
+ qbs::SetupProjectParameters setupParams = defaultSetupParameters();
+ setupParams.setRestoreBehavior(qbs::SetupProjectParameters::RestoreAndTrackChanges);
+ const QString projectDirPath = QDir::cleanPath(m_workingDataDir + "/project-invalidation");
+ setupParams.setProjectFilePath(projectDirPath + "/project.qbs");
+ QDir::setCurrent(projectDirPath);
+ QVERIFY(QFile::copy("project.no-error.qbs", "project.qbs"));
+ QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(setupParams,
+ m_logSink, 0));
+ waitForFinished(setupJob.data());
+ QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString()));
+ qbs::Project project = setupJob->project();
+ QVERIFY(project.isValid());
+ waitForNewTimestamp();
+ QVERIFY(QFile::remove("project.qbs"));
+ QVERIFY(QFile::copy("project.early-error.qbs", "project.qbs"));
+ setupJob.reset(project.setupProject(setupParams, m_logSink, 0));
+ waitForFinished(setupJob.data());
+ QVERIFY(setupJob->error().hasError());
+ QVERIFY(project.isValid()); // Error in Loader, old project still valid.
+ waitForNewTimestamp();
+ QVERIFY(QFile::remove("project.qbs"));
+ QVERIFY(QFile::copy("project.late-error.qbs", "project.qbs"));
+ setupJob.reset(project.setupProject(setupParams, m_logSink, 0));
+ waitForFinished(setupJob.data());
+ QVERIFY(setupJob->error().hasError());
+ QVERIFY(!project.isValid()); // Error in build data re-resolving, old project not valid anymore.
+}
+
void TestApi::projectLocking()
{
qbs::SetupProjectParameters setupParams = defaultSetupParameters();