From: Sylvestre Ledru Date: Sat, 6 Jun 2026 06:11:52 +0000 (+0200) Subject: tests: ls: also check a trailing '/.' dereferences a symlink arg X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8da9f0c8152df73b2192000c9494f4b64cbd9420;p=thirdparty%2Fcoreutils.git tests: ls: also check a trailing '/.' dereferences a symlink arg * tests/ls/symlink-slash.sh: A symlink-to-directory argument written as 'symlink/.' denotes the directory itself, just like a trailing slash, so 'ls -l symlink/.' must list the directory contents rather than show the symlink. See https://github.com/uutils/coreutils/issues/7873 and https://github.com/uutils/coreutils/issues/6467 https://github.com/coreutils/coreutils/pull/280 --- diff --git a/tests/ls/symlink-slash.sh b/tests/ls/symlink-slash.sh index b18d8e9170..b02b4d889f 100755 --- a/tests/ls/symlink-slash.sh +++ b/tests/ls/symlink-slash.sh @@ -1,5 +1,6 @@ #!/bin/sh -# Do dereference a symlink arg if its name is written with a trailing slash. +# Do dereference a symlink arg if its name is written with a trailing +# slash, or with a trailing '/.' (both denote the directory itself). # Copyright (C) 1999-2026 Free Software Foundation, Inc. @@ -27,4 +28,9 @@ set -- $(ls -l symlink/) # Prior to fileutils-4.0k, the following would have output '... symlink -> dir'. test "$*" = 'total 0' && : || fail=1 +# A path ending in '/.' refers to the directory itself, so it must be +# dereferenced and its (empty) contents listed, not the symlink shown. +set -- $(ls -l symlink/.) +test "$*" = 'total 0' && : || fail=1 + Exit $fail