1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash 2*cf5a6c84SAndroid Build Coastguard Worker 3*cf5a6c84SAndroid Build Coastguard Worker[ -f testing.sh ] && . testing.sh 4*cf5a6c84SAndroid Build Coastguard Worker 5*cf5a6c84SAndroid Build Coastguard Worker#testing "name" "command" "result" "infile" "stdin" 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker# Note: since "master key", Android uses libziparchive for all zip file 8*cf5a6c84SAndroid Build Coastguard Worker# handling, and that scans the whole central directory immediately. Not only 9*cf5a6c84SAndroid Build Coastguard Worker# lookups by name but also iteration is implemented using the resulting hash 10*cf5a6c84SAndroid Build Coastguard Worker# table, meaning that any test that makes assumptions about iteration order 11*cf5a6c84SAndroid Build Coastguard Worker# will fail on Android. 12*cf5a6c84SAndroid Build Coastguard Worker 13*cf5a6c84SAndroid Build Coastguard Worker# unzip -l 14*cf5a6c84SAndroid Build Coastguard Workertesting "-l" "unzip -l $FILES/zip/example.zip d1/d2/x.txt && [ ! -f d1/d2/x.txt ] && echo okay" "\ 15*cf5a6c84SAndroid Build Coastguard WorkerArchive: $FILES/zip/example.zip\n\ 16*cf5a6c84SAndroid Build Coastguard Worker Length Date Time Name\n\ 17*cf5a6c84SAndroid Build Coastguard Worker--------- ---------- ----- ----\n\ 18*cf5a6c84SAndroid Build Coastguard Worker 1024 2017-06-04 08:45 d1/d2/x.txt\n\ 19*cf5a6c84SAndroid Build Coastguard Worker--------- -------\n\ 20*cf5a6c84SAndroid Build Coastguard Worker 1024 1 file\n\ 21*cf5a6c84SAndroid Build Coastguard Workerokay\n" "" "" 22*cf5a6c84SAndroid Build Coastguard Worker 23*cf5a6c84SAndroid Build Coastguard Worker# unzip -lq 24*cf5a6c84SAndroid Build Coastguard Workertesting "-lq" "unzip -lq $FILES/zip/example.zip d1/d2/x.txt && [ ! -f d1/d2/x.txt ] && echo okay" "\ 25*cf5a6c84SAndroid Build Coastguard Worker Length Date Time Name\n\ 26*cf5a6c84SAndroid Build Coastguard Worker--------- ---------- ----- ----\n\ 27*cf5a6c84SAndroid Build Coastguard Worker 1024 2017-06-04 08:45 d1/d2/x.txt\n\ 28*cf5a6c84SAndroid Build Coastguard Worker--------- -------\n\ 29*cf5a6c84SAndroid Build Coastguard Worker 1024 1 file\n\ 30*cf5a6c84SAndroid Build Coastguard Workerokay\n" "" "" 31*cf5a6c84SAndroid Build Coastguard Worker 32*cf5a6c84SAndroid Build Coastguard Worker# unzip -lv 33*cf5a6c84SAndroid Build Coastguard Workertesting "-lv" "unzip -lv $FILES/zip/example.zip d1/d2/x.txt && [ ! -f d1/d2/file ] && echo okay" "\ 34*cf5a6c84SAndroid Build Coastguard WorkerArchive: $FILES/zip/example.zip\n\ 35*cf5a6c84SAndroid Build Coastguard Worker Length Method Size Cmpr Date Time CRC-32 Name\n\ 36*cf5a6c84SAndroid Build Coastguard Worker-------- ------ ------- ---- ---------- ----- -------- ----\n\ 37*cf5a6c84SAndroid Build Coastguard Worker 1024 Defl:N 11 99% 2017-06-04 08:45 48d7f063 d1/d2/x.txt\n\ 38*cf5a6c84SAndroid Build Coastguard Worker-------- ------- --- -------\n\ 39*cf5a6c84SAndroid Build Coastguard Worker 1024 11 99% 1 file\n\ 40*cf5a6c84SAndroid Build Coastguard Workerokay\n" "" "" 41*cf5a6c84SAndroid Build Coastguard Worker 42*cf5a6c84SAndroid Build Coastguard Worker# unzip -v 43*cf5a6c84SAndroid Build Coastguard Workertesting "-v" "unzip -v $FILES/zip/example.zip d1/d2/x.txt && [ ! -f d1/d2/file ] && echo okay" "\ 44*cf5a6c84SAndroid Build Coastguard WorkerArchive: $FILES/zip/example.zip\n\ 45*cf5a6c84SAndroid Build Coastguard Worker Length Method Size Cmpr Date Time CRC-32 Name\n\ 46*cf5a6c84SAndroid Build Coastguard Worker-------- ------ ------- ---- ---------- ----- -------- ----\n\ 47*cf5a6c84SAndroid Build Coastguard Worker 1024 Defl:N 11 99% 2017-06-04 08:45 48d7f063 d1/d2/x.txt\n\ 48*cf5a6c84SAndroid Build Coastguard Worker-------- ------- --- -------\n\ 49*cf5a6c84SAndroid Build Coastguard Worker 1024 11 99% 1 file\n\ 50*cf5a6c84SAndroid Build Coastguard Workerokay\n" "" "" 51*cf5a6c84SAndroid Build Coastguard Worker 52*cf5a6c84SAndroid Build Coastguard Worker# unzip 53*cf5a6c84SAndroid Build Coastguard Workertesting "one file" "unzip -q $FILES/zip/example.zip d1/d2/a.txt && [ ! -f d1/d2/b.txt ] && cat d1/d2/a.txt" "a\n" "" "" 54*cf5a6c84SAndroid Build Coastguard Workerrm -rf d1 55*cf5a6c84SAndroid Build Coastguard Workertesting "all files" "unzip -q $FILES/zip/example.zip && [ -f d1/d2/a.txt ] && [ -f d1/d2/b.txt ] && [ -f d1/d2/c.txt ] && [ -f d1/d2/empty.txt ] && [ -f d1/d2/x.txt ] && [ -d d1/d2/dir ] && echo okay" "okay\n" "" "" 56*cf5a6c84SAndroid Build Coastguard Workerrm -rf d1 57*cf5a6c84SAndroid Build Coastguard Worker 58*cf5a6c84SAndroid Build Coastguard Worker# unzip -o 59*cf5a6c84SAndroid Build Coastguard Workermkdir -p d1/d2 60*cf5a6c84SAndroid Build Coastguard Workerecho b > d1/d2/a.txt 61*cf5a6c84SAndroid Build Coastguard Workertesting "-o" "unzip -q -o $FILES/zip/example.zip d1/d2/a.txt && cat d1/d2/a.txt" "a\n" "" "" 62*cf5a6c84SAndroid Build Coastguard Workerrm -rf d1 63*cf5a6c84SAndroid Build Coastguard Worker 64*cf5a6c84SAndroid Build Coastguard Worker# unzip -n 65*cf5a6c84SAndroid Build Coastguard Workermkdir -p d1/d2 66*cf5a6c84SAndroid Build Coastguard Workerecho b > d1/d2/a.txt 67*cf5a6c84SAndroid Build Coastguard Workertesting "-n" "unzip -q -n $FILES/zip/example.zip d1/d2/a.txt && cat d1/d2/a.txt" "b\n" "" "" 68*cf5a6c84SAndroid Build Coastguard Workerrm -rf d1 69*cf5a6c84SAndroid Build Coastguard Worker 70*cf5a6c84SAndroid Build Coastguard Worker# unzip -d DIR 71*cf5a6c84SAndroid Build Coastguard Workertesting "-d non-existent" "unzip -q -d will/not/be/created $FILES/zip/example.zip d1/d2/a.txt 2> /dev/null ; [ ! -d will ] && echo okay" "okay\n" "" "" 72*cf5a6c84SAndroid Build Coastguard Workermkdir dir 73*cf5a6c84SAndroid Build Coastguard Workertesting "-d exists" "unzip -q -d dir $FILES/zip/example.zip d1/d2/a.txt && [ ! -f d1/d2/a.txt ] && cat dir/d1/d2/a.txt" "a\n" "" "" 74*cf5a6c84SAndroid Build Coastguard Workerrm -rf dir 75*cf5a6c84SAndroid Build Coastguard Worker 76*cf5a6c84SAndroid Build Coastguard Worker# unzip -p 77*cf5a6c84SAndroid Build Coastguard Workertesting "-p" "unzip -p $FILES/zip/example.zip d1/d2/a.txt && [ ! -f d1/d2/a.txt ] && echo okay" "a\nokay\n" "" "" 78*cf5a6c84SAndroid Build Coastguard Worker 79*cf5a6c84SAndroid Build Coastguard Worker# unzip -x FILE... 80*cf5a6c84SAndroid Build Coastguard Worker# Note: the RI ignores -x DIR for some reason, but it's not obvious we should. 81*cf5a6c84SAndroid Build Coastguard Workertesting "-x FILE..." "unzip -q $FILES/zip/example.zip -x d1/d2/a.txt d1/d2/b.txt d1/d2/empty.txt d1/d2/x.txt && [ ! -f d1/d2/a.txt ] && [ ! -f d1/d2/b.txt ] && [ ! -f d1/d2/empty.txt ] && [ ! -f d1/d2/x.txt ] && [ -d d1/d2/dir ] && cat d1/d2/c.txt" "ccc\n" "" "" 82*cf5a6c84SAndroid Build Coastguard Workerrm -rf d1 83*cf5a6c84SAndroid Build Coastguard Worker 84*cf5a6c84SAndroid Build Coastguard Worker# unzip FILE -x FILE... 85*cf5a6c84SAndroid Build Coastguard Workertesting "FILE... -x FILE..." "unzip -q $FILES/zip/example.zip d1/d2/a.txt d1/d2/b.txt -x d1/d2/a.txt && [ ! -f d1/d2/a.txt ] && [ -f d1/d2/b.txt ] && [ ! -f d1/d2/c.txt ] && [ ! -f d1/d2/empty.txt ] && [ ! -f d1/d2/x.txt ] && [ ! -d d1/d2/dir ] && cat d1/d2/b.txt" "bb\n" "" "" 86*cf5a6c84SAndroid Build Coastguard Workerrm -rf d1 87