diff options
author | Rob Landley <rob@landley.net> | 2014-09-20 13:09:14 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2014-09-20 13:09:14 -0500 |
commit | 387edf547eb09b27ca6d49772eb048d729f09cf4 (patch) | |
tree | 59d482f33735690cab6d90723393afa1e2c8dce5 /tests/cpio.test | |
parent | d3df423a6cde0c6282658ff628574771d3824d71 (diff) | |
download | toybox-387edf547eb09b27ca6d49772eb048d729f09cf4.tar.gz |
Move testsuite out of scripts/test into its own top level tests directory, and make ctrl-c kill "make test" more reliably.
Diffstat (limited to 'tests/cpio.test')
-rwxr-xr-x | tests/cpio.test | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/cpio.test b/tests/cpio.test new file mode 100755 index 00000000..d0528e52 --- /dev/null +++ b/tests/cpio.test @@ -0,0 +1,39 @@ +#!/bin/bash + +[ -f testing.sh ] && . testing.sh + +# We need to test name and file padding. +# This means all possible values of strlen(name)+1 % 4, +# plus file sizes of at least 0-4. + +touch a bb ccc dddd +testing "cpio name padding" "cpio -o -H newc|cpio -it" "a\nbb\nccc\ndddd\n" "" "a\nbb\nccc\ndddd\n" +rm a bb ccc dddd + +touch a +printf '1' >b +printf '22' >c +printf '333' >d +testing "cpio file padding" "cpio -o -H newc|cpio -it" "a\nb\nc\nd\n" "" "a\nb\nc\nd\n" +rm a b c d + +touch a +printf '1' >bb +printf '22' >ccc +printf '333' >dddd +# With the proper padding, header length, and file length, +# the relevant bit should be here: +# 110*5 + 4*3 + 2 + 6*3 = 550 + 12 + 20 = 582 +# files are padded to n*4, names are padded to 2 + n*4 due to the header length +testing "cpio archive length" "cpio -o -H newc|dd ibs=2 skip=291 count=5" "TRAILER!!!" "" "a\nbb\nccc\ndddd\n" +testing "cpio archive magic" "cpio -o -H newc|dd ibs=2 count=3" "070701" "" "a\n" +# check name length (8 bytes before the empty "crc") +testing "cpio name length" "cpio -o -H newc|dd ibs=2 skip=47 count=4" "00000002" "" "a\n" +rm a bb ccc dddd + +# archive dangling symlinks and empty files even if we cannot open them +touch a; chmod a-rwx a; ln -s a/cant b +testing "cpio archives unreadable empty files" "cpio -o -H newc|cpio -it" "a\nb\n" "" "a\nb\n" +chmod u+rw a; rm -f a b + + |