#include "config.h" #include #include #include #include "testing.h" #define COLOUR_RESET "\033[0m" #define COLOUR_GREEN "\033[0;32m" #define COLOUR_YELLOW "\033[0;33m" static const char *const ENVVAR_NAME = "NO_COLOR"; static bool show_colour(void) { const char *const no_colour = getenv(ENVVAR_NAME); return !no_colour || no_colour[0] == '\0'; } /** * @tags infallible */ void test_start(const char *const name) { (void)fprintf(stderr, "%s:\n", name); return; } /** * @tags infallible */ void testing(const char *const message) { if (show_colour()) { (void)fprintf( stderr, COLOUR_YELLOW "testing" COLOUR_RESET ": %s...", message ); } else { (void)fprintf( stderr, "testing: %s...", message ); } return; } /** * @tags infallible */ void test_ok(void) { if (show_colour()) { (void)fprintf(stderr, " " COLOUR_GREEN "OK" COLOUR_RESET ".\n"); } else { (void)fprintf(stderr, " OK.\n"); } return; } #ifdef TEST int main(void) { int rc = 0; test_start("testing.c"); const int should_overwrite = 1; if (unsetenv(ENVVAR_NAME)) { perror("unsetenv(\"NO_COLOR\")"); rc = -1; goto out; } { testing("unset NO_COLOR"); test_ok(); } if (setenv(ENVVAR_NAME, "", should_overwrite)) { perror("setenv(\"NO_COLOR\", \"\", 1)"); rc = -1; goto out; } { testing("empty NO_COLOR"); test_ok(); } if (setenv(ENVVAR_NAME, "something", should_overwrite)) { perror("setenv(\"NO_COLOR\", \"something\", 1)"); rc = -1; goto out; } { testing("defined NO_COLOR"); test_ok(); } out: return !!rc; } #endif