diff --git a/lib/errorlogger.cpp b/lib/errorlogger.cpp index b8a07dc10..626fd32d7 100644 --- a/lib/errorlogger.cpp +++ b/lib/errorlogger.cpp @@ -70,7 +70,11 @@ std::string ErrorLogger::ErrorMessage::serialize() const std::ostringstream oss; oss << _id.length() << " " << _id; oss << Severity::toString(_severity).length() << " " << Severity::toString(_severity); - oss << (_inconclusive ? "12 inconclusive" : ""); + if (_inconclusive) + { + const std::string inconclusive("inconclusive"); + oss << inconclusive.length() << " " << inconclusive; + } oss << _shortMessage.length() << " " << _shortMessage; oss << _verboseMessage.length() << " " << _verboseMessage; oss << _callStack.size() << " "; @@ -108,7 +112,7 @@ bool ErrorLogger::ErrorMessage::deserialize(const std::string &data) if (temp == "inconclusive") { _inconclusive = true; - break; + continue; } results.push_back(temp); diff --git a/test/testerrorlogger.cpp b/test/testerrorlogger.cpp index 868fc7179..67aeca3b4 100644 --- a/test/testerrorlogger.cpp +++ b/test/testerrorlogger.cpp @@ -43,6 +43,9 @@ private: // Inconclusive results in xml reports.. TEST_CASE(InconclusiveXml); + + // Serialize / Deserialize inconclusive message + TEST_CASE(SerializeInconclusiveMessage); } void FileLocationDefaults() @@ -184,5 +187,26 @@ private: // TODO: how should inconclusive messages be saved when the xml version is 2? ASSERT_EQUALS("", msg.toXML(false, 2)); } + + void SerializeInconclusiveMessage() + { + // Inconclusive error message + std::list locs; + ErrorMessage msg(locs, Severity::error, "Programming error", "errorId", true); + ASSERT_EQUALS("7 errorId" + "5 error" + "12 inconclusive" + "17 Programming error" + "17 Programming error" + "0 ", msg.serialize()); + + ErrorMessage msg2; + msg2.deserialize(msg.serialize()); + ASSERT_EQUALS("errorId", msg2._id); + ASSERT_EQUALS(Severity::error, msg2._severity); + ASSERT_EQUALS(true, msg2._inconclusive); + ASSERT_EQUALS("Programming error", msg2.shortMessage()); + ASSERT_EQUALS("Programming error", msg2.verboseMessage()); + } }; REGISTER_TEST(TestErrorLogger)