OILS / test / gold / readlink.sh View on Github | oilshell.org

61 lines, 31 significant
1#!/usr/bin/env bash
2#
3# Test case for OSH readlink.
4#
5# Note: there is also a demo to run like this:
6#
7# $ demo/readlink-demo.sh all
8#
9# Usage:
10# gold/readlink.sh <function name>
11
12set -o nounset
13set -o pipefail
14#set -o errexit
15
16test-readlink() {
17 readlink -f _tmp/gold-bin/readlink
18 echo $?
19
20 readlink -f libc.so
21 echo $?
22
23 # busybox 1.35.0 changed behavior here! It now matches GNU readlink.
24 readlink -f /nonexistent
25 echo $?
26
27 readlink -f /nonexistent/foo
28 echo $?
29
30 return
31
32 # NOTE: busybox doesn't accept multiple arguments.
33 echo 'Multiple arguments with an error in the middle'
34 readlink -f _tmp/gold-bin/readlink /nonexistent/foo libc.so
35 echo $?
36}
37
38# For this readlink gold test, we need a custom test driver.
39compare() {
40 mkdir -p _tmp/gold-bin
41 ln -s -f -v $PWD/../oil_DEPS/spec-bin/busybox _tmp/gold-bin/readlink
42
43 if ! _tmp/gold-bin/readlink --help; then
44 echo "busybox readlink not working"
45 fi
46
47 # Use the readlink in busybox.
48 PATH="_tmp/gold-bin:$PATH" $0 test-readlink > _tmp/busybox-readlink.txt
49
50 # Use the readlink in OSH.
51 PATH="bin/:$PATH" $0 test-readlink > _tmp/osh-readlink.txt
52
53 if diff -u _tmp/{busybox,osh}-readlink.txt; then
54 echo PASS
55 else
56 echo FAIL
57 return 1
58 fi
59}
60
61"$@"