From 9a0ef8ac64eb47fd932aebbb0751c431c0b74a08 Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Fri, 15 Mar 2019 07:03:28 +0100 Subject: [PATCH] QtSupport: De-duplicate test failure pattern The pattern needed to be changed to create a single capuring group that is used in QtOutputFormatter::matchLine() and in QtTestOutputReader::processPlainTextOutput(). Also, trailing characters (except whitespaces like carriage return on Windows) are now forbidden. Change-Id: I5c6260276e0c2954b917daa12c6882c99f135fa0 Reviewed-by: Christian Stenger Reviewed-by: Christian Kandeler --- src/plugins/qtsupport/qtoutputformatter.h | 4 ++-- src/plugins/qtsupport/qttestparser.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/qtsupport/qtoutputformatter.h b/src/plugins/qtsupport/qtoutputformatter.h index 9aaa2249015..45f1a1e3966 100644 --- a/src/plugins/qtsupport/qtoutputformatter.h +++ b/src/plugins/qtsupport/qtoutputformatter.h @@ -33,8 +33,8 @@ #define QT_QML_URL_REGEXP "(?:file|qrc):(?://)?/.+?" #define QT_ASSERT_REGEXP "ASSERT: .* in file (.+, line \\d+)" #define QT_ASSERT_X_REGEXP "ASSERT failure in .*: \".*\", file (.+, line \\d+)" -#define QT_TEST_FAIL_UNIX_REGEXP "^ Loc: \\[(.*)\\]$" -#define QT_TEST_FAIL_WIN_REGEXP "^(.*\\(\\d+\\)) : failure location\\s*$" +#define QT_TEST_FAIL_UNIX_REGEXP "^ Loc: \\[((?.+)\\((?\\d+)\\))\\]$" +#define QT_TEST_FAIL_WIN_REGEXP "^((?.+)\\((?\\d+)\\)) : failure location\\s*$" namespace ProjectExplorer { class Project; } diff --git a/src/plugins/qtsupport/qttestparser.cpp b/src/plugins/qtsupport/qttestparser.cpp index 2f6a747f96a..eb907fc4601 100644 --- a/src/plugins/qtsupport/qttestparser.cpp +++ b/src/plugins/qtsupport/qttestparser.cpp @@ -25,6 +25,8 @@ #include "qttestparser.h" +#include "qtoutputformatter.h" + #include #include #include @@ -61,8 +63,8 @@ void QtTestParser::stdOutput(const QString &line) return; } static const QRegularExpression locationPattern(HostOsInfo::isWindowsHost() - ? QString("^(?.+)\\((?\\d+)\\) : failure location.*$") - : QString("^ Loc: \\[(?.+)\\((?\\d+)\\)\\].*$")); + ? QString(QT_TEST_FAIL_WIN_REGEXP) + : QString(QT_TEST_FAIL_UNIX_REGEXP)); QTC_CHECK(locationPattern.isValid()); const QRegularExpressionMatch match = locationPattern.match(theLine); if (match.hasMatch()) {