diff --git a/src/plugins/autotest/qtest/qttestoutputreader.cpp b/src/plugins/autotest/qtest/qttestoutputreader.cpp index a1595d7c723..d71fd655091 100644 --- a/src/plugins/autotest/qtest/qttestoutputreader.cpp +++ b/src/plugins/autotest/qtest/qttestoutputreader.cpp @@ -34,6 +34,8 @@ #include #include +#include + namespace Autotest { namespace Internal { @@ -188,6 +190,15 @@ void QtTestOutputReader::processXMLOutput(const QByteArray &outputLine) if (m_className.isEmpty() && outputLine.trimmed().isEmpty()) return; + if (m_expectTag) { + for (auto ch : outputLine) { + if (std::isspace(ch)) + continue; + if (ch != '<') + return; + break; + } + } m_xmlReader.addData(QString::fromUtf8(outputLine)); while (!m_xmlReader.atEnd()) { if (m_futureInterface.isCanceled()) @@ -255,6 +266,7 @@ void QtTestOutputReader::processXMLOutput(const QByteArray &outputLine) break; } case QXmlStreamReader::Characters: { + m_expectTag = false; QStringRef text = m_xmlReader.text().trimmed(); if (text.isEmpty()) break; @@ -285,6 +297,7 @@ void QtTestOutputReader::processXMLOutput(const QByteArray &outputLine) break; } case QXmlStreamReader::EndElement: { + m_expectTag = true; m_cdataMode = None; const QStringRef currentTag = m_xmlReader.name(); if (currentTag == QStringLiteral("TestFunction")) { diff --git a/src/plugins/autotest/qtest/qttestoutputreader.h b/src/plugins/autotest/qtest/qttestoutputreader.h index 8b29b39ceff..ce2b35416c4 100644 --- a/src/plugins/autotest/qtest/qttestoutputreader.h +++ b/src/plugins/autotest/qtest/qttestoutputreader.h @@ -91,7 +91,7 @@ private: QXmlStreamReader m_xmlReader; OutputMode m_mode = XML; TestType m_testType = TestType::QtTest; - + bool m_expectTag = true; }; } // namespace Internal