Skip to content

Commit f44258a

Browse files
authored
TestErrorLogger: added tests (#8413)
- added test for `{code}` - added tests for symbol and newline in error messages
1 parent db9f970 commit f44258a

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

test/testerrorlogger.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ class TestErrorLogger : public TestFixture {
5151
TEST_CASE(ErrorMessageConstructLocations);
5252
TEST_CASE(ErrorMessageVerbose);
5353
TEST_CASE(ErrorMessageVerboseLocations);
54+
TEST_CASE(ErrorMessageVerboseSymbol);
55+
TEST_CASE(ErrorMessageVerboseNewline);
5456
TEST_CASE(ErrorMessageFromInternalError);
57+
TEST_CASE(ErrorMessageCode);
5558
TEST_CASE(CustomFormat);
5659
TEST_CASE(CustomFormat2);
5760
TEST_CASE(CustomFormatLocations);
@@ -284,6 +287,27 @@ class TestErrorLogger : public TestFixture {
284287
ASSERT_EQUALS("[foo.cpp:5] -> [bar.cpp:8]: (error) Verbose error", msg.toString(true, templateFormat, ""));
285288
}
286289

290+
void ErrorMessageVerboseSymbol() const {
291+
std::list<ErrorMessage::FileLocation> locs(1, fooCpp5);
292+
ErrorMessage msg(std::move(locs), "", Severity::error, "$symbol:sym\nProgramming error with $symbol.\nVerbose error about $symbol", "errorId", Certainty::normal);
293+
ASSERT_EQUALS(1, msg.callStack.size());
294+
ASSERT_EQUALS("Programming error with sym.", msg.shortMessage());
295+
ASSERT_EQUALS("Verbose error about sym", msg.verboseMessage());
296+
ASSERT_EQUALS("[foo.cpp:5]: (error) Programming error with sym.", msg.toString(false, templateFormat, ""));
297+
ASSERT_EQUALS("[foo.cpp:5]: (error) Verbose error about sym", msg.toString(true, templateFormat, ""));
298+
ASSERT_EQUALS("sym\n", msg.symbolNames());
299+
}
300+
301+
void ErrorMessageVerboseNewline() const {
302+
std::list<ErrorMessage::FileLocation> locs(1, fooCpp5);
303+
ErrorMessage msg(std::move(locs), "", Severity::error, "Programming error.\nVerbose error\nEven more verbose", "errorId", Certainty::normal);
304+
ASSERT_EQUALS(1, msg.callStack.size());
305+
ASSERT_EQUALS("Programming error.", msg.shortMessage());
306+
ASSERT_EQUALS("Verbose error\nEven more verbose", msg.verboseMessage());
307+
ASSERT_EQUALS("[foo.cpp:5]: (error) Programming error.", msg.toString(false, templateFormat, ""));
308+
ASSERT_EQUALS("[foo.cpp:5]: (error) Verbose error\nEven more verbose", msg.toString(true, templateFormat, ""));
309+
}
310+
287311
void ErrorMessageFromInternalError() const {
288312
// TODO: test with token
289313
{
@@ -341,6 +365,25 @@ class TestErrorLogger : public TestFixture {
341365
testReportType(ReportType::certC, Severity::error, "resourceLeak", "L3", "FIO42-C");
342366
}
343367

368+
void ErrorMessageCode() const {
369+
ScopedFile file("code.cpp",
370+
"int i;\n"
371+
"int i2;\n"
372+
"int i3;\n"
373+
);
374+
375+
ErrorMessage::FileLocation codeCpp3_5{"code.cpp", 3, 5};
376+
std::list<ErrorMessage::FileLocation> locs = { codeCpp3_5 };
377+
ErrorMessage msg(std::move(locs), "", Severity::error, "Programming error.\nVerbose error", "errorId", Certainty::normal);
378+
ASSERT_EQUALS(1, msg.callStack.size());
379+
ASSERT_EQUALS("Programming error.", msg.shortMessage());
380+
ASSERT_EQUALS("Verbose error", msg.verboseMessage());
381+
ASSERT_EQUALS("code.cpp:3:5: error: Programming error. [errorId]\n"
382+
"int i3;\n"
383+
" ^",
384+
msg.toString(false, "{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\n{code}", ""));
385+
}
386+
344387
void CustomFormat() const {
345388
std::list<ErrorMessage::FileLocation> locs(1, fooCpp5);
346389
ErrorMessage msg(std::move(locs), "", Severity::error, "Programming error.\nVerbose error", "errorId", Certainty::normal);

0 commit comments

Comments
 (0)