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:
16 # │ ├── foo->bar1.sym -> ../bar2/foo->bar2.sym
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
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
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
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"
63 # check _dependencies : confirm that dependencies are installed.
64 function check_dependencies
(){
74 echo "One or more dependencies cannot be found, throwing exit condition ..."
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)"
87 # make_footer : produces file foolter for results of tests.
88 function make_footer
(){
91 if (( $failcntr )); then
92 if (( $failcntr > 1 )); then
93 _failed
="THERE ARE ($failcntr) FAILURES."
95 _failed
="THERE IS ONE (1) FAILURE."
97 echo "SUMMARY OF RESULTS: OF ($totalcntr) TESTS PERFORMED, $_failed"
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..."
114 echo 'test file' > foo
/bar
1/baz.phys
115 echo 'test file' > foo
/bar
1/foo-\
>baz.phys
116 ln -s ..
/bar
1/baz.phys foo
/bar
2/baz.sym
117 ln -s baz.sym foo
/bar
2/bazbaz.sym
118 ln -s ..
/bar
1/foo-\
>bar1.sym foo
/bar
2/foo-\
>bar2.sym
# circular
119 ln -s ..
/bar
2/foo-\
>bar2.sym foo
/bar
1/foo-\
>bar1.sym
# circular
120 ln -s ..
/bar
1/broken.phys foo
/bar
2/broken.sym
121 ln -s ..
/bar
1/foo-\
>baz.phys foo
/bar
2/foobaz.sym
123 echo "Could not create test directories, throwing exit condition..."
127 echo "Directory 'foo' already exists, proceeding..."
131 # make_test "function" "message" "path" "expected"
132 function make_test
() {
138 local _specified
="$_expected"
139 local _exit_status
=''
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"
148 _expected
="$pwd_phys/$_expected"
154 _result
="$($_function "$_path")"
156 (( $_exit_status )) && _result
="$(printf 'Error Code %s' "$_exit_status")"
159 _printf
="$(printf 'Try %-14s %-37s set_logical=%-4s ' "$_function" "$_message $_path" "$set_logical")"
160 if [[ "$_result" != "$_expected" ]]; then
162 echo "--> specified \"$_specified\" but got \"$_result\""
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.
196 # Series I: Using 'set_strict=true' for all.
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
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"
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"
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"
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"
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"
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"
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.
390 echo "===============================================================================" |
$tee_stderr
391 echo "= Case II: Testing 'Realpath-Lib' as 'set_strict=' and 'set_logical={|true}' =" |
$tee_stderr
392 echo "===============================================================================" |
$tee_stderr
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"
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"
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"
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"
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"
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"
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"
584 make_footer |
tee -a "$stdout_log" >> "$stderr_log"
587 $file_reader "$stdout_log"
590 $file_reader "$stderr_log"
592 # end make-generic-test.sh