aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-09-08 15:29:30 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2016-09-30 09:12:42 +0000
commit96b501d80e539a832ef9f2bef4f34162eb8ad3e2 (patch)
tree4b5c54efa27a0a50ee4e874334671e0856593227 /tests
parentbf3a7979a41b166b8dc178a3cc6a22f15a4e6ea5 (diff)
Re-display warnings when loading a stored build graph
[ChangeLog] Warnings encountered during project resolving are now stored and will be re-displayed when the project is loaded. Task-number: QBS-1011 Change-Id: I5fa04d3d537866212abbdf739b09a254843de473 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/api/testdata/restored-warnings/file.cpp1
-rw-r--r--tests/auto/api/testdata/restored-warnings/main.cpp1
-rw-r--r--tests/auto/api/testdata/restored-warnings/restored-warnings.qbs15
-rw-r--r--tests/auto/api/tst_api.cpp49
-rw-r--r--tests/auto/api/tst_api.h1
5 files changed, 67 insertions, 0 deletions
diff --git a/tests/auto/api/testdata/restored-warnings/file.cpp b/tests/auto/api/testdata/restored-warnings/file.cpp
new file mode 100644
index 000000000..56757a701
--- /dev/null
+++ b/tests/auto/api/testdata/restored-warnings/file.cpp
@@ -0,0 +1 @@
+void f() {}
diff --git a/tests/auto/api/testdata/restored-warnings/main.cpp b/tests/auto/api/testdata/restored-warnings/main.cpp
new file mode 100644
index 000000000..237c8ce18
--- /dev/null
+++ b/tests/auto/api/testdata/restored-warnings/main.cpp
@@ -0,0 +1 @@
+int main() {}
diff --git a/tests/auto/api/testdata/restored-warnings/restored-warnings.qbs b/tests/auto/api/testdata/restored-warnings/restored-warnings.qbs
new file mode 100644
index 000000000..2de943eda
--- /dev/null
+++ b/tests/auto/api/testdata/restored-warnings/restored-warnings.qbs
@@ -0,0 +1,15 @@
+import qbs
+import qbs.Process 1.5
+
+CppApplication {
+ name: "theProduct"
+
+ property bool moreFiles: false
+ cpp.blubb: true
+
+ files: ["file.cpp", "main.cpp"]
+ Group {
+ condition: moreFiles
+ files: ["blubb.cpp"]
+ }
+}
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 88582fd15..cada604f3 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -1947,6 +1947,55 @@ void TestApi::resolveProjectDryRun_data()
return resolveProject_data();
}
+void TestApi::restoredWarnings()
+{
+ qbs::SetupProjectParameters setupParams
+ = defaultSetupParameters("restored-warnings/restored-warnings.qbs");
+ setupParams.setPropertyCheckingMode(qbs::ErrorHandlingMode::Relaxed);
+ setupParams.setProductErrorMode(qbs::ErrorHandlingMode::Relaxed);
+
+ // Initial resolving: Errors are new.
+ QScopedPointer<qbs::SetupProjectJob> job(qbs::Project().setupProject(setupParams,
+ m_logSink, 0));
+ waitForFinished(job.data());
+ QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
+ job.reset(nullptr);
+ QCOMPARE(m_logSink->warnings.count(), 2);
+ foreach (const qbs::ErrorInfo &e, m_logSink->warnings) {
+ const QString msg = e.toString();
+ QVERIFY2(msg.contains("Superfluous version")
+ || msg.contains("Property 'blubb' is not declared"),
+ qPrintable(msg));
+ }
+ m_logSink->warnings.clear();
+
+ // Re-resolving with no changes: Errors come from the stored build graph.
+ job.reset(qbs::Project().setupProject(setupParams, m_logSink, 0));
+ waitForFinished(job.data());
+ QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
+ job.reset(nullptr);
+ QCOMPARE(m_logSink->warnings.count(), 2);
+ m_logSink->warnings.clear();
+
+ // Re-resolving with changes: Errors come from the re-resolving, stored ones must be suppressed.
+ QVariantMap overridenValues;
+ overridenValues.insert("theProduct.moreFiles", true);
+ setupParams.setOverriddenValues(overridenValues);
+ job.reset(qbs::Project().setupProject(setupParams, m_logSink, 0));
+ waitForFinished(job.data());
+ QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
+ job.reset(nullptr);
+ QCOMPARE(m_logSink->warnings.count(), 4); // One more for the additional group
+ foreach (const qbs::ErrorInfo &e, m_logSink->warnings) {
+ const QString msg = e.toString();
+ QVERIFY2(msg.contains("Superfluous version")
+ || msg.contains("Property 'blubb' is not declared")
+ || msg.contains("blubb.cpp' does not exist"),
+ qPrintable(msg));
+ }
+ m_logSink->warnings.clear();
+}
+
void TestApi::ruleConflict()
{
const qbs::ErrorInfo errorInfo = doBuildProject("rule-conflict/rule-conflict.qbs");
diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h
index 4e7f7add3..54aed93e8 100644
--- a/tests/auto/api/tst_api.h
+++ b/tests/auto/api/tst_api.h
@@ -123,6 +123,7 @@ private slots:
void resolveProject_data();
void resolveProjectDryRun();
void resolveProjectDryRun_data();
+ void restoredWarnings();
void ruleConflict();
void softDependency();
void sourceFileInBuildDir();