diff options
Diffstat (limited to 'tests/auto/api/tst_api.cpp')
-rw-r--r-- | tests/auto/api/tst_api.cpp | 32 |
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(); |