modified: n.fq
[GalaxyCodeBases.git] / bash / realpath-lib / make-generic-test.sh
blob5a8628f0f835efd7f14e7ea9a2189644c938bb1f
1 #!/usr/bin/env bash
3 # make-generic-test.sh. A test script for realpath-lib. Use this script to
4 # assess compatibility on a given operating system. This script is based upon
5 # concepts and contributions by Mikael Auno that can be found within the issues
6 # thread 1 of November 2013 at:
8 # https://github.com/AsymLabs/realpath-lib/issues/1
10 # Note that this will create a directory structure, identified by root 'foo',
11 # that is shown below:
13 # foo
14 # ├── bar1
15 # │ ├── baz.phys
16 # │ ├── foo->bar1.sym -> ../bar2/foo->bar2.sym
17 # │ └── foo->baz.phys
18 # ├── bar2
19 # │ ├── bazbaz.sym -> baz.sym
20 # │ ├── baz.sym -> ../bar1/baz.phys
21 # │ ├── broken.sym -> ../bar1/broken.phys
22 # │ ├── foo->bar2.sym -> ../bar1/foo->bar1.sym
23 # │ └── foobaz.sym -> ../bar1/foo->baz.phys
24 # └── bar3 -> bar1
26 # If the root 'foo' already exists then no modifications will be made. To
27 # use it, unpack realpath-lib-master.zip (or acquire it from the repo using
28 # git), change into the root directory and do:
30 # ./make-generic-test.sh # with executable permission
32 # or
34 # bash make-generic-test.sh # without executable permission
36 # Version : 2013.11.19.00
37 # Usage : ./make-generic-test.sh
38 # Output : results of tests.
40 # This script requires Bash 4+ and a few POSIX standard utilities, 'mkdir',
41 # 'date', 'uname', 'ln', 'tee', 'tput' and 'more' (or 'less', if installed
42 # but 'less' is not posix). The results are stored in a local file that is
43 # uniquely stamped and suffixed with the extension '.log'. The content of
44 # this file is displayed upon completion of execution.
46 # Note that no warranty is given, either implied or expressed, and the
47 # license terms are according to the MIT license that is included within
48 # this repository. Use at your own risk! You have been warned!
50 # Written by G R Summers. Last updated on Tue Nov 19 10:16:36 GMT 2013
52 #### ENVIRONMENT
54 source realpath-lib
55 readonly pwd_log="$(pwd)"
56 readonly pwd_phys="$(pwd -P)"
57 readonly suffix="$(uname -s)"'-'"$(date +%s)"'s-'"${RANDOM}${RANDOM}"'.log'
58 readonly stdout_log='generic-tests-'"$suffix"
59 readonly stderr_log='generic-errors-'"$suffix"
61 #### FUNCTIONS
63 # check _dependencies : confirm that dependencies are installed.
64 function check_dependencies(){
66 # Posix utilties.
67 hash mkdir &&
68 hash date &&
69 hash uname &&
70 hash ln &&
71 hash tee &&
72 hash tput &&
73 hash more || {
74 echo "One or more dependencies cannot be found, throwing exit condition ..."
75 return 1
80 # make_header : produces file header for results of tests
81 function make_header(){
82 echo "INITIATED TESTS OF REALPATH-LIB V$RPL_VERSION ON $(date)"
83 echo "SYSTEM: $(uname -srm)"
84 echo
87 # make_footer : produces file foolter for results of tests.
88 function make_footer(){
89 local _failed;
90 echo
91 if (( $failcntr )); then
92 if (( $failcntr > 1 )); then
93 _failed="THERE ARE ($failcntr) FAILURES."
94 else
95 _failed="THERE IS ONE (1) FAILURE."
97 echo "SUMMARY OF RESULTS: OF ($totalcntr) TESTS PERFORMED, $_failed"
98 else
99 echo "SUMMARY OF RESULTS: OF ($totalcntr) TESTS PERFORMED, ALL TESTS HAVE PASSED."
101 echo "COMPLETED TESTS OF REALPATH-LIB V$RPL_VERSION ON $(date)"
104 # make_paths : make path (directory) structure.
105 function make_paths(){
106 # Very simple safety check.
107 if [[ ! -d 'foo' ]]; then
108 echo "Directory 'foo' does not exist, creating..."
110 mkdir foo
111 mkdir foo/bar1
112 mkdir foo/bar2
113 ln -s bar1 foo/bar3
114 echo 'test file' > foo/bar1/baz.phys
115 echo 'test file' > foo/bar1/foo-\>baz.phys
116 ln -s ../bar1/baz.phys foo/bar2/baz.sym
117 ln -s baz.sym foo/bar2/bazbaz.sym
118 ln -s ../bar1/foo-\>bar1.sym foo/bar2/foo-\>bar2.sym # circular
119 ln -s ../bar2/foo-\>bar2.sym foo/bar1/foo-\>bar1.sym # circular
120 ln -s ../bar1/broken.phys foo/bar2/broken.sym
121 ln -s ../bar1/foo-\>baz.phys foo/bar2/foobaz.sym
122 } &>/dev/null || {
123 echo "Could not create test directories, throwing exit condition..."
124 return 1
126 else
127 echo "Directory 'foo' already exists, proceeding..."
131 # make_test "function" "message" "path" "expected"
132 function make_test() {
133 local _function="$1"
134 local _message="$2"
135 local _path="$3"
136 local _expected="$4"
137 local _result=''
138 local _specified="$_expected"
139 local _exit_status=''
140 local _printf=''
142 # get _expected
143 if [[ "$_expected" != 'Error Code'* ]]; then
144 if [[ "$_function" = 'get_realpath' || "$1" = 'get_dirname' ]]; then
145 if [[ -n "$set_logical" ]]; then
146 _expected="$pwd_log/$_expected"
147 else
148 _expected="$pwd_phys/$_expected"
153 # get _result
154 _result="$($_function "$_path")"
155 _exit_status=$?
156 (( $_exit_status )) && _result="$(printf 'Error Code %s' "$_exit_status")"
158 # produce message
159 _printf="$(printf 'Try %-14s %-37s set_logical=%-4s ' "$_function" "$_message $_path" "$set_logical")"
160 if [[ "$_result" != "$_expected" ]]; then
161 echo "$_printf Fail"
162 echo "--> specified \"$_specified\" but got \"$_result\""
163 ((failcntr++))
164 else
165 echo "$_printf Pass"
167 ((totalcntr++))
170 #### MAIN PROCEDURES
172 # Confirm dependencies.
173 check_dependencies || exit 1
175 # Initialize counters
176 failcntr=0 # failing test counter.
177 totalcntr=0 # total test counter.
179 # Initialize tee_stderr
180 readonly tee_stderr='tee -a /dev/stderr'
182 # Initialize file_reader
183 hash less &>/dev/null &&
184 readonly file_reader='less -S' ||
185 readonly file_reader='more -d'
187 # Make header for logs.
188 make_header | tee "$stdout_log" > "$stderr_log"
191 # Make directory structure required for tests.
192 make_paths || exit 1
196 # Series I: Using 'set_strict=true' for all.
197 echo
198 echo "===============================================================================" | $tee_stderr
199 echo "= Case I: Testing Realpath-Lib as 'set_strict=true' and 'set_logical={|true}' =" | $tee_stderr
200 echo "===============================================================================" | $tee_stderr
201 echo | $tee_stderr
203 # Begin tests
204 echo "### Logical and physical paths from 'foo/' for symlinks that exist ############" | $tee_stderr
206 set_strict=true set_logical=true make_test get_realpath "existing symlink" "foo/bar3/baz.phys" "foo/bar3/baz.phys"
207 set_strict=true make_test get_realpath "existing symlink" "foo/bar3/baz.phys" "foo/bar1/baz.phys"
208 set_strict=true set_logical=true make_test get_realpath "existing symlink" "foo/bar2/foobaz.sym" "foo/bar2/foobaz.sym"
209 set_strict=true make_test get_realpath "existing symlink" "foo/bar2/foobaz.sym" "foo/bar1/foo->baz.phys"
210 set_strict=true set_logical=true make_test get_realpath "existing symlink" "foo/bar2/bazbaz.sym" "foo/bar2/bazbaz.sym"
211 set_strict=true make_test get_realpath "existing symlink" "foo/bar2/bazbaz.sym" "foo/bar1/baz.phys"
213 set_strict=true set_logical=true make_test get_dirname "existing symlink" "foo/bar3/baz.phys" "foo/bar3"
214 set_strict=true make_test get_dirname "existing symlink" "foo/bar3/baz.phys" "foo/bar1"
215 set_strict=true set_logical=true make_test get_dirname "existing symlink" "foo/bar2/foobaz.sym" "foo/bar2"
216 set_strict=true make_test get_dirname "existing symlink" "foo/bar2/foobaz.sym" "foo/bar1"
217 set_strict=true set_logical=true make_test get_dirname "existing symlink" "foo/bar2/bazbaz.sym" "foo/bar2"
218 set_strict=true make_test get_dirname "existing symlink" "foo/bar2/bazbaz.sym" "foo/bar1"
220 set_strict=true set_logical=true make_test get_filename "existing symlink" "foo/bar3/baz.phys" "baz.phys"
221 set_strict=true make_test get_filename "existing symlink" "foo/bar3/baz.phys" "baz.phys"
222 set_strict=true set_logical=true make_test get_filename "existing symlink" "foo/bar2/foobaz.sym" "foobaz.sym"
223 set_strict=true make_test get_filename "existing symlink" "foo/bar2/foobaz.sym" "foo->baz.phys"
224 set_strict=true set_logical=true make_test get_filename "existing symlink" "foo/bar2/bazbaz.sym" "bazbaz.sym"
225 set_strict=true make_test get_filename "existing symlink" "foo/bar2/bazbaz.sym" "baz.phys"
227 set_strict=true set_logical=true make_test get_stemname "existing symlink" "foo/bar3/baz.phys" "baz"
228 set_strict=true make_test get_stemname "existing symlink" "foo/bar3/baz.phys" "baz"
229 set_strict=true set_logical=true make_test get_stemname "existing symlink" "foo/bar2/foobaz.sym" "foobaz"
230 set_strict=true make_test get_stemname "existing symlink" "foo/bar2/foobaz.sym" "foo->baz"
231 set_strict=true set_logical=true make_test get_stemname "existing symlink" "foo/bar2/bazbaz.sym" "bazbaz"
232 set_strict=true make_test get_stemname "existing symlink" "foo/bar2/bazbaz.sym" "baz"
234 set_strict=true set_logical=true make_test get_extension "existing symlink" "foo/bar3/baz.phys" "phys"
235 set_strict=true make_test get_extension "existing symlink" "foo/bar3/baz.phys" "phys"
236 set_strict=true set_logical=true make_test get_extension "existing symlink" "foo/bar2/foobaz.sym" "sym"
237 set_strict=true make_test get_extension "existing symlink" "foo/bar2/foobaz.sym" "phys"
238 set_strict=true set_logical=true make_test get_extension "existing symlink" "foo/bar2/bazbaz.sym" "sym"
239 set_strict=true make_test get_extension "existing symlink" "foo/bar2/bazbaz.sym" "phys"
241 echo | $tee_stderr
242 echo "### Logical and physical paths from 'foo/bar2/' for symlinks that exist #######" | $tee_stderr
244 cd foo/bar2 &>/dev/null
246 set_strict=true set_logical=true make_test get_realpath "existing symlink" "baz.sym" "foo/bar2/baz.sym"
247 set_strict=true make_test get_realpath "existing symlink" "baz.sym" "foo/bar1/baz.phys"
249 set_strict=true set_logical=true make_test get_dirname "existing symlink" "baz.sym" "foo/bar2"
250 set_strict=true make_test get_dirname "existing symlink" "baz.sym" "foo/bar1"
252 set_strict=true set_logical=true make_test get_filename "existing symlink" "baz.sym" "baz.sym"
253 set_strict=true make_test get_filename "existing symlink" "baz.sym" "baz.phys"
255 set_strict=true set_logical=true make_test get_stemname "existing symlink" "baz.sym" "baz"
256 set_strict=true make_test get_stemname "existing symlink" "baz.sym" "baz"
258 set_strict=true set_logical=true make_test get_extension "existing symlink" "baz.sym" "sym"
259 set_strict=true make_test get_extension "existing symlink" "baz.sym" "phys"
261 cd - &>/dev/null
263 echo | $tee_stderr
264 echo "### Logical and physical paths from 'foo/bar3/' for symlinks that exist #######" | $tee_stderr
266 cd foo/bar3 &>/dev/null
268 set_strict=true set_logical=true make_test get_realpath "existing symlink" "baz.phys" "foo/bar3/baz.phys"
269 set_strict=true make_test get_realpath "existing symlink" "baz.phys" "foo/bar1/baz.phys"
270 set_strict=true set_logical=true make_test get_realpath "existing symlink" "foo->baz.phys" "foo/bar3/foo->baz.phys"
271 set_strict=true make_test get_realpath "existing symlink" "foo->baz.phys" "foo/bar1/foo->baz.phys"
273 set_strict=true set_logical=true make_test get_dirname "existing symlink" "baz.phys" "foo/bar3"
274 set_strict=true make_test get_dirname "existing symlink" "baz.phys" "foo/bar1"
275 set_strict=true set_logical=true make_test get_dirname "existing symlink" "foo->baz.phys" "foo/bar3"
276 set_strict=true make_test get_dirname "existing symlink" "foo->baz.phys" "foo/bar1"
278 set_strict=true set_logical=true make_test get_filename "existing symlink" "baz.phys" "baz.phys"
279 set_strict=true make_test get_filename "existing symlink" "baz.phys" "baz.phys"
280 set_strict=true set_logical=true make_test get_filename "existing symlink" "foo->baz.phys" "foo->baz.phys"
281 set_strict=true make_test get_filename "existing symlink" "foo->baz.phys" "foo->baz.phys"
283 set_strict=true set_logical=true make_test get_stemname "existing symlink" "baz.phys" "baz"
284 set_strict=true make_test get_stemname "existing symlink" "baz.phys" "baz"
285 set_strict=true set_logical=true make_test get_stemname "existing symlink" "foo->baz.phys" "foo->baz"
286 set_strict=true make_test get_stemname "existing symlink" "foo->baz.phys" "foo->baz"
288 set_strict=true set_logical=true make_test get_extension "existing symlink" "baz.phys" "phys"
289 set_strict=true make_test get_extension "existing symlink" "baz.phys" "phys"
290 set_strict=true set_logical=true make_test get_extension "existing symlink" "foo->baz.phys" "phys"
291 set_strict=true make_test get_extension "existing symlink" "foo->baz.phys" "phys"
293 cd - &>/dev/null
295 echo | $tee_stderr
296 echo "### Logical and physical paths from 'foo/' for symlinks that do not exist #####" | $tee_stderr
298 set_strict=true set_logical=true make_test get_realpath "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
299 set_strict=true make_test get_realpath "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
301 set_strict=true set_logical=true make_test get_dirname "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
302 set_strict=true make_test get_dirname "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
304 set_strict=true set_logical=true make_test get_filename "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
305 set_strict=true make_test get_filename "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
307 set_strict=true set_logical=true make_test get_stemname "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
308 set_strict=true make_test get_stemname "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
310 set_strict=true set_logical=true make_test get_extension "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
311 set_strict=true make_test get_extension "non-existant symlink" "foo/bar2/no.foo" "Error Code 1"
313 echo | $tee_stderr
314 echo "### Logical and physical paths from 'foo/' for symlinks that are broken #######" | $tee_stderr
316 set_strict=true set_logical=true make_test get_realpath "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
317 set_strict=true make_test get_realpath "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
319 set_strict=true set_logical=true make_test get_dirname "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
320 set_strict=true make_test get_dirname "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
322 set_strict=true set_logical=true make_test get_filename "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
323 set_strict=true make_test get_filename "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
325 set_strict=true set_logical=true make_test get_stemname "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
326 set_strict=true make_test get_stemname "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
328 set_strict=true set_logical=true make_test get_extension "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
329 set_strict=true make_test get_extension "broken symlink" "foo/bar2/broken.sym" "Error Code 1"
331 echo | $tee_stderr
332 echo "### Logical and physical paths from 'foo/' for files that are not symlinks ####" | $tee_stderr
334 set_strict=true set_logical=true make_test get_realpath "ordinary file" "foo/bar1/baz.phys" "foo/bar1/baz.phys"
335 set_strict=true make_test get_realpath "ordinary file" "foo/bar1/baz.phys" "foo/bar1/baz.phys"
336 set_strict=true set_logical=true make_test get_realpath "ordinary file" "foo/bar1/foo->baz.phys" "foo/bar1/foo->baz.phys"
337 set_strict=true make_test get_realpath "ordinary file" "foo/bar1/foo->baz.phys" "foo/bar1/foo->baz.phys"
339 set_strict=true set_logical=true make_test get_dirname "ordinary file" "foo/bar1/baz.phys" "foo/bar1"
340 set_strict=true make_test get_dirname "ordinary file" "foo/bar1/baz.phys" "foo/bar1"
341 set_strict=true set_logical=true make_test get_dirname "ordinary file" "foo/bar1/foo->baz.phys" "foo/bar1"
342 set_strict=true make_test get_dirname "ordinary file" "foo/bar1/foo->baz.phys" "foo/bar1"
344 set_strict=true set_logical=true make_test get_filename "ordinary file" "foo/bar1/baz.phys" "baz.phys"
345 set_strict=true make_test get_filename "ordinary file" "foo/bar1/baz.phys" "baz.phys"
346 set_strict=true set_logical=true make_test get_filename "ordinary file" "foo/bar1/foo->baz.phys" "foo->baz.phys"
347 set_strict=true make_test get_filename "ordinary file" "foo/bar1/foo->baz.phys" "foo->baz.phys"
349 set_strict=true set_logical=true make_test get_stemname "ordinary file" "foo/bar1/baz.phys" "baz"
350 set_strict=true make_test get_stemname "ordinary file" "foo/bar1/baz.phys" "baz"
351 set_strict=true set_logical=true make_test get_stemname "ordinary file" "foo/bar1/foo->baz.phys" "foo->baz"
352 set_strict=true make_test get_stemname "ordinary file" "foo/bar1/foo->baz.phys" "foo->baz"
354 set_strict=true set_logical=true make_test get_extension "ordinary file" "foo/bar1/baz.phys" "phys"
355 set_strict=true make_test get_extension "ordinary file" "foo/bar1/baz.phys" "phys"
356 set_strict=true set_logical=true make_test get_extension "ordinary file" "foo/bar1/foo->baz.phys" "phys"
357 set_strict=true make_test get_extension "ordinary file" "foo/bar1/foo->baz.phys" "phys"
359 echo | $tee_stderr
360 echo "### Circular references, paths from 'foo/' for files that are symlinks ########" | $tee_stderr
362 set_strict=true set_logical=true make_test get_realpath "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
363 set_strict=true make_test get_realpath "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
364 set_strict=true set_logical=true make_test get_realpath "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
365 set_strict=true make_test get_realpath "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
367 set_strict=true set_logical=true make_test get_dirname "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
368 set_strict=true make_test get_dirname "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
369 set_strict=true set_logical=true make_test get_dirname "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
370 set_strict=true make_test get_dirname "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
372 set_strict=true set_logical=true make_test get_filename "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
373 set_strict=true make_test get_filename "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
374 set_strict=true set_logical=true make_test get_filename "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
375 set_strict=true make_test get_filename "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
377 set_strict=true set_logical=true make_test get_stemname "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
378 set_strict=true make_test get_stemname "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
379 set_strict=true set_logical=true make_test get_stemname "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
380 set_strict=true make_test get_stemname "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
382 set_strict=true set_logical=true make_test get_extension "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
383 set_strict=true make_test get_extension "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 1"
384 set_strict=true set_logical=true make_test get_extension "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
385 set_strict=true make_test get_extension "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 1"
387 # Series II : Using 'set_strict=' for all.
389 echo | $tee_stderr
390 echo "===============================================================================" | $tee_stderr
391 echo "= Case II: Testing 'Realpath-Lib' as 'set_strict=' and 'set_logical={|true}' =" | $tee_stderr
392 echo "===============================================================================" | $tee_stderr
393 echo | $tee_stderr
395 # Begin tests
396 echo "### Logical and physical paths from 'foo/' for symlinks that exist ############" | $tee_stderr
398 set_logical=true make_test get_realpath "existing symlink" "foo/bar3/baz.phys" "foo/bar3/baz.phys"
399 make_test get_realpath "existing symlink" "foo/bar3/baz.phys" "foo/bar1/baz.phys"
400 set_logical=true make_test get_realpath "existing symlink" "foo/bar2/foobaz.sym" "foo/bar2/foobaz.sym"
401 make_test get_realpath "existing symlink" "foo/bar2/foobaz.sym" "foo/bar1/foo->baz.phys"
402 set_logical=true make_test get_realpath "existing symlink" "foo/bar2/bazbaz.sym" "foo/bar2/bazbaz.sym"
403 make_test get_realpath "existing symlink" "foo/bar2/bazbaz.sym" "foo/bar1/baz.phys"
405 set_logical=true make_test get_dirname "existing symlink" "foo/bar3/baz.phys" "foo/bar3"
406 make_test get_dirname "existing symlink" "foo/bar3/baz.phys" "foo/bar1"
407 set_logical=true make_test get_dirname "existing symlink" "foo/bar2/foobaz.sym" "foo/bar2"
408 make_test get_dirname "existing symlink" "foo/bar2/foobaz.sym" "foo/bar1"
409 set_logical=true make_test get_dirname "existing symlink" "foo/bar2/bazbaz.sym" "foo/bar2"
410 make_test get_dirname "existing symlink" "foo/bar2/bazbaz.sym" "foo/bar1"
412 set_logical=true make_test get_filename "existing symlink" "foo/bar3/baz.phys" "baz.phys"
413 make_test get_filename "existing symlink" "foo/bar3/baz.phys" "baz.phys"
414 set_logical=true make_test get_filename "existing symlink" "foo/bar2/foobaz.sym" "foobaz.sym"
415 make_test get_filename "existing symlink" "foo/bar2/foobaz.sym" "foo->baz.phys"
416 set_logical=true make_test get_filename "existing symlink" "foo/bar2/bazbaz.sym" "bazbaz.sym"
417 make_test get_filename "existing symlink" "foo/bar2/bazbaz.sym" "baz.phys"
419 set_logical=true make_test get_stemname "existing symlink" "foo/bar3/baz.phys" "baz"
420 make_test get_stemname "existing symlink" "foo/bar3/baz.phys" "baz"
421 set_logical=true make_test get_stemname "existing symlink" "foo/bar2/foobaz.sym" "foobaz"
422 make_test get_stemname "existing symlink" "foo/bar2/foobaz.sym" "foo->baz"
423 set_logical=true make_test get_stemname "existing symlink" "foo/bar2/bazbaz.sym" "bazbaz"
424 make_test get_stemname "existing symlink" "foo/bar2/bazbaz.sym" "baz"
426 set_logical=true make_test get_extension "existing symlink" "foo/bar3/baz.phys" "phys"
427 make_test get_extension "existing symlink" "foo/bar3/baz.phys" "phys"
428 set_logical=true make_test get_extension "existing symlink" "foo/bar2/foobaz.sym" "sym"
429 make_test get_extension "existing symlink" "foo/bar2/foobaz.sym" "phys"
430 set_logical=true make_test get_extension "existing symlink" "foo/bar2/bazbaz.sym" "sym"
431 make_test get_extension "existing symlink" "foo/bar2/bazbaz.sym" "phys"
433 echo | $tee_stderr
434 echo "### Logical and physical paths from 'foo/bar2/' for symlinks that exist #######" | $tee_stderr
436 cd foo/bar2 &>/dev/null
438 set_logical=true make_test get_realpath "existing symlink" "baz.sym" "foo/bar2/baz.sym"
439 make_test get_realpath "existing symlink" "baz.sym" "foo/bar1/baz.phys"
441 set_logical=true make_test get_dirname "existing symlink" "baz.sym" "foo/bar2"
442 make_test get_dirname "existing symlink" "baz.sym" "foo/bar1"
444 set_logical=true make_test get_filename "existing symlink" "baz.sym" "baz.sym"
445 make_test get_filename "existing symlink" "baz.sym" "baz.phys"
447 set_logical=true make_test get_stemname "existing symlink" "baz.sym" "baz"
448 make_test get_stemname "existing symlink" "baz.sym" "baz"
450 set_logical=true make_test get_extension "existing symlink" "baz.sym" "sym"
451 make_test get_extension "existing symlink" "baz.sym" "phys"
453 cd - &>/dev/null
455 echo | $tee_stderr
456 echo "### Logical and physical paths from 'foo/bar3/' for symlinks that exist #######" | $tee_stderr
458 cd foo/bar3 &>/dev/null
460 set_logical=true make_test get_realpath "existing symlink" "baz.phys" "foo/bar3/baz.phys"
461 make_test get_realpath "existing symlink" "baz.phys" "foo/bar1/baz.phys"
462 set_logical=true make_test get_realpath "existing symlink" "foo->baz.phys" "foo/bar3/foo->baz.phys"
463 make_test get_realpath "existing symlink" "foo->baz.phys" "foo/bar1/foo->baz.phys"
465 set_logical=true make_test get_dirname "existing symlink" "baz.phys" "foo/bar3"
466 make_test get_dirname "existing symlink" "baz.phys" "foo/bar1"
467 set_logical=true make_test get_dirname "existing symlink" "foo->baz.phys" "foo/bar3"
468 make_test get_dirname "existing symlink" "foo->baz.phys" "foo/bar1"
470 set_logical=true make_test get_filename "existing symlink" "baz.phys" "baz.phys"
471 make_test get_filename "existing symlink" "baz.phys" "baz.phys"
472 set_logical=true make_test get_filename "existing symlink" "foo->baz.phys" "foo->baz.phys"
473 make_test get_filename "existing symlink" "foo->baz.phys" "foo->baz.phys"
475 set_logical=true make_test get_stemname "existing symlink" "baz.phys" "baz"
476 make_test get_stemname "existing symlink" "baz.phys" "baz"
477 set_logical=true make_test get_stemname "existing symlink" "foo->baz.phys" "foo->baz"
478 make_test get_stemname "existing symlink" "foo->baz.phys" "foo->baz"
480 set_logical=true make_test get_extension "existing symlink" "baz.phys" "phys"
481 make_test get_extension "existing symlink" "baz.phys" "phys"
482 set_logical=true make_test get_extension "existing symlink" "foo->baz.phys" "phys"
483 make_test get_extension "existing symlink" "foo->baz.phys" "phys"
485 cd - &>/dev/null
487 echo | $tee_stderr
488 echo "### Logical and physical paths from 'foo/' for symlinks that do not exist #####" | $tee_stderr
490 set_logical=true make_test get_realpath "non-existant symlink" "foo/bar2/no.foo" "foo/bar2/no.foo"
491 make_test get_realpath "non-existant symlink" "foo/bar2/no.foo" "foo/bar2/no.foo"
493 set_logical=true make_test get_dirname "non-existant symlink" "foo/bar2/no.foo" "foo/bar2"
494 make_test get_dirname "non-existant symlink" "foo/bar2/no.foo" "foo/bar2"
496 set_logical=true make_test get_filename "non-existant symlink" "foo/bar2/no.foo" "no.foo"
497 make_test get_filename "non-existant symlink" "foo/bar2/no.foo" "no.foo"
499 set_logical=true make_test get_stemname "non-existant symlink" "foo/bar2/no.foo" "no"
500 make_test get_stemname "non-existant symlink" "foo/bar2/no.foo" "no"
502 set_logical=true make_test get_extension "non-existant symlink" "foo/bar2/no.foo" "foo"
503 make_test get_extension "non-existant symlink" "foo/bar2/no.foo" "foo"
506 echo | $tee_stderr
507 echo "### Logical and physical paths from 'foo/' for symlinks that are broken #######" | $tee_stderr
509 set_logical=true make_test get_realpath "broken symlink" "foo/bar2/broken.sym" "foo/bar2/broken.sym"
510 make_test get_realpath "broken symlink" "foo/bar2/broken.sym" "foo/bar1/broken.phys"
512 set_logical=true make_test get_dirname "broken symlink" "foo/bar2/broken.sym" "foo/bar2"
513 make_test get_dirname "broken symlink" "foo/bar2/broken.sym" "foo/bar1"
515 set_logical=true make_test get_filename "broken symlink" "foo/bar2/broken.sym" "broken.sym"
516 make_test get_filename "broken symlink" "foo/bar2/broken.sym" "broken.phys"
518 set_logical=true make_test get_stemname "broken symlink" "foo/bar2/broken.sym" "broken"
519 make_test get_stemname "broken symlink" "foo/bar2/broken.sym" "broken"
521 set_logical=true make_test get_extension "broken symlink" "foo/bar2/broken.sym" "sym"
522 make_test get_extension "broken symlink" "foo/bar2/broken.sym" "phys"
524 echo | $tee_stderr
525 echo "### Logical and physical paths from 'foo/' for files that are not symlinks ####" | $tee_stderr
527 set_logical=true make_test get_realpath "ordinary file" "foo/bar1/baz.phys" "foo/bar1/baz.phys"
528 make_test get_realpath "ordinary file" "foo/bar1/baz.phys" "foo/bar1/baz.phys"
529 set_logical=true make_test get_realpath "ordinary file" "foo/bar1/foo->baz.phys" "foo/bar1/foo->baz.phys"
530 make_test get_realpath "ordinary file" "foo/bar1/foo->baz.phys" "foo/bar1/foo->baz.phys"
532 set_logical=true make_test get_dirname "ordinary file" "foo/bar1/baz.phys" "foo/bar1"
533 make_test get_dirname "ordinary file" "foo/bar1/baz.phys" "foo/bar1"
534 set_logical=true make_test get_dirname "ordinary file" "foo/bar1/foo->baz.phys" "foo/bar1"
535 make_test get_dirname "ordinary file" "foo/bar1/foo->baz.phys" "foo/bar1"
537 set_logical=true make_test get_filename "ordinary file" "foo/bar1/baz.phys" "baz.phys"
538 make_test get_filename "ordinary file" "foo/bar1/baz.phys" "baz.phys"
539 set_logical=true make_test get_filename "ordinary file" "foo/bar1/foo->baz.phys" "foo->baz.phys"
540 make_test get_filename "ordinary file" "foo/bar1/foo->baz.phys" "foo->baz.phys"
542 set_logical=true make_test get_stemname "ordinary file" "foo/bar1/baz.phys" "baz"
543 make_test get_stemname "ordinary file" "foo/bar1/baz.phys" "baz"
544 set_logical=true make_test get_stemname "ordinary file" "foo/bar1/foo->baz.phys" "foo->baz"
545 make_test get_stemname "ordinary file" "foo/bar1/foo->baz.phys" "foo->baz"
547 set_logical=true make_test get_extension "ordinary file" "foo/bar1/baz.phys" "phys"
548 make_test get_extension "ordinary file" "foo/bar1/baz.phys" "phys"
549 set_logical=true make_test get_extension "ordinary file" "foo/bar1/foo->baz.phys" "phys"
550 make_test get_extension "ordinary file" "foo/bar1/foo->baz.phys" "phys"
552 echo | $tee_stderr
553 echo "### Circular references, paths from 'foo/' for files that are symlinks ########" | $tee_stderr
555 set_logical=true make_test get_realpath "circular ref" "foo/bar1/foo->bar1.sym" "foo/bar1/foo->bar1.sym"
556 make_test get_realpath "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 6"
557 set_logical=true make_test get_realpath "circular ref" "foo/bar2/foo->bar2.sym" "foo/bar2/foo->bar2.sym"
558 make_test get_realpath "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 6"
560 set_logical=true make_test get_dirname "circular ref" "foo/bar1/foo->bar1.sym" "foo/bar1"
561 make_test get_dirname "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 6"
562 set_logical=true make_test get_dirname "circular ref" "foo/bar2/foo->bar2.sym" "foo/bar2"
563 make_test get_dirname "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 6"
565 set_logical=true make_test get_filename "circular ref" "foo/bar1/foo->bar1.sym" "foo->bar1.sym"
566 make_test get_filename "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 6"
567 set_logical=true make_test get_filename "circular ref" "foo/bar2/foo->bar2.sym" "foo->bar2.sym"
568 make_test get_filename "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 6"
570 set_logical=true make_test get_stemname "circular ref" "foo/bar1/foo->bar1.sym" "foo->bar1"
571 make_test get_stemname "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 6"
572 set_logical=true make_test get_stemname "circular ref" "foo/bar2/foo->bar2.sym" "foo->bar2"
573 make_test get_stemname "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 6"
575 set_logical=true make_test get_extension "circular ref" "foo/bar1/foo->bar1.sym" "sym"
576 make_test get_extension "circular ref" "foo/bar1/foo->bar1.sym" "Error Code 6"
577 set_logical=true make_test get_extension "circular ref" "foo/bar2/foo->bar2.sym" "sym"
578 make_test get_extension "circular ref" "foo/bar2/foo->bar2.sym" "Error Code 6"
580 } 2>> "$stderr_log"
582 } 1>> "$stdout_log"
584 make_footer | tee -a "$stdout_log" >> "$stderr_log"
586 tput clear
587 $file_reader "$stdout_log"
589 tput clear
590 $file_reader "$stderr_log"
592 # end make-generic-test.sh