1 #!/bin/bash
2
3 ### dirs builtin
4 cd /
5 dirs
6 # status: 0
7 ## STDOUT:
8 /
9 ## END
10
11 ### dirs -c to clear the stack
12 set -o errexit
13 cd /
14 pushd /tmp >/dev/null # zsh pushd doesn't print anything, but bash does
15 echo --
16 dirs
17 dirs -c
18 echo --
19 dirs
20 ## status: 0
21 ## STDOUT:
22 --
23 /tmp /
24 --
25 /tmp
26 ## END
27
28 ### dirs -v to print numbered stack, one entry per line
29 set -o errexit
30 cd /
31 pushd /tmp >/dev/null
32 echo --
33 dirs -v
34 pushd /lib >/dev/null
35 echo --
36 dirs -v
37 ## status: 0
38 ## STDOUT:
39 --
40 0 /tmp
41 1 /
42 --
43 0 /lib
44 1 /tmp
45 2 /
46 ## END
47 #
48 # zsh uses tabs
49 ## OK zsh stdout-json: "--\n0\t/tmp\n1\t/\n--\n0\t/lib\n1\t/tmp\n2\t/\n"
50
51 ### dirs -p to print one entry per line
52 set -o errexit
53 cd /
54 pushd /tmp >/dev/null
55 echo --
56 dirs -p
57 pushd /lib >/dev/null
58 echo --
59 dirs -p
60 ## STDOUT:
61 --
62 /tmp
63 /
64 --
65 /lib
66 /tmp
67 /
68 ## END
69
70 ### dirs -l to print in long format, no tilde prefix
71 # Can't use the OSH test harness for this because
72 # /home/<username> may be included in a path.
73 cd /
74 HOME=/tmp
75 mkdir -p $HOME/oil_test
76 pushd $HOME/oil_test >/dev/null
77 dirs
78 dirs -l
79 # status: 0
80 ## STDOUT:
81 ~/oil_test /
82 /tmp/oil_test /
83 ## END
84
85 ### dirs to print using tilde-prefix format
86 cd /
87 HOME=/tmp
88 mkdir -p $HOME/oil_test
89 pushd $HOME/oil_test >/dev/null
90 dirs
91 # stdout: ~/oil_test /
92 # status: 0
93
94 ### dirs test converting true home directory to tilde
95 cd /
96 HOME=/tmp
97 mkdir -p $HOME/oil_test/$HOME
98 pushd $HOME/oil_test/$HOME >/dev/null
99 dirs
100 # stdout: ~/oil_test/tmp /
101 # status: 0
102
103 ### dirs don't convert to tilde when $HOME is substring
104 cd /
105 mkdir -p /tmp/oil_test
106 mkdir -p /tmp/oil_tests
107 HOME=/tmp/oil_test
108 pushd /tmp/oil_tests
109 dirs
110
111 ### dirs tilde test when $HOME is exactly $PWD
112 cd /
113 mkdir -p /tmp/oil_test
114 HOME=/tmp/oil_test
115 pushd $HOME
116 dirs
117 ## status: 0
118 # zsh doesn't duplicate the stack I guess.
119 ## OK zsh stdout-json: "~ /\n"
120 ## STDOUT:
121 ~ /
122 ~ /
123 ## END
124
125 ### dirs test of path alias `..`
126 cd /tmp
127 pushd .. >/dev/null
128 dirs
129 # stdout: / /tmp
130 # status: 0
131
132 ### dirs test of path alias `.`
133 cd /tmp
134 pushd . >/dev/null
135 dirs
136 # stdout: /tmp /tmp
137 # status: 0