diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-09-03 17:01:32 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-09-03 17:01:32 +0200 |
commit | 50067dafdb36ac2a6cbdb0186fa22082cf424e9a (patch) | |
tree | 321dbb45c815d3ea5f4fed41c680e7b63de78e6e /tests/tar_simple.c | |
parent | face4b1257b6f897906f51510b7f4e8793e6465a (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_simple.c')
-rw-r--r-- | tests/tar_simple.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/tar_simple.c b/tests/tar_simple.c new file mode 100644 index 0000000..02bd521 --- /dev/null +++ b/tests/tar_simple.c @@ -0,0 +1,66 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * tar_simple.c + * + * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> + */ +#include "test_tar.h" + +#ifndef TESTUID +#define TESTUID 1000 +#endif + +#ifndef TESTGID +#define TESTGID TESTUID +#endif + +#ifndef TESTFNAME +#define TESTFNAME input.txt +#endif + +#ifndef TESTTS +#define TESTTS 1542905892 +#endif + +#ifdef LONG_NAME_TEST +static const char *fname = +"012345678901234567890123456789/012345678901234567890123456789/" +"012345678901234567890123456789/012345678901234567890123456789/" +"012345678901234567890123456789/input.txt"; +#else +static const char *fname = STRVALUE(TESTFNAME); +#endif + +int main(void) +{ + tar_header_decoded_t hdr; + char buffer[6]; + sqfs_s64 ts; + 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, TESTUID); + TEST_EQUAL_UI(hdr.sb.st_gid, TESTGID); + TEST_EQUAL_UI(hdr.sb.st_size, 5); + + ts = TESTTS; + + if (sizeof(time_t) < sizeof(ts) && ts > INT32_MAX) { + TEST_EQUAL_UI(hdr.sb.st_mtime, INT32_MAX); + } else { + TEST_EQUAL_UI(hdr.sb.st_mtime, ts); + } + + TEST_EQUAL_UI(hdr.mtime, ts); + TEST_STR_EQUAL(hdr.name, fname); + TEST_ASSERT(!hdr.unknown_record); + + TEST_ASSERT(read_retry("tar data", fp, buffer, 5) == 0); + buffer[5] = '\0'; + TEST_STR_EQUAL(buffer, "test\n"); + clear_header(&hdr); + fclose(fp); + return EXIT_SUCCESS; +} |