Skip to content

Commit 0beef13

Browse files
author
Daniel Marjamäki
committed
ErrorLogger: Refactoring/fixing the serializer/deserializer for inconclusive messages
1 parent f9c97c7 commit 0beef13

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

lib/errorlogger.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ std::string ErrorLogger::ErrorMessage::serialize() const
7070
std::ostringstream oss;
7171
oss << _id.length() << " " << _id;
7272
oss << Severity::toString(_severity).length() << " " << Severity::toString(_severity);
73-
oss << (_inconclusive ? "12 inconclusive" : "");
73+
if (_inconclusive)
74+
{
75+
const std::string inconclusive("inconclusive");
76+
oss << inconclusive.length() << " " << inconclusive;
77+
}
7478
oss << _shortMessage.length() << " " << _shortMessage;
7579
oss << _verboseMessage.length() << " " << _verboseMessage;
7680
oss << _callStack.size() << " ";
@@ -108,7 +112,7 @@ bool ErrorLogger::ErrorMessage::deserialize(const std::string &data)
108112
if (temp == "inconclusive")
109113
{
110114
_inconclusive = true;
111-
break;
115+
continue;
112116
}
113117

114118
results.push_back(temp);

test/testerrorlogger.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ class TestErrorLogger : public TestFixture
4343

4444
// Inconclusive results in xml reports..
4545
TEST_CASE(InconclusiveXml);
46+
47+
// Serialize / Deserialize inconclusive message
48+
TEST_CASE(SerializeInconclusiveMessage);
4649
}
4750

4851
void FileLocationDefaults()
@@ -184,5 +187,26 @@ class TestErrorLogger : public TestFixture
184187
// TODO: how should inconclusive messages be saved when the xml version is 2?
185188
ASSERT_EQUALS("", msg.toXML(false, 2));
186189
}
190+
191+
void SerializeInconclusiveMessage()
192+
{
193+
// Inconclusive error message
194+
std::list<ErrorLogger::ErrorMessage::FileLocation> locs;
195+
ErrorMessage msg(locs, Severity::error, "Programming error", "errorId", true);
196+
ASSERT_EQUALS("7 errorId"
197+
"5 error"
198+
"12 inconclusive"
199+
"17 Programming error"
200+
"17 Programming error"
201+
"0 ", msg.serialize());
202+
203+
ErrorMessage msg2;
204+
msg2.deserialize(msg.serialize());
205+
ASSERT_EQUALS("errorId", msg2._id);
206+
ASSERT_EQUALS(Severity::error, msg2._severity);
207+
ASSERT_EQUALS(true, msg2._inconclusive);
208+
ASSERT_EQUALS("Programming error", msg2.shortMessage());
209+
ASSERT_EQUALS("Programming error", msg2.verboseMessage());
210+
}
187211
};
188212
REGISTER_TEST(TestErrorLogger)

0 commit comments

Comments
 (0)