1*adcb0a62SAndroid Build Coastguard Worker# unzip tests. 2*adcb0a62SAndroid Build Coastguard Worker 3*adcb0a62SAndroid Build Coastguard Worker# Note: since "master key", Android uses libziparchive for all zip file 4*adcb0a62SAndroid Build Coastguard Worker# handling, and that scans the whole central directory immediately. Not only 5*adcb0a62SAndroid Build Coastguard Worker# lookups by name but also iteration is implemented using the resulting hash 6*adcb0a62SAndroid Build Coastguard Worker# table, meaning that any test that makes assumptions about iteration order 7*adcb0a62SAndroid Build Coastguard Worker# will fail on Android. 8*adcb0a62SAndroid Build Coastguard Worker 9*adcb0a62SAndroid Build Coastguard Workername: unzip -l 10*adcb0a62SAndroid Build Coastguard Workercommand: unzip -l $FILES/example.zip d1/d2/x.txt 11*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/x.txt ] 12*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 13*adcb0a62SAndroid Build Coastguard Worker Archive: $FILES/example.zip 14*adcb0a62SAndroid Build Coastguard Worker Length Date Time Name 15*adcb0a62SAndroid Build Coastguard Worker --------- ---------- ----- ---- 16*adcb0a62SAndroid Build Coastguard Worker 1024 2017-06-04 08:45 d1/d2/x.txt 17*adcb0a62SAndroid Build Coastguard Worker --------- ------- 18*adcb0a62SAndroid Build Coastguard Worker 1024 1 file 19*adcb0a62SAndroid Build Coastguard Worker--- 20*adcb0a62SAndroid Build Coastguard Worker 21*adcb0a62SAndroid Build Coastguard Workername: unzip -lq 22*adcb0a62SAndroid Build Coastguard Workercommand: unzip -lq $FILES/example.zip d1/d2/x.txt 23*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/x.txt ] 24*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 25*adcb0a62SAndroid Build Coastguard Worker Length Date Time Name 26*adcb0a62SAndroid Build Coastguard Worker --------- ---------- ----- ---- 27*adcb0a62SAndroid Build Coastguard Worker 1024 2017-06-04 08:45 d1/d2/x.txt 28*adcb0a62SAndroid Build Coastguard Worker --------- ------- 29*adcb0a62SAndroid Build Coastguard Worker 1024 1 file 30*adcb0a62SAndroid Build Coastguard Worker--- 31*adcb0a62SAndroid Build Coastguard Worker 32*adcb0a62SAndroid Build Coastguard Workername: unzip -lv 33*adcb0a62SAndroid Build Coastguard Workercommand: unzip -lv $FILES/example.zip d1/d2/x.txt 34*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/file ] 35*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 36*adcb0a62SAndroid Build Coastguard Worker Archive: $FILES/example.zip 37*adcb0a62SAndroid Build Coastguard Worker Length Method Size Cmpr Date Time CRC-32 Name 38*adcb0a62SAndroid Build Coastguard Worker -------- ------ ------- ---- ---------- ----- -------- ---- 39*adcb0a62SAndroid Build Coastguard Worker 1024 Defl:N 11 99% 2017-06-04 08:45 48d7f063 d1/d2/x.txt 40*adcb0a62SAndroid Build Coastguard Worker -------- ------- --- ------- 41*adcb0a62SAndroid Build Coastguard Worker 1024 11 99% 1 file 42*adcb0a62SAndroid Build Coastguard Worker--- 43*adcb0a62SAndroid Build Coastguard Worker 44*adcb0a62SAndroid Build Coastguard Workername: unzip -v 45*adcb0a62SAndroid Build Coastguard Workercommand: unzip -v $FILES/example.zip d1/d2/x.txt 46*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/file ] 47*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 48*adcb0a62SAndroid Build Coastguard Worker Archive: $FILES/example.zip 49*adcb0a62SAndroid Build Coastguard Worker Length Method Size Cmpr Date Time CRC-32 Name 50*adcb0a62SAndroid Build Coastguard Worker -------- ------ ------- ---- ---------- ----- -------- ---- 51*adcb0a62SAndroid Build Coastguard Worker 1024 Defl:N 11 99% 2017-06-04 08:45 48d7f063 d1/d2/x.txt 52*adcb0a62SAndroid Build Coastguard Worker -------- ------- --- ------- 53*adcb0a62SAndroid Build Coastguard Worker 1024 11 99% 1 file 54*adcb0a62SAndroid Build Coastguard Worker--- 55*adcb0a62SAndroid Build Coastguard Worker 56*adcb0a62SAndroid Build Coastguard Workername: unzip one file 57*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q $FILES/example.zip d1/d2/a.txt && cat d1/d2/a.txt 58*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/b.txt ] 59*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 60*adcb0a62SAndroid Build Coastguard Worker a 61*adcb0a62SAndroid Build Coastguard Worker--- 62*adcb0a62SAndroid Build Coastguard Worker 63*adcb0a62SAndroid Build Coastguard Workername: unzip all files 64*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q $FILES/example.zip 65*adcb0a62SAndroid Build Coastguard Workerafter: [ -f d1/d2/a.txt ] 66*adcb0a62SAndroid Build Coastguard Workerafter: [ -f d1/d2/b.txt ] 67*adcb0a62SAndroid Build Coastguard Workerafter: [ -f d1/d2/c.txt ] 68*adcb0a62SAndroid Build Coastguard Workerafter: [ -f d1/d2/empty.txt ] 69*adcb0a62SAndroid Build Coastguard Workerafter: [ -f d1/d2/x.txt ] 70*adcb0a62SAndroid Build Coastguard Workerafter: [ -d d1/d2/dir ] 71*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 72*adcb0a62SAndroid Build Coastguard Worker--- 73*adcb0a62SAndroid Build Coastguard Worker 74*adcb0a62SAndroid Build Coastguard Workername: unzip -o 75*adcb0a62SAndroid Build Coastguard Workerbefore: mkdir -p d1/d2 76*adcb0a62SAndroid Build Coastguard Workerbefore: echo b > d1/d2/a.txt 77*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q -o $FILES/example.zip d1/d2/a.txt && cat d1/d2/a.txt 78*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 79*adcb0a62SAndroid Build Coastguard Worker a 80*adcb0a62SAndroid Build Coastguard Worker--- 81*adcb0a62SAndroid Build Coastguard Worker 82*adcb0a62SAndroid Build Coastguard Workername: unzip -n 83*adcb0a62SAndroid Build Coastguard Workerbefore: mkdir -p d1/d2 84*adcb0a62SAndroid Build Coastguard Workerbefore: echo b > d1/d2/a.txt 85*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q -n $FILES/example.zip d1/d2/a.txt && cat d1/d2/a.txt 86*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 87*adcb0a62SAndroid Build Coastguard Worker b 88*adcb0a62SAndroid Build Coastguard Worker--- 89*adcb0a62SAndroid Build Coastguard Worker 90*adcb0a62SAndroid Build Coastguard Worker# The reference implementation will create *one* level of missing directories, 91*adcb0a62SAndroid Build Coastguard Worker# so this succeeds. 92*adcb0a62SAndroid Build Coastguard Workername: unzip -d shallow non-existent 93*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q -d will-be-created $FILES/example.zip d1/d2/a.txt 94*adcb0a62SAndroid Build Coastguard Workerafter: [ -d will-be-created ] 95*adcb0a62SAndroid Build Coastguard Workerafter: [ -f will-be-created/d1/d2/a.txt ] 96*adcb0a62SAndroid Build Coastguard Worker--- 97*adcb0a62SAndroid Build Coastguard Worker 98*adcb0a62SAndroid Build Coastguard Worker# The reference implementation will *only* create one level of missing 99*adcb0a62SAndroid Build Coastguard Worker# directories, so this fails. 100*adcb0a62SAndroid Build Coastguard Workername: unzip -d deep non-existent 101*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q -d oh-no/will-not-be-created $FILES/example.zip d1/d2/a.txt 2> stderr ; echo $? > status 102*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -d oh-no ] 103*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -d oh-no/will-not-be-created ] 104*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f oh-no/will-not-be-created/d1/d2/a.txt ] 105*adcb0a62SAndroid Build Coastguard Workerafter: grep -q "oh-no/will-not-be-created" stderr 106*adcb0a62SAndroid Build Coastguard Workerafter: grep -q "No such file or directory" stderr 107*adcb0a62SAndroid Build Coastguard Worker# The reference implementation has *lots* of non-zero exit values, but we stick to 0 and 1. 108*adcb0a62SAndroid Build Coastguard Workerafter: [ $(cat status) -gt 0 ] 109*adcb0a62SAndroid Build Coastguard Worker--- 110*adcb0a62SAndroid Build Coastguard Worker 111*adcb0a62SAndroid Build Coastguard Workername: unzip -d exists 112*adcb0a62SAndroid Build Coastguard Workerbefore: mkdir dir 113*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q -d dir $FILES/example.zip d1/d2/a.txt && cat dir/d1/d2/a.txt 114*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/a.txt ] 115*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 116*adcb0a62SAndroid Build Coastguard Worker a 117*adcb0a62SAndroid Build Coastguard Worker--- 118*adcb0a62SAndroid Build Coastguard Worker 119*adcb0a62SAndroid Build Coastguard Workername: unzip -p 120*adcb0a62SAndroid Build Coastguard Workercommand: unzip -p $FILES/example.zip d1/d2/a.txt 121*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/a.txt ] 122*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 123*adcb0a62SAndroid Build Coastguard Worker a 124*adcb0a62SAndroid Build Coastguard Worker--- 125*adcb0a62SAndroid Build Coastguard Worker 126*adcb0a62SAndroid Build Coastguard Workername: unzip -x FILE... 127*adcb0a62SAndroid Build Coastguard Worker# Note: the RI ignores -x DIR for some reason, but it's not obvious we should. 128*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q $FILES/example.zip -x d1/d2/a.txt d1/d2/b.txt d1/d2/empty.txt d1/d2/x.txt && cat d1/d2/c.txt 129*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/a.txt ] 130*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/b.txt ] 131*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/empty.txt ] 132*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/x.txt ] 133*adcb0a62SAndroid Build Coastguard Workerafter: [ -d d1/d2/dir ] 134*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 135*adcb0a62SAndroid Build Coastguard Worker ccc 136*adcb0a62SAndroid Build Coastguard Worker--- 137*adcb0a62SAndroid Build Coastguard Worker 138*adcb0a62SAndroid Build Coastguard Workername: unzip FILE -x FILE... 139*adcb0a62SAndroid Build Coastguard Workercommand: unzip -q $FILES/example.zip d1/d2/a.txt d1/d2/b.txt -x d1/d2/a.txt && cat d1/d2/b.txt 140*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/a.txt ] 141*adcb0a62SAndroid Build Coastguard Workerafter: [ -f d1/d2/b.txt ] 142*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/c.txt ] 143*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/empty.txt ] 144*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/x.txt ] 145*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -d d1/d2/dir ] 146*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 147*adcb0a62SAndroid Build Coastguard Worker bb 148*adcb0a62SAndroid Build Coastguard Worker--- 149*adcb0a62SAndroid Build Coastguard Worker 150*adcb0a62SAndroid Build Coastguard Workername: unzip -j 151*adcb0a62SAndroid Build Coastguard Worker# Note: the RI outputs a bunch of trailing whitespace for some reason. 152*adcb0a62SAndroid Build Coastguard Workercommand: unzip -j $FILES/example.zip d1/d2/x.txt | sed 's/ *$//' 153*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/x.txt ] 154*adcb0a62SAndroid Build Coastguard Workerafter: [ -f x.txt ] 155*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 156*adcb0a62SAndroid Build Coastguard Worker Archive: $FILES/example.zip 157*adcb0a62SAndroid Build Coastguard Worker inflating: x.txt 158*adcb0a62SAndroid Build Coastguard Worker--- 159*adcb0a62SAndroid Build Coastguard Worker 160*adcb0a62SAndroid Build Coastguard Workername: unzip -t one 161*adcb0a62SAndroid Build Coastguard Workercommand: unzip -t $FILES/example.zip d1/d2/x.txt 162*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -d d1 ] 163*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 164*adcb0a62SAndroid Build Coastguard Worker Archive: $FILES/example.zip 165*adcb0a62SAndroid Build Coastguard Worker testing: d1/d2/x.txt OK 166*adcb0a62SAndroid Build Coastguard Worker No errors detected in $FILES/example.zip for the 1 file tested. 167*adcb0a62SAndroid Build Coastguard Worker--- 168*adcb0a62SAndroid Build Coastguard Worker 169*adcb0a62SAndroid Build Coastguard Workername: unzip -tq all 170*adcb0a62SAndroid Build Coastguard Workercommand: unzip -tq $FILES/example.zip 171*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/x.txt ] 172*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 173*adcb0a62SAndroid Build Coastguard Worker No errors detected in compressed data of $FILES/example.zip. 174*adcb0a62SAndroid Build Coastguard Worker--- 175*adcb0a62SAndroid Build Coastguard Worker 176*adcb0a62SAndroid Build Coastguard Workername: unzip -tq one 177*adcb0a62SAndroid Build Coastguard Workercommand: unzip -tq $FILES/example.zip d1/d2/x.txt 178*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/x.txt ] 179*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 180*adcb0a62SAndroid Build Coastguard Worker No errors detected in $FILES/example.zip for the 1 file tested. 181*adcb0a62SAndroid Build Coastguard Worker 182*adcb0a62SAndroid Build Coastguard Worker--- 183*adcb0a62SAndroid Build Coastguard Worker 184*adcb0a62SAndroid Build Coastguard Workername: unzip -tq two 185*adcb0a62SAndroid Build Coastguard Workercommand: unzip -tq $FILES/example.zip d1/d2/x.txt d1/d2/b.txt 186*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f d1/d2/x.txt ] 187*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 188*adcb0a62SAndroid Build Coastguard Worker No errors detected in $FILES/example.zip for the 2 files tested. 189*adcb0a62SAndroid Build Coastguard Worker 190*adcb0a62SAndroid Build Coastguard Worker--- 191*adcb0a62SAndroid Build Coastguard Worker 192*adcb0a62SAndroid Build Coastguard Workername: unzip -t one bad 193*adcb0a62SAndroid Build Coastguard Workercommand: unzip -t $FILES/bad_crc.zip a.txt 194*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f a.txt ] 195*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 196*adcb0a62SAndroid Build Coastguard Worker Archive: $FILES/bad_crc.zip 197*adcb0a62SAndroid Build Coastguard Worker testing: a.txt bad CRC 950821c5 (should be 950821e5) 198*adcb0a62SAndroid Build Coastguard Worker At least one error was detected in $FILES/bad_crc.zip. 199*adcb0a62SAndroid Build Coastguard Workerexpected-exit-status: 2 200*adcb0a62SAndroid Build Coastguard Worker 201*adcb0a62SAndroid Build Coastguard Worker#--- 202*adcb0a62SAndroid Build Coastguard Worker# 203*adcb0a62SAndroid Build Coastguard Worker# TODO: test requires file iteration order. 204*adcb0a62SAndroid Build Coastguard Worker#name: unzip -tq all bad 205*adcb0a62SAndroid Build Coastguard Worker#command: unzip -tq $FILES/bad_crc.zip 206*adcb0a62SAndroid Build Coastguard Worker#after: [ ! -f a.txt ] 207*adcb0a62SAndroid Build Coastguard Worker#after: [ ! -f b.txt ] 208*adcb0a62SAndroid Build Coastguard Worker#expected-stdout: 209*adcb0a62SAndroid Build Coastguard Worker# a.txt bad CRC 950821c5 (should be 950821e5) 210*adcb0a62SAndroid Build Coastguard Worker# b.txt bad CRC 5912b84d (should be 5912b84e) 211*adcb0a62SAndroid Build Coastguard Worker# At least one error was detected in $FILES/bad_crc.zip. 212*adcb0a62SAndroid Build Coastguard Worker#expected-exit-status: 2 213*adcb0a62SAndroid Build Coastguard Worker 214*adcb0a62SAndroid Build Coastguard Worker--- 215*adcb0a62SAndroid Build Coastguard Worker 216*adcb0a62SAndroid Build Coastguard Workername: unzip -tq one bad 217*adcb0a62SAndroid Build Coastguard Workercommand: unzip -tq $FILES/bad_crc.zip a.txt 218*adcb0a62SAndroid Build Coastguard Workerafter: [ ! -f a.txt ] 219*adcb0a62SAndroid Build Coastguard Workerexpected-stdout: 220*adcb0a62SAndroid Build Coastguard Worker a.txt bad CRC 950821c5 (should be 950821e5) 221*adcb0a62SAndroid Build Coastguard Worker At least one error was detected in $FILES/bad_crc.zip. 222*adcb0a62SAndroid Build Coastguard Workerexpected-exit-status: 2 223*adcb0a62SAndroid Build Coastguard Worker 224*adcb0a62SAndroid Build Coastguard Worker#--- 225*adcb0a62SAndroid Build Coastguard Worker# 226*adcb0a62SAndroid Build Coastguard Worker# TODO: test requires file iteration order. 227*adcb0a62SAndroid Build Coastguard Worker#name: unzip -tq two bad 228*adcb0a62SAndroid Build Coastguard Worker#command: unzip -tq $FILES/bad_crc.zip a.txt b.txt 229*adcb0a62SAndroid Build Coastguard Worker#after: [ ! -f a.txt ] 230*adcb0a62SAndroid Build Coastguard Worker#after: [ ! -f b.txt ] 231*adcb0a62SAndroid Build Coastguard Worker#expected-stdout: 232*adcb0a62SAndroid Build Coastguard Worker# a.txt bad CRC 950821c5 (should be 950821e5) 233*adcb0a62SAndroid Build Coastguard Worker# b.txt bad CRC 5912b84d (should be 5912b84e) 234*adcb0a62SAndroid Build Coastguard Worker# At least one error was detected in $FILES/bad_crc.zip. 235*adcb0a62SAndroid Build Coastguard Worker#expected-exit-status: 2 236*adcb0a62SAndroid Build Coastguard Worker 237*adcb0a62SAndroid Build Coastguard Worker--- 238