@@ -46,6 +46,7 @@ class TestErrorLogger : public TestFixture {
4646 TEST_CASE (ErrorMessageVerbose);
4747 TEST_CASE (ErrorMessageVerboseLocations);
4848 TEST_CASE (ErrorMessageFromInternalError);
49+ TEST_CASE (ErrorMessageColorized);
4950 TEST_CASE (CustomFormat);
5051 TEST_CASE (CustomFormat2);
5152 TEST_CASE (CustomFormatLocations);
@@ -193,6 +194,34 @@ class TestErrorLogger : public TestFixture {
193194 }
194195 }
195196
197+ void ErrorMessageColorized () const {
198+ const bool oDisableColors = gDisableColors ;
199+ gDisableColors = false ;
200+ setenv (" CLICOLOR_FORCE" , " 1" , 1 );
201+ std::list<ErrorMessage::FileLocation> locs = { };
202+ {
203+ ErrorMessage msg (std::move (locs), emptyString, Severity::error, " Programming error.\n Verbose error" , " errorId" ,
204+ Certainty::normal);
205+ ASSERT_EQUALS (" {bold} \x1b [31merror: Programming error." , msg.toString (false , " {bold} {severity}: {message}" ));
206+ }
207+ {
208+ ErrorMessage msg (std::move (locs), emptyString, Severity::warning, " Programming warning.\n Verbose warning" , " errorId" ,
209+ Certainty::normal);
210+ ASSERT_EQUALS (" {bold} \x1b [35mwarning: Programming warning." , msg.toString (false , " {bold} {severity}: {message}" ));
211+ }
212+ {
213+ ErrorMessage msg (std::move (locs), emptyString, Severity::style, " Style.\n Verbose style" , " errorId" , Certainty::normal);
214+ ASSERT_EQUALS (" {bold} \x1b [1mstyle: Style." , msg.toString (false , " {bold} {severity}: {message}" ));
215+ }
216+ {
217+ ErrorMessage msg (std::move (locs), emptyString, Severity::information, " Programming information.\n Programming information" ,
218+ " errorId" , Certainty::normal);
219+ ASSERT_EQUALS (" {bold} \x1b [32minformation: Programming information." , msg.toString (false , " {bold} {severity}: {message}" ));
220+ }
221+ setenv (" CLICOLOR_FORCE" , " " , 1 );
222+ gDisableColors = oDisableColors;
223+ }
224+
196225 void CustomFormat () const {
197226 std::list<ErrorMessage::FileLocation> locs (1 , fooCpp5);
198227 ErrorMessage msg (std::move (locs), emptyString, Severity::error, " Programming error.\n Verbose error" , " errorId" , Certainty::normal);
0 commit comments