add test
This commit is contained in:
1 parent
da65b39c06
commit
fb859e6d3f
3 files changed
+77
No files matched your search
@@ -14,6 +14,7 @@ IF(ENABLE_TAR AND ENABLE_TEST)
|
||||
test_0.c
|
||||
test_basic.c
|
||||
test_copy.c
|
||||
test_crlf_mtree.c
|
||||
test_empty_mtree.c
|
||||
test_extract_tar_Z.c
|
||||
test_extract_tar_bz2.c
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Copyright (c) 2018 The FreeBSD Foundation
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software was developed by Arshan Khanifar <arshankhanifar@gmail.com>
|
||||
* under sponsorship from the FreeBSD Foundation.
|
||||
*/
|
||||
#include "test.h"
|
||||
|
||||
DEFINE_TEST(test_crlf_mtree)
|
||||
{
|
||||
char *p0;
|
||||
size_t s;
|
||||
int r;
|
||||
p0 = NULL;
|
||||
char *content = "#mtree\r\n./foo type=file uname=\\\r\nroot gname=root mode=0755\r\n";
|
||||
char *filename = "output.tar";
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
char *p;
|
||||
#endif
|
||||
|
||||
/* an absolute path to mtree file */
|
||||
char *mtree_file = "/METALOG.mtree";
|
||||
char *absolute_path = malloc(strlen(testworkdir) + strlen(mtree_file) + 1);
|
||||
strcpy(absolute_path, testworkdir);
|
||||
strcat(absolute_path, mtree_file );
|
||||
|
||||
/* Create an archive using an mtree file. */
|
||||
assertMakeFile(absolute_path, 0777, content);
|
||||
assertMakeDir("bar", 0775);
|
||||
assertMakeFile("bar/foo", 0777, "abc");
|
||||
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
p = absolute_path;
|
||||
while(*p != '\0') {
|
||||
if (*p == '/')
|
||||
*p = '\\';
|
||||
p++;
|
||||
}
|
||||
|
||||
r = systemf("%s -cf %s -C bar @%s >step1.out 2>step1.err", testprog, filename, absolute_path);
|
||||
failure("Error invoking %s -cf %s -C bar @%s", testprog, filename, absolute_path);
|
||||
#else
|
||||
r = systemf("%s -cf %s -C bar \"@%s\" >step1.out 2>step1.err", testprog, filename, absolute_path);
|
||||
failure("Error invoking %s -cf %s -C bar \"@%s\"", testprog, filename, absolute_path);
|
||||
#endif
|
||||
|
||||
assertEqualInt(r, 0);
|
||||
assertEmptyFile("step1.out");
|
||||
assertEmptyFile("step1.err");
|
||||
|
||||
/* Do validation of the constructed archive. */
|
||||
|
||||
p0 = slurpfile(&s, "output.tar");
|
||||
if (!assert(p0 != NULL))
|
||||
goto done;
|
||||
if (!assert(s >= 2048))
|
||||
goto done;
|
||||
assertEqualMem(p0 + 0, "./foo", 5);
|
||||
assertEqualMem(p0 + 512, "abc", 3);
|
||||
assertEqualMem(p0 + 1024, "\0\0\0\0\0\0\0\0", 8);
|
||||
assertEqualMem(p0 + 1536, "\0\0\0\0\0\0\0\0", 8);
|
||||
done:
|
||||
free(p0);
|
||||
free(absolute_path);
|
||||
}
|
||||
|
||||
|
||||
@@ -4094,6 +4094,9 @@ main(int argc, char **argv)
|
||||
if (testprogfile == NULL)
|
||||
{
|
||||
tmp2_len = strlen(testprogdir) + 1 + strlen(PROGRAM) + 1;
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
tmp2_len += 4;
|
||||
#endif
|
||||
if ((tmp2 = malloc(tmp2_len)) == NULL)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Out of memory.");
|
||||
@@ -4102,6 +4105,9 @@ main(int argc, char **argv)
|
||||
strncpy(tmp2, testprogdir, tmp2_len);
|
||||
strncat(tmp2, "/", tmp2_len);
|
||||
strncat(tmp2, PROGRAM, tmp2_len);
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
strncat(tmp2, ".exe", tmp2_len);
|
||||
#endif
|
||||
testprogfile = tmp2;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user