xref: /aosp_15_r20/external/toybox/tests/realpath.test (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
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 WorkerTOP="$(readlink -f .)"
8*cf5a6c84SAndroid Build Coastguard Workerexport PWD
9*cf5a6c84SAndroid Build Coastguard Worker
10*cf5a6c84SAndroid Build Coastguard Workertouch file
11*cf5a6c84SAndroid Build Coastguard Workermkdir -p one/two/three
12*cf5a6c84SAndroid Build Coastguard Workerln -s ./one uno
13*cf5a6c84SAndroid Build Coastguard Workerln -s one/two dos
14*cf5a6c84SAndroid Build Coastguard Worker
15*cf5a6c84SAndroid Build Coastguard Workertestcmd '' '.' "$TOP\n" '' ''
16*cf5a6c84SAndroid Build Coastguard Workertestcmd 'missing' 'missing' "$TOP/missing\n" '' ''
17*cf5a6c84SAndroid Build Coastguard Workertestcmd 'missing2' 'missing/sub 2>/dev/null || echo err' 'err\n' '' ''
18*cf5a6c84SAndroid Build Coastguard Workertestcmd '-z' '-z . | tr "\0" X' "${TOP}X" '' ''
19*cf5a6c84SAndroid Build Coastguard Workertestcmd 'file' 'file' "$TOP/file\n" '' ''
20*cf5a6c84SAndroid Build Coastguard Workertestcmd 'dir' 'one/two/three' "$TOP/one/two/three\n" '' ''
21*cf5a6c84SAndroid Build Coastguard Workertestcmd '--relative-to' '. --relative-to=one/two/three' '../../..\n' '' ''
22*cf5a6c84SAndroid Build Coastguard Workertestcmd '--relative-to2' \
23*cf5a6c84SAndroid Build Coastguard Worker  '-m --relative-to=missing/that/ uno/../dos/linux/../../bingeley/bongeley/beep' \
24*cf5a6c84SAndroid Build Coastguard Worker  '../../one/bingeley/bongeley/beep\n' '' ''
25*cf5a6c84SAndroid Build Coastguard Workertestcmd '--relative-to3' '-m walrus --relative-to walrus' '.\n' '' ''
26*cf5a6c84SAndroid Build Coastguard Workertestcmd '--relative-to4' '"$PWD" --relative-to one' '..\n' '' ''
27*cf5a6c84SAndroid Build Coastguard Workertestcmd '--relative-to5' '--relative-to "$PWD" one' 'one\n' '' ''
28*cf5a6c84SAndroid Build Coastguard Workertestcmd 'relative-to missing' \
29*cf5a6c84SAndroid Build Coastguard Worker  '--relative-to nothing/potato . 2>/dev/null || echo fail' 'fail\n' '' ''
30*cf5a6c84SAndroid Build Coastguard Workertestcmd 'relative-to missing -m' \
31*cf5a6c84SAndroid Build Coastguard Worker  '-m --relative-to nothing/potato .' '../..\n' '' ''
32*cf5a6c84SAndroid Build Coastguard Workertestcmd '--relative-base' 'one one/two one/two/three --relative-base=one/two' \
33*cf5a6c84SAndroid Build Coastguard Worker  "$TOP/one\n.\nthree\n" '' ''
34*cf5a6c84SAndroid Build Coastguard Workertestcmd '--relative-base stomps --relative-to' \
35*cf5a6c84SAndroid Build Coastguard Worker  '--relative-to=.. --relative-base=one/two one' "$TOP/one\n" '' ''
36*cf5a6c84SAndroid Build Coastguard Workertestcmd '-m with relative-base1' '-m --relative-base wurble wurble/poing' \
37*cf5a6c84SAndroid Build Coastguard Worker  'poing\n' '' ''
38*cf5a6c84SAndroid Build Coastguard Workertestcmd '-m with relative-base2' '-sm --relative-base wurble .' "$PWD\n" '' ''
39*cf5a6c84SAndroid Build Coastguard Workertestcmd '-m with relative-base3' '-m --relative-base wurble wurble wurble/' \
40*cf5a6c84SAndroid Build Coastguard Worker  '.\n.\n' '' ''
41*cf5a6c84SAndroid Build Coastguard Workertestcmd 'missing defaults to -m' 'missing' "$TOP/missing\n" '' ''
42*cf5a6c84SAndroid Build Coastguard Workertestcmd 'missing -e' '-e missing 2>/dev/null || echo ok' 'ok\n' '' ''
43*cf5a6c84SAndroid Build Coastguard Workertestcmd '-L' '-L dos/../one' "$TOP/one\n" '' ''
44*cf5a6c84SAndroid Build Coastguard Worker
45*cf5a6c84SAndroid Build Coastguard Worker# -s vs -L
46*cf5a6c84SAndroid Build Coastguard Workerln -s .. parent
47*cf5a6c84SAndroid Build Coastguard Workertestcmd "-s isn't L" '-s --relative-to=. parent' 'parent\n' '' ''
48*cf5a6c84SAndroid Build Coastguard Workertestcmd "-L isn't s" '-L --relative-to=. parent' '..\n' '' ''
49*cf5a6c84SAndroid Build Coastguard Worker
50*cf5a6c84SAndroid Build Coastguard Worker# The -s tests use $PWD instead of $TOP because symlinks in path _to_ here
51*cf5a6c84SAndroid Build Coastguard Worker# should not be resolved either. The shell exports $PWD: use it.
52*cf5a6c84SAndroid Build Coastguard Workertestcmd '-s' '-s uno/two' "$PWD/uno/two\n" '' ''
53*cf5a6c84SAndroid Build Coastguard Workertestcmd '-s link/..' '-es dos/three' "$PWD/dos/three\n" '' ''
54*cf5a6c84SAndroid Build Coastguard Workertestcmd '-s .. eats symlink' '-s dos/..' "$PWD\n" '' ''
55*cf5a6c84SAndroid Build Coastguard Worker# In toybox this test is consistent with the previous one
56*cf5a6c84SAndroid Build Coastguard Workertoyonly testing '-s .. eats symlink in $PWD' \
57*cf5a6c84SAndroid Build Coastguard Worker  'cd dos && realpath -s ..' "$PWD\n" '' ''
58*cf5a6c84SAndroid Build Coastguard Worker# Logically -es means the _symlink_ should exist, but match behavior...
59*cf5a6c84SAndroid Build Coastguard Workerln -s missing dangling
60*cf5a6c84SAndroid Build Coastguard Workertestcmd '-es dangling symlink' '-es dangling 2>/dev/null || echo ok' \
61*cf5a6c84SAndroid Build Coastguard Worker  'ok\n' '' ''
62*cf5a6c84SAndroid Build Coastguard Workertestcmd '-ms' '-ms dangling/../dos/../one/two' "$PWD/one/two\n" '' ''
63*cf5a6c84SAndroid Build Coastguard Workerln -s ../two/.. one/two/ichi
64*cf5a6c84SAndroid Build Coastguard Workertestcmd '-es' '-es one/two/ichi/two/ichi/two' "$PWD/one/two/ichi/two/ichi/two\n" '' ''
65*cf5a6c84SAndroid Build Coastguard Worker
66*cf5a6c84SAndroid Build Coastguard Workerrm -rf file one uno dos
67