annotate tests/cpio.test @ 1776:7bf68329eb3b draft default tip

Repository switched to git at https://github.com/landley/toybox
author Rob Landley <rob@landley.net>
date Thu, 09 Apr 2015 02:28:32 -0500
parents 8700cbe1cb29
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1331
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
1 #!/bin/bash
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
2
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
3 [ -f testing.sh ] && . testing.sh
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
4
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
5 # We need to test name and file padding.
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
6 # This means all possible values of strlen(name)+1 % 4,
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
7 # plus file sizes of at least 0-4.
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
8
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
9 touch a bb ccc dddd
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
10 testing "cpio name padding" "cpio -o -H newc|cpio -it" "a\nbb\nccc\ndddd\n" "" "a\nbb\nccc\ndddd\n"
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
11 rm a bb ccc dddd
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
12
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
13 touch a
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
14 printf '1' >b
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
15 printf '22' >c
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
16 printf '333' >d
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
17 testing "cpio file padding" "cpio -o -H newc|cpio -it" "a\nb\nc\nd\n" "" "a\nb\nc\nd\n"
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
18 rm a b c d
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
19
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
20 touch a
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
21 printf '1' >bb
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
22 printf '22' >ccc
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
23 printf '333' >dddd
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
24 # With the proper padding, header length, and file length,
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
25 # the relevant bit should be here:
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
26 # 110*5 + 4*3 + 2 + 6*3 = 550 + 12 + 20 = 582
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
27 # files are padded to n*4, names are padded to 2 + n*4 due to the header length
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
28 testing "cpio archive length" "cpio -o -H newc|dd ibs=2 skip=291 count=5" "TRAILER!!!" "" "a\nbb\nccc\ndddd\n"
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
29 testing "cpio archive magic" "cpio -o -H newc|dd ibs=2 count=3" "070701" "" "a\n"
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
30 # check name length (8 bytes before the empty "crc")
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
31 testing "cpio name length" "cpio -o -H newc|dd ibs=2 skip=47 count=4" "00000002" "" "a\n"
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
32 rm a bb ccc dddd
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
33
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
34 # archive dangling symlinks and empty files even if we cannot open them
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
35 touch a; chmod a-rwx a; ln -s a/cant b
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
36 testing "cpio archives unreadable empty files" "cpio -o -H newc|cpio -it" "a\nb\n" "" "a\nb\n"
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
37 chmod u+rw a; rm -f a b
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
38
11fe363078b8 cpio: archive more files
Isaac Dunham <ibid.ag@gmail.com>
parents:
diff changeset
39