Path: blob/main/contrib/libarchive/cpio/test/test_gcpio_compat.c
39507 views
/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2003-2007 Tim Kientzle4* All rights reserved.5*/6#include "test.h"78static void9unpack_test(const char *from, const char *options, const char *se)10{11int r;1213/* Create a work dir named after the file we're unpacking. */14assertMakeDir(from, 0775);15assertChdir(from);1617/*18* Use cpio to unpack the sample archive19*/20extract_reference_file(from);21r = systemf("%s -i %s < %s >unpack.out 2>unpack.err",22testprog, options, from);23failure("Error invoking %s -i %s < %s",24testprog, options, from);25assertEqualInt(r, 0);2627/* Verify that nothing went to stderr. */28if (canSymlink()) {29failure("Error invoking %s -i %s < %s",30testprog, options, from);31assertTextFileContents(se, "unpack.err");32}3334/*35* Verify unpacked files.36*/3738/* Regular file with 2 links. */39assertIsReg("file", 0644);40failure("%s", from);41assertFileSize("file", 10);42assertFileSize("linkfile", 10);43failure("%s", from);44assertFileNLinks("file", 2);4546/* Another name for the same file. */47failure("%s", from);48assertIsHardlink("linkfile", "file");49assertFileSize("file", 10);50assertFileSize("linkfile", 10);5152/* Symlink */53if (canSymlink())54assertIsSymlink("symlink", "file", 0);5556/* dir */57assertIsDir("dir", 0775);5859assertChdir("..");60}6162DEFINE_TEST(test_gcpio_compat)63{64assertUmask(0);6566/* Dearchive sample files with a variety of options. */67if (canSymlink()) {68unpack_test("test_gcpio_compat_ref.bin",69"--no-preserve-owner", "1 block\n");70unpack_test("test_gcpio_compat_ref.crc",71"--no-preserve-owner", "2 blocks\n");72unpack_test("test_gcpio_compat_ref.newc",73"--no-preserve-owner", "2 blocks\n");74/* gcpio-2.9 only reads 6 blocks here */75unpack_test("test_gcpio_compat_ref.ustar",76"--no-preserve-owner", "7 blocks\n");77} else {78unpack_test("test_gcpio_compat_ref_nosym.bin",79"--no-preserve-owner", "1 block\n");80unpack_test("test_gcpio_compat_ref_nosym.crc",81"--no-preserve-owner", "2 blocks\n");82unpack_test("test_gcpio_compat_ref_nosym.newc",83"--no-preserve-owner", "2 blocks\n");84/* gcpio-2.9 only reads 6 blocks here */85unpack_test("test_gcpio_compat_ref_nosym.ustar",86"--no-preserve-owner", "7 blocks\n");87}88}899091