From dceadd2d2c29d6fb93fc5cd057c3a82695ad2619 Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 12 Jan 2025 16:05:06 +0100 Subject: [PATCH 1/2] TestErrorLogger: added tests for symbol and newline in error messages --- test/testerrorlogger.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/testerrorlogger.cpp b/test/testerrorlogger.cpp index 42537ca36fb..96b4c192fe3 100644 --- a/test/testerrorlogger.cpp +++ b/test/testerrorlogger.cpp @@ -51,6 +51,8 @@ class TestErrorLogger : public TestFixture { TEST_CASE(ErrorMessageConstructLocations); TEST_CASE(ErrorMessageVerbose); TEST_CASE(ErrorMessageVerboseLocations); + TEST_CASE(ErrorMessageVerboseSymbol); + TEST_CASE(ErrorMessageVerboseNewline); TEST_CASE(ErrorMessageFromInternalError); TEST_CASE(CustomFormat); TEST_CASE(CustomFormat2); @@ -284,6 +286,27 @@ class TestErrorLogger : public TestFixture { ASSERT_EQUALS("[foo.cpp:5] -> [bar.cpp:8]: (error) Verbose error", msg.toString(true, templateFormat, "")); } + void ErrorMessageVerboseSymbol() const { + std::list locs(1, fooCpp5); + ErrorMessage msg(std::move(locs), "", Severity::error, "$symbol:sym\nProgramming error with $symbol.\nVerbose error about $symbol", "errorId", Certainty::normal); + ASSERT_EQUALS(1, msg.callStack.size()); + ASSERT_EQUALS("Programming error with sym.", msg.shortMessage()); + ASSERT_EQUALS("Verbose error about sym", msg.verboseMessage()); + ASSERT_EQUALS("[foo.cpp:5]: (error) Programming error with sym.", msg.toString(false, templateFormat, "")); + ASSERT_EQUALS("[foo.cpp:5]: (error) Verbose error about sym", msg.toString(true, templateFormat, "")); + ASSERT_EQUALS("sym\n", msg.symbolNames()); + } + + void ErrorMessageVerboseNewline() const { + std::list locs(1, fooCpp5); + ErrorMessage msg(std::move(locs), "", Severity::error, "Programming error.\nVerbose error\nEven more verbose", "errorId", Certainty::normal); + ASSERT_EQUALS(1, msg.callStack.size()); + ASSERT_EQUALS("Programming error.", msg.shortMessage()); + ASSERT_EQUALS("Verbose error\nEven more verbose", msg.verboseMessage()); + ASSERT_EQUALS("[foo.cpp:5]: (error) Programming error.", msg.toString(false, templateFormat, "")); + ASSERT_EQUALS("[foo.cpp:5]: (error) Verbose error\nEven more verbose", msg.toString(true, templateFormat, "")); + } + void ErrorMessageFromInternalError() const { // TODO: test with token { From f9a7db216bf0cb1bf6396ed6fad97f7490c38010 Mon Sep 17 00:00:00 2001 From: firewave Date: Wed, 22 Oct 2025 22:23:34 +0200 Subject: [PATCH 2/2] TestErrorLogger: added test for `{code}` --- test/testerrorlogger.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/testerrorlogger.cpp b/test/testerrorlogger.cpp index 96b4c192fe3..01bdfc7f8ce 100644 --- a/test/testerrorlogger.cpp +++ b/test/testerrorlogger.cpp @@ -54,6 +54,7 @@ class TestErrorLogger : public TestFixture { TEST_CASE(ErrorMessageVerboseSymbol); TEST_CASE(ErrorMessageVerboseNewline); TEST_CASE(ErrorMessageFromInternalError); + TEST_CASE(ErrorMessageCode); TEST_CASE(CustomFormat); TEST_CASE(CustomFormat2); TEST_CASE(CustomFormatLocations); @@ -364,6 +365,25 @@ class TestErrorLogger : public TestFixture { testReportType(ReportType::certC, Severity::error, "resourceLeak", "L3", "FIO42-C"); } + void ErrorMessageCode() const { + ScopedFile file("code.cpp", + "int i;\n" + "int i2;\n" + "int i3;\n" + ); + + ErrorMessage::FileLocation codeCpp3_5{"code.cpp", 3, 5}; + std::list locs = { codeCpp3_5 }; + ErrorMessage msg(std::move(locs), "", Severity::error, "Programming error.\nVerbose error", "errorId", Certainty::normal); + ASSERT_EQUALS(1, msg.callStack.size()); + ASSERT_EQUALS("Programming error.", msg.shortMessage()); + ASSERT_EQUALS("Verbose error", msg.verboseMessage()); + ASSERT_EQUALS("code.cpp:3:5: error: Programming error. [errorId]\n" + "int i3;\n" + " ^", + msg.toString(false, "{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\n{code}", "")); + } + void CustomFormat() const { std::list locs(1, fooCpp5); ErrorMessage msg(std::move(locs), "", Severity::error, "Programming error.\nVerbose error", "errorId", Certainty::normal);