From 15da517b9b911791f99666fc10753da558f88bd3 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Sun, 29 Aug 2010 16:42:03 +0000
Subject: [PATCH] Make failed test locations clickable in output

---
 src/plugins/qt4projectmanager/qtoutputformatter.cpp | 11 +++++++++++
 src/plugins/qt4projectmanager/qtoutputformatter.h   |  1 +
 2 files changed, 12 insertions(+)

diff --git a/src/plugins/qt4projectmanager/qtoutputformatter.cpp b/src/plugins/qt4projectmanager/qtoutputformatter.cpp
index 859f652bb3b..7e17e575e35 100644
--- a/src/plugins/qt4projectmanager/qtoutputformatter.cpp
+++ b/src/plugins/qt4projectmanager/qtoutputformatter.cpp
@@ -44,6 +44,7 @@ QtOutputFormatter::QtOutputFormatter(Qt4Project *project)
     , m_qmlError(QLatin1String("(file:///.+:\\d+:\\d+):"))
     , m_qtError(QLatin1String("Object::.*in (.*:\\d+)"))
     , m_qtAssert(QLatin1String("^ASSERT: .* in file (.+, line \\d+)$"))
+    , m_qtTestFail(QLatin1String("^   Loc: \\[(.*)\\]$"))
     , m_project(project)
 {
 }
@@ -65,6 +66,10 @@ LinkResult QtOutputFormatter::matchLine(const QString &line) const
         lr.href = m_qtAssert.cap(1);
         lr.start = m_qtAssert.pos(1);
         lr.end = lr.start + lr.href.length();
+    } else if (m_qtTestFail.indexIn(line) != -1) {
+        lr.href = m_qtTestFail.cap(1);
+        lr.start = m_qtTestFail.pos(1);
+        lr.end = lr.start + lr.href.length();
     }
     return lr;
 }
@@ -178,6 +183,12 @@ void QtOutputFormatter::handleLink(const QString &href)
             line = qtAssertLink.cap(2).toInt();
         }
 
+        QRegExp qtTestFailLink(QLatin1String("^(.*)\\((\\d+)\\)$"));
+        if (qtTestFailLink.indexIn(href) != -1) {
+            fileName = qtTestFailLink.cap(1);
+            line = qtTestFailLink.cap(2).toInt();
+        }
+
         if (!fileName.isEmpty()) {
             QFileInfo fi(fileName);
             if (fi.isRelative()) {
diff --git a/src/plugins/qt4projectmanager/qtoutputformatter.h b/src/plugins/qt4projectmanager/qtoutputformatter.h
index 9b90a0d37d7..72f87f4ee3e 100644
--- a/src/plugins/qt4projectmanager/qtoutputformatter.h
+++ b/src/plugins/qt4projectmanager/qtoutputformatter.h
@@ -62,6 +62,7 @@ private:
     QRegExp m_qmlError;
     QRegExp m_qtError;
     QRegExp m_qtAssert;
+    QRegExp m_qtTestFail;
     QWeakPointer<Qt4Project> m_project;
     QTextCharFormat m_linkFormat;
     QString m_lastLine;
-- 
GitLab