From 15250710c63a2c3d230304e46a03532f787759fb Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Fri, 17 Apr 2020 09:38:43 +0200 Subject: tests: improve diagnostics output & make "release builds" work This commit adds a few macros and helper functions for the unit test programs. Those are used instead of asserts to provide more fine grained diagnostics on the one hand and on the other hand because they also work if NDEBUG is defined, unlike asserts that get eliminated in that case. Signed-off-by: David Oberhollenzer --- tests/tar_gnu.c | 187 ++++++++++++++++++++++++++------------------------------ 1 file changed, 86 insertions(+), 101 deletions(-) (limited to 'tests/tar_gnu.c') diff --git a/tests/tar_gnu.c b/tests/tar_gnu.c index de3af5b..9d0b010 100644 --- a/tests/tar_gnu.c +++ b/tests/tar_gnu.c @@ -8,28 +8,13 @@ #include "tar.h" -#include -#include -#include -#include +#include "test.h" #define STR(x) #x #define STRVALUE(x) STR(x) #define TEST_PATH STRVALUE(TESTPATH) -static FILE *open_read(const char *path) -{ - FILE *fp = fopen(path, "rb"); - - if (fp == NULL) { - perror(path); - exit(EXIT_FAILURE); - } - - return fp; -} - static const char *filename = "012345678901234567890123456789/012345678901234567890123456789/" "012345678901234567890123456789/012345678901234567890123456789/" @@ -41,118 +26,118 @@ int main(void) char buffer[6]; FILE *fp; - assert(chdir(TEST_PATH) == 0); - - fp = open_read("format-acceptance/gnu.tar"); - assert(read_header(fp, &hdr) == 0); - assert(hdr.sb.st_mode == (S_IFREG | 0644)); - assert(hdr.sb.st_uid == 01750); - assert(hdr.sb.st_gid == 01750); - assert(hdr.sb.st_size == 5); - assert(hdr.sb.st_mtime == 1542905892); - assert(hdr.mtime == 1542905892); - assert(strcmp(hdr.name, "input.txt") == 0); - assert(!hdr.unknown_record); - assert(read_retry("data0", fp, buffer, 5) == 0); + TEST_ASSERT(chdir(TEST_PATH) == 0); + + fp = test_open_read("format-acceptance/gnu.tar"); + TEST_ASSERT(read_header(fp, &hdr) == 0); + TEST_EQUAL_UI(hdr.sb.st_mode, S_IFREG | 0644); + TEST_EQUAL_UI(hdr.sb.st_uid, 01750); + TEST_EQUAL_UI(hdr.sb.st_gid, 01750); + TEST_EQUAL_UI(hdr.sb.st_size, 5); + TEST_EQUAL_UI(hdr.sb.st_mtime, 1542905892); + TEST_EQUAL_UI(hdr.mtime, 1542905892); + TEST_STR_EQUAL(hdr.name, "input.txt"); + TEST_ASSERT(!hdr.unknown_record); + TEST_ASSERT(read_retry("data0", fp, buffer, 5) == 0); buffer[5] = '\0'; - assert(strcmp(buffer, "test\n") == 0); + TEST_STR_EQUAL(buffer, "test\n"); clear_header(&hdr); fclose(fp); - fp = open_read("format-acceptance/gnu-g.tar"); - assert(read_header(fp, &hdr) == 0); - assert(hdr.sb.st_mode == (S_IFREG | 0644)); - assert(hdr.sb.st_uid == 01750); - assert(hdr.sb.st_gid == 01750); - assert(hdr.sb.st_size == 5); - assert(hdr.sb.st_mtime == 013375560044); - assert(hdr.mtime == 013375560044); - assert(strcmp(hdr.name, "input.txt") == 0); - assert(!hdr.unknown_record); - assert(read_retry("data1", fp, buffer, 5) == 0); + fp = test_open_read("format-acceptance/gnu-g.tar"); + TEST_ASSERT(read_header(fp, &hdr) == 0); + TEST_EQUAL_UI(hdr.sb.st_mode, S_IFREG | 0644); + TEST_EQUAL_UI(hdr.sb.st_uid, 01750); + TEST_EQUAL_UI(hdr.sb.st_gid, 01750); + TEST_EQUAL_UI(hdr.sb.st_size, 5); + TEST_EQUAL_UI(hdr.sb.st_mtime, 013375560044); + TEST_EQUAL_UI(hdr.mtime, 013375560044); + TEST_STR_EQUAL(hdr.name, "input.txt"); + TEST_ASSERT(!hdr.unknown_record); + TEST_ASSERT(read_retry("data1", fp, buffer, 5) == 0); buffer[5] = '\0'; - assert(strcmp(buffer, "test\n") == 0); + TEST_STR_EQUAL(buffer, "test\n"); clear_header(&hdr); fclose(fp); - fp = open_read("file-size/gnu.tar"); - assert(read_header(fp, &hdr) == 0); - assert(hdr.sb.st_mode == (S_IFREG | 0644)); - assert(hdr.sb.st_uid == 01750); - assert(hdr.sb.st_gid == 01750); - assert(hdr.sb.st_size == 8589934592); - assert(hdr.sb.st_mtime == 013375730126); - assert(hdr.mtime == 013375730126); - assert(strcmp(hdr.name, "big-file.bin") == 0); - assert(!hdr.unknown_record); + fp = test_open_read("file-size/gnu.tar"); + TEST_ASSERT(read_header(fp, &hdr) == 0); + TEST_EQUAL_UI(hdr.sb.st_mode, S_IFREG | 0644); + TEST_EQUAL_UI(hdr.sb.st_uid, 01750); + TEST_EQUAL_UI(hdr.sb.st_gid, 01750); + TEST_EQUAL_UI(hdr.sb.st_size, 8589934592); + TEST_EQUAL_UI(hdr.sb.st_mtime, 013375730126); + TEST_EQUAL_UI(hdr.mtime, 013375730126); + TEST_STR_EQUAL(hdr.name, "big-file.bin"); + TEST_ASSERT(!hdr.unknown_record); clear_header(&hdr); fclose(fp); - fp = open_read("user-group-largenum/gnu.tar"); - assert(read_header(fp, &hdr) == 0); - assert(hdr.sb.st_mode == (S_IFREG | 0644)); - assert(hdr.sb.st_uid == 0x80000000); - assert(hdr.sb.st_gid == 0x80000000); - assert(hdr.sb.st_size == 5); - assert(hdr.sb.st_mtime == 013376036700); - assert(hdr.mtime == 013376036700); - assert(strcmp(hdr.name, "input.txt") == 0); - assert(!hdr.unknown_record); - assert(read_retry("data2", fp, buffer, 5) == 0); + fp = test_open_read("user-group-largenum/gnu.tar"); + TEST_ASSERT(read_header(fp, &hdr) == 0); + TEST_EQUAL_UI(hdr.sb.st_mode, S_IFREG | 0644); + TEST_EQUAL_UI(hdr.sb.st_uid, 0x80000000); + TEST_EQUAL_UI(hdr.sb.st_gid, 0x80000000); + TEST_EQUAL_UI(hdr.sb.st_size, 5); + TEST_EQUAL_UI(hdr.sb.st_mtime, 013376036700); + TEST_EQUAL_UI(hdr.mtime, 013376036700); + TEST_STR_EQUAL(hdr.name, "input.txt"); + TEST_ASSERT(!hdr.unknown_record); + TEST_ASSERT(read_retry("data2", fp, buffer, 5) == 0); buffer[5] = '\0'; - assert(strcmp(buffer, "test\n") == 0); + TEST_STR_EQUAL(buffer, "test\n"); clear_header(&hdr); fclose(fp); - fp = open_read("large-mtime/gnu.tar"); - assert(read_header(fp, &hdr) == 0); - assert(hdr.sb.st_mode == (S_IFREG | 0644)); - assert(hdr.sb.st_uid == 01750); - assert(hdr.sb.st_gid == 01750); - assert(hdr.sb.st_size == 5); + fp = test_open_read("large-mtime/gnu.tar"); + TEST_ASSERT(read_header(fp, &hdr) == 0); + TEST_EQUAL_UI(hdr.sb.st_mode, S_IFREG | 0644); + TEST_EQUAL_UI(hdr.sb.st_uid, 01750); + TEST_EQUAL_UI(hdr.sb.st_gid, 01750); + TEST_EQUAL_UI(hdr.sb.st_size, 5); #if SIZEOF_TIME_T < 8 - assert(hdr.sb.st_mtime == INT32_MAX); + TEST_EQUAL_UI(hdr.sb.st_mtime, INT32_MAX); #else - assert(hdr.sb.st_mtime == 8589934592L); + TEST_EQUAL_UI(hdr.sb.st_mtime, 8589934592L); #endif - assert(hdr.mtime == 8589934592L); - assert(strcmp(hdr.name, "input.txt") == 0); - assert(!hdr.unknown_record); - assert(read_retry("data3", fp, buffer, 5) == 0); + TEST_EQUAL_UI(hdr.mtime, 8589934592L); + TEST_STR_EQUAL(hdr.name, "input.txt"); + TEST_ASSERT(!hdr.unknown_record); + TEST_ASSERT(read_retry("data3", fp, buffer, 5) == 0); buffer[5] = '\0'; - assert(strcmp(buffer, "test\n") == 0); + TEST_STR_EQUAL(buffer, "test\n"); clear_header(&hdr); fclose(fp); - fp = open_read("negative-mtime/gnu.tar"); - assert(read_header(fp, &hdr) == 0); - assert(hdr.sb.st_mode == (S_IFREG | 0644)); - assert(hdr.sb.st_uid == 01750); - assert(hdr.sb.st_gid == 01750); - assert(hdr.sb.st_size == 5); - assert(hdr.sb.st_mtime == -315622800); - assert(hdr.mtime == -315622800); - assert(strcmp(hdr.name, "input.txt") == 0); - assert(!hdr.unknown_record); - assert(read_retry("data4", fp, buffer, 5) == 0); + fp = test_open_read("negative-mtime/gnu.tar"); + TEST_ASSERT(read_header(fp, &hdr) == 0); + TEST_EQUAL_UI(hdr.sb.st_mode, S_IFREG | 0644); + TEST_EQUAL_UI(hdr.sb.st_uid, 01750); + TEST_EQUAL_UI(hdr.sb.st_gid, 01750); + TEST_EQUAL_UI(hdr.sb.st_size, 5); + TEST_EQUAL_I(hdr.sb.st_mtime, -315622800); + TEST_EQUAL_I(hdr.mtime, -315622800); + TEST_STR_EQUAL(hdr.name, "input.txt"); + TEST_ASSERT(!hdr.unknown_record); + TEST_ASSERT(read_retry("data4", fp, buffer, 5) == 0); buffer[5] = '\0'; - assert(strcmp(buffer, "test\n") == 0); + TEST_STR_EQUAL(buffer, "test\n"); clear_header(&hdr); fclose(fp); - fp = open_read("long-paths/gnu.tar"); - assert(read_header(fp, &hdr) == 0); - assert(hdr.sb.st_mode == (S_IFREG | 0644)); - assert(hdr.sb.st_uid == 01750); - assert(hdr.sb.st_gid == 01750); - assert(hdr.sb.st_size == 5); - assert(hdr.sb.st_mtime == 1542909670); - assert(hdr.mtime == 1542909670); - assert(strcmp(hdr.name, filename) == 0); - assert(!hdr.unknown_record); - assert(read_retry("data5", fp, buffer, 5) == 0); + fp = test_open_read("long-paths/gnu.tar"); + TEST_ASSERT(read_header(fp, &hdr) == 0); + TEST_EQUAL_UI(hdr.sb.st_mode, S_IFREG | 0644); + TEST_EQUAL_UI(hdr.sb.st_uid, 01750); + TEST_EQUAL_UI(hdr.sb.st_gid, 01750); + TEST_EQUAL_UI(hdr.sb.st_size, 5); + TEST_EQUAL_UI(hdr.sb.st_mtime, 1542909670); + TEST_EQUAL_UI(hdr.mtime, 1542909670); + TEST_STR_EQUAL(hdr.name, filename); + TEST_ASSERT(!hdr.unknown_record); + TEST_ASSERT(read_retry("data5", fp, buffer, 5) == 0); buffer[5] = '\0'; - assert(strcmp(buffer, "test\n") == 0); + TEST_STR_EQUAL(buffer, "test\n"); clear_header(&hdr); fclose(fp); -- cgit v1.2.3