From 826c43a337b0de06af74081b8471e2ee7a2fec29 Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed <fawzi.mohamed@digia.com> Date: Thu, 30 Oct 2014 18:50:34 +0100 Subject: [PATCH] xcodeparser: detect replacing signature warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The “replacing signature†warning of codesign is interpreted by the LdParser as an error. Handle it in the xcodeparser. Change-Id: Ic7e654d7d60a5030be309509d27080ab7cb3bd4f Task-number: QTCREATORBUG-13256 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com> --- .../projectexplorer/xcodebuildparser.cpp | 33 +++++++++++++++++++ .../projectexplorer/xcodebuildparser.h | 1 + 2 files changed, 34 insertions(+) diff --git a/src/plugins/projectexplorer/xcodebuildparser.cpp b/src/plugins/projectexplorer/xcodebuildparser.cpp index 95107fa8e45..ce83d203723 100644 --- a/src/plugins/projectexplorer/xcodebuildparser.cpp +++ b/src/plugins/projectexplorer/xcodebuildparser.cpp @@ -41,6 +41,7 @@ namespace ProjectExplorer { static const char failureRe[] = "\\*\\* BUILD FAILED \\*\\*$"; static const char successRe[] = "\\*\\* BUILD SUCCEEDED \\*\\*$"; static const char buildRe[] = "=== BUILD (AGGREGATE )?TARGET (.*) OF PROJECT (.*) WITH .* ===$"; +static const char signatureChangeRe[] = "(.+): replacing existing signature$"; XcodebuildParser::XcodebuildParser() : m_fatalErrorCount(0), @@ -53,6 +54,8 @@ XcodebuildParser::XcodebuildParser() : QTC_CHECK(m_successRe.isValid()); m_buildRe.setPattern(QLatin1String(buildRe)); QTC_CHECK(m_buildRe.isValid()); + m_replacingSignatureRe.setPattern(QLatin1String(signatureChangeRe)); + QTC_CHECK(m_replacingSignatureRe.isValid()); } bool XcodebuildParser::hasFatalErrors() const @@ -74,6 +77,16 @@ void XcodebuildParser::stdOutput(const QString &line) m_xcodeBuildParserState = OutsideXcodebuild; return; } + if (m_replacingSignatureRe.indexIn(lne) > -1) { + Task task(Task::Warning, + QCoreApplication::translate("ProjectExplorer::XcodebuildParser", + "Replacing signature"), + Utils::FileName::fromString(m_replacingSignatureRe.cap(1)), /* filename */ + -1, /* line */ + Constants::TASK_CATEGORY_COMPILE); + taskAdded(task); + return; + } IOutputParser::stdError(line); } else { IOutputParser::stdOutput(line); @@ -241,6 +254,26 @@ void ProjectExplorerPlugin::testXcodebuildParserParsing_data() Constants::TASK_CATEGORY_COMPILE)) << QString() << XcodebuildParser::UnknownXcodebuildState; + QTest::newRow("inside catch codesign replace signature") + << XcodebuildParser::InXcodebuild + << QString::fromLatin1("/somepath/somefile.app: replacing existing signature") << OutputParserTester::STDOUT + << QString() << QString() + << (QList<Task>() + << Task(Task::Warning, + QCoreApplication::translate("ProjectExplorer::XcodebuildParser", + "Replacing signature"), + Utils::FileName::fromString(QLatin1String("/somepath/somefile.app")), /* filename */ + -1, /* line */ + Constants::TASK_CATEGORY_COMPILE)) + << QString() + << XcodebuildParser::InXcodebuild; + QTest::newRow("outside forward codesign replace signature") + << XcodebuildParser::OutsideXcodebuild + << QString::fromLatin1("/somepath/somefile.app: replacing existing signature") << OutputParserTester::STDOUT + << QString::fromLatin1("/somepath/somefile.app: replacing existing signature\n") << QString() + << QList<Task>() + << QString() + << XcodebuildParser::OutsideXcodebuild; } void ProjectExplorerPlugin::testXcodebuildParserParsing() diff --git a/src/plugins/projectexplorer/xcodebuildparser.h b/src/plugins/projectexplorer/xcodebuildparser.h index 49baff868c6..bb49fce88fe 100644 --- a/src/plugins/projectexplorer/xcodebuildparser.h +++ b/src/plugins/projectexplorer/xcodebuildparser.h @@ -59,6 +59,7 @@ private: QRegExp m_failureRe; QRegExp m_successRe; QRegExp m_buildRe; + QRegExp m_replacingSignatureRe; XcodebuildStatus m_xcodeBuildParserState; QString m_lastTarget; QString m_lastProject; -- GitLab