diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-05-22 15:13:18 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-05-22 15:26:36 +0000 |
commit | 8f39e05e40fa1d7fe3ca45942f39c9848f10015b (patch) | |
tree | b64413298cc18410814bdef729fd069109ca2a37 | |
parent | 66f603628b62b6865ebd039b729713c0a64ae851 (diff) | |
download | qt-creator-8f39e05e40fa1d7fe3ca45942f39c9848f10015b.tar.gz |
Adapt MSVC output parser to MSVC 2015.
The space character after the line number was removed from
the compiler messages.
Change-Id: Ia249a6d4416744c67aada2eb2c5c26cf87bd7ef7
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
-rw-r--r-- | src/plugins/projectexplorer/msvcparser.cpp | 13 | ||||
-rw-r--r-- | src/plugins/projectexplorer/outputparser_test.cpp | 13 |
2 files changed, 23 insertions, 3 deletions
diff --git a/src/plugins/projectexplorer/msvcparser.cpp b/src/plugins/projectexplorer/msvcparser.cpp index a472827ed5..f088ce86af 100644 --- a/src/plugins/projectexplorer/msvcparser.cpp +++ b/src/plugins/projectexplorer/msvcparser.cpp @@ -34,7 +34,8 @@ #include <utils/qtcassert.h> #include <utils/fileutils.h> -static const char FILE_POS_PATTERN[] = "(cl|LINK|.+) : "; +// As of MSVC 2015: "foo.cpp(42) :" -> "foo.cpp(42):" +static const char FILE_POS_PATTERN[] = "(cl|LINK|.+[^ ]) ?: "; static const char ERROR_PATTERN[] = "[A-Z]+\\d\\d\\d\\d ?:"; static QPair<Utils::FileName, int> parseFileName(const QString &input) @@ -225,6 +226,16 @@ void ProjectExplorerPlugin::testMsvcOutputParsers_data() Constants::TASK_CATEGORY_COMPILE)) << QString(); + QTest::newRow("labeled error-2015") + << QString::fromLatin1("qmlstandalone\\main.cpp(54): error C4716: 'findUnresolvedModule' : must return a value") << OutputParserTester::STDOUT + << QString() << QString() + << (QList<Task>() + << Task(Task::Error, + QLatin1String("C4716: 'findUnresolvedModule' : must return a value"), + Utils::FileName::fromUserInput(QLatin1String("qmlstandalone\\main.cpp")), 54, + Constants::TASK_CATEGORY_COMPILE)) + << QString(); + QTest::newRow("labeled warning") << QString::fromLatin1("x:\\src\\plugins\\projectexplorer\\msvcparser.cpp(69) : warning C4100: 'something' : unreferenced formal parameter") << OutputParserTester::STDOUT << QString() << QString() diff --git a/src/plugins/projectexplorer/outputparser_test.cpp b/src/plugins/projectexplorer/outputparser_test.cpp index bd5112f71a..f29e95f4e4 100644 --- a/src/plugins/projectexplorer/outputparser_test.cpp +++ b/src/plugins/projectexplorer/outputparser_test.cpp @@ -37,6 +37,13 @@ namespace ProjectExplorer { +static inline QByteArray msgFileComparisonFail(const Utils::FileName &f1, const Utils::FileName &f2) +{ + const QString result = QLatin1Char('"') + f1.toUserOutput() + + QLatin1String("\" != \"") + f2.toUserOutput() + QLatin1Char('"'); + return result.toLocal8Bit(); +} + OutputParserTester::OutputParserTester() : m_debug(false) { } @@ -83,7 +90,8 @@ void OutputParserTester::testParsing(const QString &lines, for (int i = 0; i < tasks.size(); ++i) { QCOMPARE(m_receivedTasks.at(i).category, tasks.at(i).category); QCOMPARE(m_receivedTasks.at(i).description, tasks.at(i).description); - QCOMPARE(m_receivedTasks.at(i).file, tasks.at(i).file); + QVERIFY2(m_receivedTasks.at(i).file == tasks.at(i).file, + msgFileComparisonFail(m_receivedTasks.at(i).file, tasks.at(i).file)); QCOMPARE(m_receivedTasks.at(i).line, tasks.at(i).line); QCOMPARE(static_cast<int>(m_receivedTasks.at(i).type), static_cast<int>(tasks.at(i).type)); } @@ -103,7 +111,8 @@ void OutputParserTester::testTaskMangling(const Task &input, if (m_receivedTasks.size() == 1) { QCOMPARE(m_receivedTasks.at(0).category, output.category); QCOMPARE(m_receivedTasks.at(0).description, output.description); - QCOMPARE(m_receivedTasks.at(0).file, output.file); + QVERIFY2(m_receivedTasks.at(0).file == output.file, + msgFileComparisonFail(m_receivedTasks.at(0).file, output.file)); QCOMPARE(m_receivedTasks.at(0).line, output.line); QCOMPARE(m_receivedTasks.at(0).type, output.type); } |