diff --git a/src/plugins/projectexplorer/xcodebuildparser.cpp b/src/plugins/projectexplorer/xcodebuildparser.cpp index 95107fa8e45581f2cd6d2f26890ec21fcbd06dc1..ce83d2037236e2cb4c3372cf1fa9cb4bfa5af74b 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 49baff868c6d29d5f1399a984ba597842030f194..bb49fce88fe2d4f13e59d2b1284f918bd3e56357 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;