diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-06-19 16:56:11 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-06-22 12:45:00 +0000 |
commit | daeee1c8fbb45c72aadd454db704d092b8579c81 (patch) | |
tree | e8e5087e78bad5283ab22957330399b9ac263cb6 | |
parent | 6ce0cfe261ea09081b37fa3a9430653c6f5acfad (diff) |
Add autotest for renaming a qbs project file
... that is also a normal source file in a different product.
Unfortunately, this does not trigger the behavior described in the
linked bug report, but it can serve as a starting point.
Task-number: QTCREATORBUG-24037
Change-Id: I78ffb7429b04db5f0eca45b9197ecb2b8bb31211
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
4 files changed, 52 insertions, 0 deletions
diff --git a/tests/auto/api/testdata/renamed-qbs-source-file/renamed-qbs-source-file.qbs b/tests/auto/api/testdata/renamed-qbs-source-file/renamed-qbs-source-file.qbs new file mode 100644 index 000000000..d295d43ea --- /dev/null +++ b/tests/auto/api/testdata/renamed-qbs-source-file/renamed-qbs-source-file.qbs @@ -0,0 +1,9 @@ +Project { + references: "the-product/the-prodduct.qbs" + Product { + Group { + files: "the-product/*.qbs" + fileTags: [] + } + } +} diff --git a/tests/auto/api/testdata/renamed-qbs-source-file/the-product/the-prodduct.qbs b/tests/auto/api/testdata/renamed-qbs-source-file/the-product/the-prodduct.qbs new file mode 100644 index 000000000..86718b571 --- /dev/null +++ b/tests/auto/api/testdata/renamed-qbs-source-file/the-product/the-prodduct.qbs @@ -0,0 +1 @@ +Product { } diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp index 8eaf6c879..94b8da87e 100644 --- a/tests/auto/api/tst_api.cpp +++ b/tests/auto/api/tst_api.cpp @@ -1152,6 +1152,47 @@ void TestApi::disappearedWildcardFile() VERIFY_NO_ERROR(buildJob->error()); } +void TestApi::renamedQbsSource() +{ + const qbs::SetupProjectParameters setupParams + = defaultSetupParameters("renamed-qbs-source-file/renamed-qbs-source-file.qbs"); + std::unique_ptr<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(setupParams, + m_logSink, nullptr)); + QVERIFY(waitForFinished(setupJob.get())); + VERIFY_NO_ERROR(setupJob->error()); + qbs::Project project = setupJob->project(); + QCOMPARE(project.projectData().allProducts().size(), 2); + + std::unique_ptr<qbs::BuildJob> buildJob(project.buildAllProducts({})); + QVERIFY(waitForFinished(buildJob.get())); + VERIFY_NO_ERROR(buildJob->error()); + + WAIT_FOR_NEW_TIMESTAMP(); + const QString oldFilePath = QFileInfo(setupParams.projectFilePath()).path() + + "/the-product/the-prodduct.qbs"; + const QString newFilePath = QFileInfo(setupParams.projectFilePath()).path() + + "/the-product/the-product.qbs"; + QVERIFY(QFile::rename(oldFilePath, newFilePath)); + REPLACE_IN_FILE(setupParams.projectFilePath(), "prodduct", "product"); + buildJob.reset(project.buildAllProducts({})); + QVERIFY(waitForFinished(buildJob.get())); + QVERIFY(buildJob->error().hasError()); + QVERIFY2(buildJob->error().toString().contains( + tr("Source file '%1' has disappeared.") + .arg(oldFilePath)), qPrintable(buildJob->error().toString())); + + setupJob.reset(project.setupProject(setupParams, m_logSink, nullptr)); + QVERIFY(waitForFinished(setupJob.get())); + VERIFY_NO_ERROR(setupJob->error()); + + project = setupJob->project(); + QCOMPARE(project.projectData().allProducts().size(), 2); + + buildJob.reset(project.buildAllProducts({})); + QVERIFY(waitForFinished(buildJob.get())); + VERIFY_NO_ERROR(buildJob->error()); +} + void TestApi::duplicateProductNames() { QFETCH(QString, projectFileName); diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h index c9b38aaa2..d6514e17c 100644 --- a/tests/auto/api/tst_api.h +++ b/tests/auto/api/tst_api.h @@ -133,6 +133,7 @@ private slots: void removeFileDependency(); void renameProduct(); void renameTargetArtifact(); + void renamedQbsSource(); void resolveProject(); void resolveProject_data(); void resolveProjectDryRun(); |