summaryrefslogtreecommitdiffstats
path: root/usr.bin/cpio/test/test_basic.c
diff options
context:
space:
mode:
authormm <mm@FreeBSD.org>2011-07-17 21:42:22 +0000
committermm <mm@FreeBSD.org>2011-07-17 21:42:22 +0000
commit84c56da91a08ce9f1a669fa732a156e36b3ad358 (patch)
treee2aa60b473bd88d42e965988a7bd13041fd17954 /usr.bin/cpio/test/test_basic.c
parent867c8ddd4db0c581c7d6f04f5317cdc34c07dd5c (diff)
downloadFreeBSD-src-84c56da91a08ce9f1a669fa732a156e36b3ad358.zip
FreeBSD-src-84c56da91a08ce9f1a669fa732a156e36b3ad358.tar.gz
Update bsdcpio to 2.8.4
Use common code from lib/libarchive/libarchive_fe Approved by: kientzle MFC after: 2 weeks
Diffstat (limited to 'usr.bin/cpio/test/test_basic.c')
-rw-r--r--usr.bin/cpio/test/test_basic.c177
1 files changed, 45 insertions, 132 deletions
diff --git a/usr.bin/cpio/test/test_basic.c b/usr.bin/cpio/test/test_basic.c
index a4eb60f..3a3fae8 100644
--- a/usr.bin/cpio/test/test_basic.c
+++ b/usr.bin/cpio/test/test_basic.c
@@ -26,106 +26,32 @@
__FBSDID("$FreeBSD$");
static void
-verify_files(const char *target)
+verify_files(const char *msg)
{
- struct stat st, st2;
-#if !defined(_WIN32) || defined(__CYGWIN__)
- char buff[128];
-#endif
- int r;
-
/*
* Verify unpacked files.
*/
/* Regular file with 2 links. */
- r = lstat("file", &st);
- failure("Failed to stat file %s/file, errno=%d", target, errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualInt(0600, st.st_mode & 0700);
-#else
- assertEqualInt(0644, st.st_mode & 0777);
-#endif
- assertEqualInt(10, st.st_size);
- failure("file %s/file should have 2 links", target);
- assertEqualInt(2, st.st_nlink);
- }
+ assertIsReg("file", 0644);
+ failure(msg);
+ assertFileSize("file", 10);
+ assertFileNLinks("file", 2);
/* Another name for the same file. */
- r = lstat("linkfile", &st2);
- failure("Failed to stat file %s/linkfile, errno=%d", target, errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st2.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualInt(0600, st2.st_mode & 0700);
-#else
- assertEqualInt(0644, st2.st_mode & 0777);
-#endif
- assertEqualInt(10, st2.st_size);
- failure("file %s/linkfile should have 2 links", target);
- assertEqualInt(2, st2.st_nlink);
- /* Verify that the two are really hardlinked. */
- assertEqualInt(st.st_dev, st2.st_dev);
- failure("%s/linkfile and %s/file should be hardlinked",
- target, target);
- assertEqualInt(st.st_ino, st2.st_ino);
- }
+ assertIsHardlink("linkfile", "file");
/* Symlink */
- r = lstat("symlink", &st);
- failure("Failed to stat file %s/symlink, errno=%d", target, errno);
- assertEqualInt(r, 0);
-#if !defined(_WIN32) || defined(__CYGWIN__)
- if (r == 0) {
- failure("symlink should be a symlink; actual mode is %o",
- st.st_mode);
- assert(S_ISLNK(st.st_mode));
- if (S_ISLNK(st.st_mode)) {
- r = readlink("symlink", buff, sizeof(buff));
- assertEqualInt(r, 4);
- buff[r] = '\0';
- assertEqualString(buff, "file");
- }
- }
-#endif
+ if (canSymlink())
+ assertIsSymlink("symlink", "file");
/* Another file with 1 link and different permissions. */
- r = lstat("file2", &st);
- failure("Failed to stat file %s/file2, errno=%d", target, errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st.st_mode));
- failure("%s/file2: st.st_mode = %o", target, st.st_mode);
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Execution bit and group members bits and others
- * bits do not work. */
- assertEqualInt(0600, st.st_mode & 0700);
-#else
- assertEqualInt(0777, st.st_mode & 0777);
-#endif
- assertEqualInt(10, st.st_size);
- failure("file %s/file2 should have 1 link", target);
- assertEqualInt(1, st.st_nlink);
- }
+ assertIsReg("file2", 0777);
+ assertFileSize("file2", 10);
+ assertFileNLinks("file2", 1);
/* dir */
- r = lstat("dir", &st);
- if (r == 0) {
- assertEqualInt(r, 0);
- assert(S_ISDIR(st.st_mode));
- failure("%s/dir: st.st_mode = %o", target, st.st_mode);
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0700, st.st_mode & 0700);
-#else
- assertEqualInt(0775, st.st_mode & 0777);
-#endif
- }
+ assertIsDir("dir", 0775);
}
static void
@@ -136,7 +62,7 @@ basic_cpio(const char *target,
{
int r;
- if (!assertEqualInt(0, mkdir(target, 0775)))
+ if (!assertMakeDir(target, 0775))
return;
/* Use the cpio program to create an archive. */
@@ -145,7 +71,7 @@ basic_cpio(const char *target,
failure("Error invoking %s -o %s", testprog, pack_options);
assertEqualInt(r, 0);
- chdir(target);
+ assertChdir(target);
/* Verify stderr. */
failure("Expected: %s, options=%s", se, pack_options);
@@ -163,9 +89,9 @@ basic_cpio(const char *target,
failure("Error invoking %s -i %s in dir %s", testprog, unpack_options, target);
assertTextFileContents(se, "unpack.err");
- verify_files(target);
+ verify_files(pack_options);
- chdir("..");
+ assertChdir("..");
}
static void
@@ -173,7 +99,7 @@ passthrough(const char *target)
{
int r;
- if (!assertEqualInt(0, mkdir(target, 0775)))
+ if (!assertMakeDir(target, 0775))
return;
/*
@@ -184,77 +110,64 @@ passthrough(const char *target)
failure("Error invoking %s -p", testprog);
assertEqualInt(r, 0);
- chdir(target);
+ assertChdir(target);
/* Verify stderr. */
failure("Error invoking %s -p in dir %s",
testprog, target);
assertTextFileContents("1 block\n", "stderr");
- verify_files(target);
- chdir("..");
+ verify_files("passthrough");
+ assertChdir("..");
}
DEFINE_TEST(test_basic)
{
- int fd;
- int filelist;
- int oldumask;
+ FILE *filelist;
+ const char *msg;
- oldumask = umask(0);
+ assertUmask(0);
/*
* Create an assortment of files on disk.
*/
- filelist = open("filelist", O_CREAT | O_WRONLY, 0644);
+ filelist = fopen("filelist", "w");
/* File with 10 bytes content. */
- fd = open("file", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- write(filelist, "file\n", 5);
+ assertMakeFile("file", 0644, "1234567890");
+ fprintf(filelist, "file\n");
/* hardlink to above file. */
- assertEqualInt(0, link("file", "linkfile"));
- write(filelist, "linkfile\n", 9);
+ assertMakeHardlink("linkfile", "file");
+ fprintf(filelist, "linkfile\n");
/* Symlink to above file. */
- assertEqualInt(0, symlink("file", "symlink"));
- write(filelist, "symlink\n", 8);
+ if (canSymlink()) {
+ assertMakeSymlink("symlink", "file");
+ fprintf(filelist, "symlink\n");
+ }
/* Another file with different permissions. */
- fd = open("file2", O_CREAT | O_WRONLY, 0777);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- write(filelist, "file2\n", 6);
+ assertMakeFile("file2", 0777, "1234567890");
+ fprintf(filelist, "file2\n");
/* Directory. */
- assertEqualInt(0, mkdir("dir", 0775));
- write(filelist, "dir\n", 4);
+ assertMakeDir("dir", 0775);
+ fprintf(filelist, "dir\n");
/* All done. */
- close(filelist);
+ fclose(filelist);
- umask(022);
+ assertUmask(022);
/* Archive/dearchive with a variety of options. */
- basic_cpio("copy", "", "", "2 blocks\n");
- basic_cpio("copy_odc", "--format=odc", "", "2 blocks\n");
+ msg = canSymlink() ? "2 blocks\n" : "1 block\n";
+ basic_cpio("copy", "", "", msg);
+ basic_cpio("copy_odc", "--format=odc", "", msg);
basic_cpio("copy_newc", "-H newc", "", "2 blocks\n");
- basic_cpio("copy_cpio", "-H odc", "", "2 blocks\n");
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /*
- * On Windows, symbolic link does not work.
- * Currentry copying file instead. therefore block size is
- * different.
- */
- basic_cpio("copy_ustar", "-H ustar", "", "10 blocks\n");
-#else
- basic_cpio("copy_ustar", "-H ustar", "", "9 blocks\n");
-#endif
+ basic_cpio("copy_cpio", "-H odc", "", msg);
+ msg = canSymlink() ? "9 blocks\n" : "8 blocks\n";
+ basic_cpio("copy_ustar", "-H ustar", "", msg);
+
/* Copy in one step using -p */
passthrough("passthrough");
-
- umask(oldumask);
}
OpenPOWER on IntegriCloud