aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2017-06-22 16:14:35 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2017-06-22 15:05:48 +0000
commit7e0191856b3c76517a2654183b52192713ff5770 (patch)
treebbad0dd36d552f572d9faade7350dae8736f3f34
parent59bbb6ffe0a4529b7a87538550b63bb63563613b (diff)
Executor: Do not convert error objects into stringsv1.8.1
Command line users do not see a difference, but for IDE users it is important that we keep error message and code location separate in the ErrorInfo objects we hand out via the API. Task-number: QBS-1151 Change-Id: I4aacf2f32ee535c2d37da3d615ab78e2777a351a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/buildgraph/executor.cpp3
-rw-r--r--tests/auto/api/testdata/build-error-code-location/build-error-code-location.qbs12
-rw-r--r--tests/auto/api/tst_api.cpp14
-rw-r--r--tests/auto/api/tst_api.h1
4 files changed, 29 insertions, 1 deletions
diff --git a/src/lib/corelib/buildgraph/executor.cpp b/src/lib/corelib/buildgraph/executor.cpp
index b95f9ea5a..29b963778 100644
--- a/src/lib/corelib/buildgraph/executor.cpp
+++ b/src/lib/corelib/buildgraph/executor.cpp
@@ -723,7 +723,8 @@ void Executor::doSanityChecks()
void Executor::handleError(const ErrorInfo &error)
{
- m_error.append(error.toString());
+ for (const ErrorItem &ei : error.items())
+ m_error.append(ei);
if (m_processingJobs.isEmpty())
finish();
else
diff --git a/tests/auto/api/testdata/build-error-code-location/build-error-code-location.qbs b/tests/auto/api/testdata/build-error-code-location/build-error-code-location.qbs
new file mode 100644
index 000000000..f51e91e1f
--- /dev/null
+++ b/tests/auto/api/testdata/build-error-code-location/build-error-code-location.qbs
@@ -0,0 +1,12 @@
+import qbs
+
+Product {
+ name: "p"
+ type: ["p.out"]
+ Rule {
+ multiplex: true
+ outputFileTags: ["p.out"]
+ outputArtifacts: { }
+ prepare: {}
+ }
+}
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 99af1cf52..ef4a6e71c 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -253,6 +253,20 @@ void TestApi::baseProperties()
VERIFY_NO_ERROR(errorInfo);
}
+void TestApi::buildErrorCodeLocation()
+{
+ const qbs::ErrorInfo errorInfo
+ = doBuildProject("build-error-code-location/build-error-code-location.qbs");
+ QVERIFY(errorInfo.hasError());
+ const qbs::ErrorItem errorItem = errorInfo.items().first();
+ QCOMPARE(errorItem.description(),
+ QString("Rule.outputArtifacts must return an array of objects."));
+ const qbs::CodeLocation errorLoc = errorItem.codeLocation();
+ QCOMPARE(QFileInfo(errorLoc.filePath()).fileName(), QString("build-error-code-location.qbs"));
+ QCOMPARE(errorLoc.line(), 9);
+ QCOMPARE(errorLoc.column(), 26);
+}
+
void TestApi::buildGraphLocking()
{
qbs::SetupProjectParameters setupParams
diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h
index c7e4c0670..c78229779 100644
--- a/tests/auto/api/tst_api.h
+++ b/tests/auto/api/tst_api.h
@@ -59,6 +59,7 @@ private slots:
void addQObjectMacroToCppFile();
void addedFilePersistent();
void baseProperties();
+ void buildErrorCodeLocation();
void buildGraphLocking();
void buildProject();
void buildProject_data();