aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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();