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 WorkerAPWD="$(pwd -P)" 8*cf5a6c84SAndroid Build Coastguard Worker 9*cf5a6c84SAndroid Build Coastguard Workertesting "missing" "readlink notfound || echo yes" "yes\n" "" "" 10*cf5a6c84SAndroid Build Coastguard Worker 11*cf5a6c84SAndroid Build Coastguard Worker# simple tests on a file 12*cf5a6c84SAndroid Build Coastguard Worker 13*cf5a6c84SAndroid Build Coastguard Workertouch file 14*cf5a6c84SAndroid Build Coastguard Workertesting "file" "readlink file || echo yes" "yes\n" "" "" 15*cf5a6c84SAndroid Build Coastguard Workertesting "-f dir" "readlink -f ." "$APWD\n" "" "" 16*cf5a6c84SAndroid Build Coastguard Workertesting "-f missing" "readlink -f notfound" "$APWD/notfound\n" "" "" 17*cf5a6c84SAndroid Build Coastguard Worker 18*cf5a6c84SAndroid Build Coastguard Workerln -sf notfound link 19*cf5a6c84SAndroid Build Coastguard Workertesting "link" "readlink link" "notfound\n" "" "" 20*cf5a6c84SAndroid Build Coastguard Workertesting "links" "readlink link link" "notfound\nnotfound\n" "" "" 21*cf5a6c84SAndroid Build Coastguard Workertesting "link->missing" "readlink -f link" "$APWD/notfound\n" "" "" 22*cf5a6c84SAndroid Build Coastguard Workerln -sf ../../ link 23*cf5a6c84SAndroid Build Coastguard Workertesting "stays relative" "readlink link" "../../\n" "" "" 24*cf5a6c84SAndroid Build Coastguard Workerrm link 25*cf5a6c84SAndroid Build Coastguard Workerln -sf file link 26*cf5a6c84SAndroid Build Coastguard Workertesting "-f link->file" "readlink -f link" "$APWD/file\n" "" "" 27*cf5a6c84SAndroid Build Coastguard Workerln -sf . link 28*cf5a6c84SAndroid Build Coastguard Workertesting "-f link->dir" "readlink -f link" "$APWD\n" "" "" 29*cf5a6c84SAndroid Build Coastguard Workerln -snf link link 30*cf5a6c84SAndroid Build Coastguard Workertesting "link->link (recursive)" "readlink link" "link\n" "" "" 31*cf5a6c84SAndroid Build Coastguard Workertesting "-f link->link (recursive)" \ 32*cf5a6c84SAndroid Build Coastguard Worker "readlink -f link 2>/dev/null || echo yes" "yes\n" "" "" 33*cf5a6c84SAndroid Build Coastguard Worker 34*cf5a6c84SAndroid Build Coastguard Workertesting "-q notlink" "readlink -q file 2>&1 || echo yes" "yes\n" "" "" 35*cf5a6c84SAndroid Build Coastguard Workertesting "-q link" "readlink -q link && echo yes" "link\nyes\n" "" "" 36*cf5a6c84SAndroid Build Coastguard Workertesting "-q notfound" "readlink -q notfound || echo yes" "yes\n" "" "" 37*cf5a6c84SAndroid Build Coastguard Workertesting "-e found" "readlink -e file" "$APWD/file\n" "" "" 38*cf5a6c84SAndroid Build Coastguard Workertesting "-e notfound" \ 39*cf5a6c84SAndroid Build Coastguard Worker "readlink -e notfound 2>/dev/null || echo yes" "yes\n" "" "" 40*cf5a6c84SAndroid Build Coastguard Workertesting "-nf ." "readlink -nf ." "$APWD" "" "" 41*cf5a6c84SAndroid Build Coastguard Worker# -n means no newline at _end_. I.E. on last argument. 42*cf5a6c84SAndroid Build Coastguard Workertoyonly testcmd '-nf multiple args' '-n link link' "link\nlink" '' '' 43*cf5a6c84SAndroid Build Coastguard Workertestcmd '-nz' '-nz link' 'link' '' '' 44*cf5a6c84SAndroid Build Coastguard Workertestcmd '-z' '-z link' 'link\0' '' '' 45*cf5a6c84SAndroid Build Coastguard Worker 46*cf5a6c84SAndroid Build Coastguard Workermkdir sub && 47*cf5a6c84SAndroid Build Coastguard Workerln -s . here && 48*cf5a6c84SAndroid Build Coastguard Workerln -s ./sub dir && 49*cf5a6c84SAndroid Build Coastguard Workertouch sub/bang || exit 1 50*cf5a6c84SAndroid Build Coastguard Workertesting "-f multi" "readlink -f dir/../here/dir/bang" \ 51*cf5a6c84SAndroid Build Coastguard Worker "$APWD/sub/bang\n" "" "" 52*cf5a6c84SAndroid Build Coastguard Workertesting "-f link/missing" "readlink -f dir/boing" \ 53*cf5a6c84SAndroid Build Coastguard Worker "$APWD/sub/boing\n" "" "" 54*cf5a6c84SAndroid Build Coastguard Workertesting "-f /dev/null/file" \ 55*cf5a6c84SAndroid Build Coastguard Worker "readlink -f /dev/null/file 2>/dev/null || echo yes" "yes\n" "" "" 56*cf5a6c84SAndroid Build Coastguard Workertesting "-m missing/dir" "readlink -m sub/two/three" "$APWD/sub/two/three\n" "" "" 57*cf5a6c84SAndroid Build Coastguard Workertesting "-m missing/../elsewhere" "readlink -m sub/two/../../three" "$APWD/three\n" "" "" 58*cf5a6c84SAndroid Build Coastguard Worker# TODO: host bug? That's not missing, that's "cannot exist". 59*cf5a6c84SAndroid Build Coastguard Workertoyonly testing "-m file/dir" "readlink -m sub/bang/two 2>/dev/null || echo err" "err\n" "" "" 60*cf5a6c84SAndroid Build Coastguard Workerrm link 61*cf5a6c84SAndroid Build Coastguard Workerln -sf / link || exit 1 62*cf5a6c84SAndroid Build Coastguard Workertesting "-f link->/" "readlink -e link/dev" "/dev\n" "" "" 63*cf5a6c84SAndroid Build Coastguard Workertesting "-f /dev/null/.." \ 64*cf5a6c84SAndroid Build Coastguard Worker "readlink -f link/null/.. 2>/dev/null || echo yes" "yes\n" "" "" 65*cf5a6c84SAndroid Build Coastguard Workerrm -f link && ln -sf link link || exit 1 66*cf5a6c84SAndroid Build Coastguard Workertesting "recurse" "readlink link" "link\n" "" "" 67*cf5a6c84SAndroid Build Coastguard Worker 68*cf5a6c84SAndroid Build Coastguard Workerrm file link sub/bang dir here 69*cf5a6c84SAndroid Build Coastguard Workerrmdir sub 70*cf5a6c84SAndroid Build Coastguard Worker 71*cf5a6c84SAndroid Build Coastguard Worker# Make sure circular links don't run away. 72*cf5a6c84SAndroid Build Coastguard Worker 73*cf5a6c84SAndroid Build Coastguard Workerln -s link1 link2 74*cf5a6c84SAndroid Build Coastguard Workerln -s link2 link1 75*cf5a6c84SAndroid Build Coastguard Workertesting "follow recursive2" "readlink -f link1 || echo yes" \ 76*cf5a6c84SAndroid Build Coastguard Worker "yes\n" "" "" 77*cf5a6c84SAndroid Build Coastguard Workerrm link1 link2 78