This is an automated email from the ASF dual-hosted git repository. swebb2066 pushed a commit to branch colorize_unit_test_output in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit 3c767b583f2ae6740a33b9b8e3b175a8bd10e0db Author: Stephen Webb <[email protected]> AuthorDate: Sun Aug 31 14:08:29 2025 +1000 Add color to unit test output --- src/test/cpp/abts.cpp | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/test/cpp/abts.cpp b/src/test/cpp/abts.cpp index 5d833588..49c47402 100644 --- a/src/test/cpp/abts.cpp +++ b/src/test/cpp/abts.cpp @@ -29,6 +29,10 @@ static int verbose = 0; static int exclude = 0; static int quiet = 0; static int list_tests = 0; +static char errorPrefix[] = {"\x1B[31m"}; // red +static char warnPrefix[] = {"\x1B[33m"}; // yellow +static char infoPrefix[] = {"\x1B[32m"}; // green +static char msgSuffix[] = {"\x1B[0m"}; // none const char** testlist = NULL; // defined in logunit.cpp @@ -84,7 +88,7 @@ static void update_status(void) if (!quiet) { curr_char = (curr_char + 1) % ABTS_STAT_SIZE; - fprintf(stdout, "\b%c", status[curr_char]); + fprintf(stdout, "%s\b%c", infoPrefix, status[curr_char]); fflush(stdout); } } @@ -103,12 +107,12 @@ static void end_suite(abts_suite* suite) if (last->failed.size() == 0) { - fprintf(stdout, "SUCCESS\n"); + fprintf(stdout, "%sSUCCESS%s\n", infoPrefix, msgSuffix); fflush(stdout); } else { - fprintf(stdout, "FAILED %d of %d\n", (int)last->failed.size(), last->num_test); + fprintf(stdout, "%sFAILED %d of %d%s\n", warnPrefix, (int)last->failed.size(), last->num_test, msgSuffix); fflush(stdout); } } @@ -148,7 +152,7 @@ abts_suite* abts_add_suite(abts_suite* suite, const char* suite_name_full) if (p) { - int length = p - suite_name; + auto length = p - suite_name; subsuite->name = std::string( suite_name, length ); } else @@ -242,12 +246,12 @@ static int report(abts_suite* suite) if (count == 0) { - printf("All tests passed.\n"); + fprintf(stdout, "%sAll tests passed.%s\n", infoPrefix, msgSuffix); return 0; } dptr = suite->head; - fprintf(stdout, "%-35s\t\tTotal\tFail\tFailed %%\n", "Failed Tests"); + fprintf(stdout, "%s%-35s\t\tTotal\tFail\tFailed %%%s\n", warnPrefix, "Failed Tests", msgSuffix); fprintf(stdout, "=======================================================================\n"); while (dptr != NULL) @@ -255,10 +259,10 @@ static int report(abts_suite* suite) if (dptr->failed.size() != 0) { float percent = ((float)dptr->failed.size() / (float)dptr->num_test); - fprintf(stdout, "%-35s\t\t%5d\t%4d\t%6.2f%%\n", dptr->name.c_str(), + fprintf(stdout, "%s%-35s\t\t%5d\t%4d\t%6.2f%%\n", warnPrefix, dptr->name.c_str(), dptr->num_test, (int)dptr->failed.size(), percent * 100); for( const char* failed_name : dptr->failed ){ - fprintf(stdout, " %s\n", failed_name ); + fprintf(stdout, "%s %s%s\n", warnPrefix, failed_name , msgSuffix); } } @@ -301,7 +305,7 @@ void abts_int_equal(abts_case* tc, const int expected, const int actual, int lin if (verbose) { - fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual); + fprintf(stderr, "%sLine %d: expected <%d>, but saw <%d>%s\n", warnPrefix, lineno, expected, actual, msgSuffix); fflush(stderr); } } @@ -324,7 +328,7 @@ void abts_int_nequal(abts_case* tc, const int expected, const int actual, int li if (verbose) { - fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual); + fprintf(stderr, "%sLine %d: expected <%d>, but saw <%d>%s\n", warnPrefix, lineno, expected, actual, msgSuffix); fflush(stderr); } } @@ -348,7 +352,7 @@ void abts_size_equal(abts_case* tc, size_t expected, size_t actual, int lineno) if (verbose) { /* Note that the comparison is type-exact, reporting must be a best-fit */ - fprintf(stderr, "Line %d: expected %lu, but saw %lu\n", lineno, + fprintf(stderr, "%sLine %d: expected %lu, but saw %lu\n", warnPrefix, lineno, (unsigned long)expected, (unsigned long)actual); fflush(stderr); } @@ -378,7 +382,7 @@ void abts_str_equal(abts_case* tc, const char* expected, const char* actual, int if (verbose) { - fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual); + fprintf(stderr, "%sLine %d: expected <%s>, but saw <%s>%s\n", warnPrefix, lineno, expected, actual, msgSuffix); fflush(stderr); } } @@ -402,7 +406,7 @@ void abts_str_nequal(abts_case* tc, const char* expected, const char* actual, if (verbose) { - fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual); + fprintf(stderr, "%sLine %d: expected <%s>, but saw <%s>%s\n", warnPrefix, lineno, expected, actual, msgSuffix); fflush(stderr); } } @@ -425,7 +429,7 @@ void abts_ptr_notnull(abts_case* tc, const void* ptr, int lineno) if (verbose) { - fprintf(stderr, "Line %d: Expected NULL, but saw <%p>\n", lineno, ptr); + fprintf(stderr, "%sLine %d: Expected NULL, but saw <%p>%s\n", warnPrefix, lineno, ptr, msgSuffix); fflush(stderr); } } @@ -448,7 +452,7 @@ void abts_ptr_equal(abts_case* tc, const void* expected, const void* actual, int if (verbose) { - fprintf(stderr, "Line %d: expected <%p>, but saw <%p>\n", lineno, expected, actual); + fprintf(stderr, "%sLine %d: expected <%p>, but saw <%p>%s\n", warnPrefix, lineno, expected, actual, msgSuffix); fflush(stderr); } } @@ -466,7 +470,7 @@ void abts_fail(abts_case* tc, const char* message, int lineno) if (verbose) { - fprintf(stderr, "Line %d: %s\n", lineno, message); + fprintf(stderr, "%sLine %d: %s%s\n", warnPrefix, lineno, message, msgSuffix); fflush(stderr); } } @@ -489,7 +493,7 @@ void abts_assert(abts_case* tc, const char* message, int condition, int lineno) if (verbose) { - fprintf(stderr, "Line %d: %s\n", lineno, message); + fprintf(stderr, "%sLine %d: %s%s\n", warnPrefix, lineno, message, msgSuffix); fflush(stderr); } } @@ -512,7 +516,7 @@ void abts_true(abts_case* tc, int condition, int lineno) if (verbose) { - fprintf(stderr, "Line %d: Condition is false, but expected true\n", lineno); + fprintf(stderr, "%sLine %d: Condition is false, but expected true%s\n", warnPrefix, lineno, msgSuffix); fflush(stderr); } } @@ -525,7 +529,7 @@ void abts_not_impl(abts_case* tc, const char* message, int lineno) if (verbose) { - fprintf(stderr, "Line %d: %s\n", lineno, message); + fprintf(stderr, "%sLine %d: %s%s\n", warnPrefix, lineno, message, msgSuffix); fflush(stderr); } } @@ -572,7 +576,7 @@ int main(int argc, const char* const argv[]) if (argv[i][0] == '-') { - fprintf(stderr, "Invalid option: `%s'\n", argv[i]); + fprintf(stderr, "%sInvalid option: `%s'%s\n", errorPrefix, argv[i], msgSuffix); exit(1); }
