Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/tests/bin/tar Add base-256 test (Micha Gorny)
details: https://anonhg.NetBSD.org/src/rev/b3a52f859fd4
branches: trunk
changeset: 837346:b3a52f859fd4
user: christos <christos%NetBSD.org@localhost>
date: Fri Nov 30 00:53:41 2018 +0000
description:
Add base-256 test (Micha Gorny)
diffstat:
tests/bin/tar/t_tar.sh | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 47 insertions(+), 1 deletions(-)
diffs (63 lines):
diff -r 0b154c13c7e2 -r b3a52f859fd4 tests/bin/tar/t_tar.sh
--- a/tests/bin/tar/t_tar.sh Fri Nov 30 00:53:11 2018 +0000
+++ b/tests/bin/tar/t_tar.sh Fri Nov 30 00:53:41 2018 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: t_tar.sh,v 1.1 2012/03/17 16:33:11 jruoho Exp $
+# $NetBSD: t_tar.sh,v 1.2 2018/11/30 00:53:41 christos Exp $
#
# Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -45,7 +45,53 @@
atf_check -s eq:0 -o empty -e empty cmp file1.tar file2.tar
}
+atf_test_case rd_base256_size
+rd_base256_size_head() {
+ atf_set "descr" "Test extracting an archive whose member size" \
+ "is encoded as base-256 number (GNU style)"
+}
+rd_base256_size_body() {
+ # prepare random file data for comparison
+ # take 0x1200CF bytes in order to test that we:
+ # - handle multiple bytes of size field correctly
+ # - do not fail on NUL bytes
+ # - do not fail on char values > 0x80 (with signed char)
+ dd if=/dev/urandom of=reference.bin bs=1179855 count=1
+ # write test archive header
+ # - filename
+ printf 'output.bin' > test.tar
+ # - pad to 100 octets
+ head -c 90 /dev/zero >> test.tar
+ # - mode, uid, gid
+ printf '%07d\0%07d\0%07d\0' 644 177776 177775 >> test.tar
+ # - size (base-256)
+ printf '\x80\0\0\0\0\0\0\0\0\x12\x00\xCF' >> test.tar
+ # - timestamp, checksum
+ printf '%011d\0%06d\0 0' 13377546642 12460 >> test.tar
+ # - pad empty linkname (100 octets)
+ head -c 100 /dev/zero >> test.tar
+ # - magic, user name
+ printf 'ustar \0nobody' >> test.tar
+ # - pad user name field to 32 bytes
+ head -c 26 /dev/zero >> test.tar
+ # - group name
+ printf 'nogroup' >> test.tar
+ # - pad to full block
+ head -c 208 /dev/zero >> test.tar
+ # append file data to the test archive
+ cat reference.bin >> test.tar
+ # pad to full block + append two terminating null blocks
+ head -c 1450 /dev/zero >> test.tar
+
+ # test extracting the test archive
+ atf_check -s eq:0 -o empty -e empty tar -xf test.tar
+
+ # ensure that output.bin is equal to reference.bin
+ atf_check -s eq:0 -o empty -e empty cmp output.bin reference.bin
+}
+
atf_init_test_cases()
{
atf_add_test_case append
+ atf_add_test_case rd_base256_size
}
Home |
Main Index |
Thread Index |
Old Index