#include "../src/testing.c" #include #include #include "../src/logerr.h" #include "slurp.h" static const char FNAME[] = __FILE__ ".txt"; int main(void) { int rc = EXIT_FAILURE; test_start("testing.c"); testing("output varying on $NO_COLOUR value"); FILE *file = NULL; char *str = NULL; file = fopen(FNAME, "w"); if (file == NULL) { logerr("fopen(FNAME, \"w\")"); goto out; } test_set_stream(file); test_start("testing.c"); const bool should_overwrite = true; const char *const orig = getenv(ENVVAR_NAME); if (unsetenv(ENVVAR_NAME)) { logerr("unsetenv(\"NO_COLOUR\")"); goto out; } { assert(show_colour() == true); testing("unset NO_COLOUR"); test_ok(); } if (setenv(ENVVAR_NAME, "", should_overwrite)) { logerr("setenv(\"NO_COLOUR\", \"\", 1)"); goto out; } { assert(show_colour() == true); testing("empty NO_COLOUR"); test_ok(); } if (setenv(ENVVAR_NAME, "something", should_overwrite)) { logerr("setenv(\"NO_COLOUR\", \"something\", 1)"); goto out; } { assert(show_colour() == false); testing("defined NO_COLOUR"); test_ok(); } test_set_stream(NULL); const int ret = fclose(file); file = NULL; if (ret) { logerr("fclose(file)"); goto out; } if (orig == NULL) { if (unsetenv(ENVVAR_NAME)) { logerr("unsetenv(\"NO_COLOUR\")"); goto out; } } else { if (setenv(ENVVAR_NAME, orig, true)) { logerr("setenv(\"NO_COLOUR\", orig, true)"); goto out; } } if (slurp_for_tests(FNAME, &str)) { logerr("slurp_for_tests()"); goto out; } const char expected[] = "testing.c:\n" "\033[0;33mtesting\033[0m: unset NO_COLOUR... " "\033[0;32mOK\033[0m.\n" "\033[0;33mtesting\033[0m: empty NO_COLOUR... " "\033[0;32mOK\033[0m.\n" "testing: defined NO_COLOUR... OK.\n" ; assert(strcmp(expected, str) == 0); free(str); str = NULL; test_ok(); rc = EXIT_SUCCESS; out: if (str != NULL) { free(str); str = NULL; } if (file != NULL) { if (fclose(file)) { logerr("flose()"); rc = EXIT_FAILURE; } } return rc; }