aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/api
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-07-23 14:36:52 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-07-23 16:28:36 +0200
commitbbae2f5918ec902533c769387f32d53bf8582bb0 (patch)
treeaceb3a3104218a49608406158de0d19fc0ffd210 /tests/auto/api
parent77ba7c98a81009122e99681dd4e34a4c4309de52 (diff)
API: Be smarter about adding files already matched by wildcards.
The project file does not need an update in this case. Actually, that would even lead to an error on the next project resolving, as the file would then be listed twice (once explicitly and once matched by a pattern). Task-number: QBS-653 Change-Id: If56969c36d1bba3f9194621690c2e1f25229ee9e Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'tests/auto/api')
-rw-r--r--tests/auto/api/testdata/project-editing/project.qbs8
-rw-r--r--tests/auto/api/testdata/project-editing/test.wildcard0
-rw-r--r--tests/auto/api/tst_api.cpp44
3 files changed, 45 insertions, 7 deletions
diff --git a/tests/auto/api/testdata/project-editing/project.qbs b/tests/auto/api/testdata/project-editing/project.qbs
index 9190f846c..57cb30355 100644
--- a/tests/auto/api/testdata/project-editing/project.qbs
+++ b/tests/auto/api/testdata/project-editing/project.qbs
@@ -27,5 +27,13 @@ CppApplication {
prefix: "blubb"
files: []
}
+ Group {
+ name: "Group with wildcards"
+ files: "*.klaus"
+ }
+ Group {
+ name: "Other group with wildcards"
+ files: "*.wildcard"
+ }
files: "main.cpp"
}
diff --git a/tests/auto/api/testdata/project-editing/test.wildcard b/tests/auto/api/testdata/project-editing/test.wildcard
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/auto/api/testdata/project-editing/test.wildcard
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 95ec57264..cc85fd704 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -181,8 +181,9 @@ qbs::GroupData findGroup(const qbs::ProductData &product, const QString &name)
void TestApi::changeContent()
{
qbs::SetupProjectParameters setupParams = defaultSetupParameters();
- setupParams.setProjectFilePath(QDir::cleanPath(m_workingDataDir +
- "/project-editing/project.qbs"));
+ const QString workingDir = m_workingDataDir + "/project-editing";
+ QDir::setCurrent(workingDir);
+ setupParams.setProjectFilePath(QDir::cleanPath(workingDir + "/project.qbs"));
QScopedPointer<qbs::SetupProjectJob> job(qbs::Project().setupProject(setupParams,
m_logSink, 0));
waitForFinished(job.data());
@@ -191,7 +192,7 @@ void TestApi::changeContent()
qbs::ProjectData projectData = project.projectData();
QCOMPARE(projectData.allProducts().count(), 1);
qbs::ProductData product = projectData.allProducts().first();
- QCOMPARE(product.groups().count(), 6);
+ QCOMPARE(product.groups().count(), 8);
// Error handling: Invalid product.
qbs::ErrorInfo errorInfo = project.addGroup(qbs::ProductData(), "blubb");
@@ -224,7 +225,7 @@ void TestApi::changeContent()
projectData = project.projectData();
QVERIFY(projectData.products().count() == 1);
product = projectData.products().first();
- QCOMPARE(product.groups().count(), 8);
+ QCOMPARE(product.groups().count(), 10);
qbs::GroupData group = findGroup(product, "New Group 1");
QVERIFY(group.isValid());
errorInfo = project.addFiles(product, group, QStringList() << "file.h" << "file.cpp");
@@ -234,7 +235,7 @@ void TestApi::changeContent()
projectData = project.projectData();
QVERIFY(projectData.products().count() == 1);
product = projectData.products().first();
- QCOMPARE(product.groups().count(), 8);
+ QCOMPARE(product.groups().count(), 10);
group = findGroup(product, "New Group 1");
QVERIFY(group.isValid());
errorInfo = project.addFiles(product, group, QStringList() << "file.cpp");
@@ -249,7 +250,7 @@ void TestApi::changeContent()
projectData = project.projectData();
QVERIFY(projectData.products().count() == 1);
product = projectData.products().first();
- QCOMPARE(product.groups().count(), 8);
+ QCOMPARE(product.groups().count(), 10);
group = findGroup(product, "New Group 1");
QVERIFY(group.isValid());
errorInfo = project.removeFiles(product, group, QStringList() << "file.h");
@@ -331,13 +332,42 @@ void TestApi::changeContent()
QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString()));
projectData = project.projectData();
QVERIFY(projectData.products().count() == 1);
- QCOMPARE(projectData.products().first().groups().count(), 7);
+ QCOMPARE(projectData.products().first().groups().count(), 9);
// Error handling: Try to remove the same group again.
errorInfo = project.removeGroup(product, group);
QVERIFY(errorInfo.hasError());
QVERIFY2(errorInfo.toString().contains("does not exist"), qPrintable(errorInfo.toString()));
+ // Add a file to a group where the file name is already matched by a wildcard.
+ projectData = project.projectData();
+ QVERIFY(projectData.products().count() == 1);
+ product = projectData.products().first();
+ group = findGroup(product, "Group with wildcards");
+ QVERIFY(group.isValid());
+ QFile newFile("koerper.klaus");
+ QVERIFY2(newFile.open(QIODevice::WriteOnly), qPrintable(newFile.errorString()));
+ newFile.close();
+ errorInfo = project.addFiles(product, group, QStringList() << newFile.fileName());
+ QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString()));
+ projectData = project.projectData();
+ QVERIFY(projectData.products().count() == 1);
+ product = projectData.products().first();
+ group = findGroup(product, "Group with wildcards");
+ QVERIFY(group.isValid());
+ QCOMPARE(group.expandedWildcards().count(), 1);
+ QCOMPARE(group.expandedWildcards().first(), QFileInfo(newFile).absoluteFilePath());
+
+ // Error checking: Try to remove a file that originates from a wildcard pattern.
+ projectData = project.projectData();
+ QVERIFY(projectData.products().count() == 1);
+ product = projectData.products().first();
+ group = findGroup(product, "Other group with wildcards");
+ QVERIFY(group.isValid());
+ errorInfo = project.removeFiles(product, group, QStringList() << "test.wildcard");
+ QVERIFY(errorInfo.hasError());
+ QVERIFY2(errorInfo.toString().contains("pattern"), qPrintable(errorInfo.toString()));
+
// Check whether building will take the added and removed cpp files into account.
// This must not be moved below the re-resolving test!!!
qbs::BuildOptions buildOptions;