summaryrefslogtreecommitdiff
path: root/tests/tar_gnu.c
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2020-04-17 09:38:43 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2020-04-17 09:38:43 +0200
commit15250710c63a2c3d230304e46a03532f787759fb (patch)
tree9fda47ad94248d133b7b48c67eba20d357c6694e /tests/tar_gnu.c
parent6b3e6d299d5298a5936dbba57f67cdfc4a406789 (diff)
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 <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'tests/tar_gnu.c')
-rw-r--r--tests/tar_gnu.c187
1 files changed, 86 insertions, 101 deletions
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 <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
+#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);