diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2016-09-08 15:29:30 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2016-09-30 09:12:42 +0000 |
commit | 96b501d80e539a832ef9f2bef4f34162eb8ad3e2 (patch) | |
tree | 4b5c54efa27a0a50ee4e874334671e0856593227 /tests | |
parent | bf3a7979a41b166b8dc178a3cc6a22f15a4e6ea5 (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.cpp | 1 | ||||
-rw-r--r-- | tests/auto/api/testdata/restored-warnings/main.cpp | 1 | ||||
-rw-r--r-- | tests/auto/api/testdata/restored-warnings/restored-warnings.qbs | 15 | ||||
-rw-r--r-- | tests/auto/api/tst_api.cpp | 49 | ||||
-rw-r--r-- | tests/auto/api/tst_api.h | 1 |
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(); |