aboutsummaryrefslogtreecommitdiff
path: root/tests/tar_xattr_bin.c
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2020-09-03 17:01:32 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2020-09-03 17:01:32 +0200
commit50067dafdb36ac2a6cbdb0186fa22082cf424e9a (patch)
tree321dbb45c815d3ea5f4fed41c680e7b63de78e6e /tests/tar_xattr_bin.c
parentface4b1257b6f897906f51510b7f4e8793e6465a (diff)
Cleanup: reduce tar test cases to a few generic C files
This commit removes the existing tar test cases that simply call the generic test case function with several different paths with generic test case source files that are parameneterized via the pro-processor. For each tar archive, a separate test case is generated. On the one hand, this reduces the test source code to practically nothing. On the other hand, a test binary is generated for every distinct test case, instead of one per group and we get more detailed insights if something goes wrong. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'tests/tar_xattr_bin.c')
-rw-r--r--tests/tar_xattr_bin.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/tar_xattr_bin.c b/tests/tar_xattr_bin.c
new file mode 100644
index 0000000..ca0f918
--- /dev/null
+++ b/tests/tar_xattr_bin.c
@@ -0,0 +1,46 @@
+/* SPDX-License-Identifier: GPL-3.0-or-later */
+/*
+ * tar_xattr_bin.c
+ *
+ * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at>
+ */
+#include "test_tar.h"
+
+static const uint8_t value[] = {
+ 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x30, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+};
+
+int main(void)
+{
+ tar_header_decoded_t hdr;
+ char buffer[6];
+ FILE *fp;
+
+ fp = test_open_read(STRVALUE(TESTPATH) "/" STRVALUE(TESTFILE));
+ 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, 1543094477);
+ TEST_EQUAL_UI(hdr.mtime, 1543094477);
+ TEST_STR_EQUAL(hdr.name, "input.txt");
+ TEST_ASSERT(!hdr.unknown_record);
+ TEST_ASSERT(read_retry("data0", fp, buffer, 5) == 0);
+ buffer[5] = '\0';
+ TEST_STR_EQUAL(buffer, "test\n");
+
+ TEST_NOT_NULL(hdr.xattr);
+ TEST_STR_EQUAL(hdr.xattr->key, "security.capability");
+ TEST_EQUAL_UI(hdr.xattr->value_len, sizeof(value));
+ TEST_ASSERT(memcmp(hdr.xattr->value, value, sizeof(value)) == 0);
+ TEST_NULL(hdr.xattr->next);
+
+ clear_header(&hdr);
+ fclose(fp);
+ return EXIT_SUCCESS;
+}