tests: avoid false failure on systems without statx

* tests/ls/stat-free-symlinks.sh: Filter out syscalls that
return ENOSYS, as that was seen with statx() on Debian 10.13
on mips64, and resulted in overcounting of stat calls.
This commit is contained in:
Pádraig Brady
2023-03-19 23:35:12 +00:00
parent eb745e3b95
commit 445f502839
2 changed files with 6 additions and 4 deletions

View File

@@ -63,8 +63,9 @@ eval $(dircolors -b color-without-stat)
# the invocation under test.
mkdir d || framework_failure_
count_stats() { grep -vE '\+\+\+|ENOSYS|NOTSUP' "$1" | wc -l; }
strace -q -o log1 -e $stats ls -a --color=always d || fail=1
n_stat1=$(grep -vF '+++' log1 | wc -l) || framework_failure_
n_stat1=$(count_stats log1) || framework_failure_
test $n_stat1 = 0 \
&& skip_ 'No stat calls recognized on this platform'
@@ -79,7 +80,7 @@ mkdir d/subdir \
# Invocation under test.
strace -q -o log2 -e $stats ls --color=always d || fail=1
n_stat2=$(grep -vF '+++' log2 | wc -l) || framework_failure_
n_stat2=$(count_stats log2) || framework_failure_
# Expect the same number of stat calls.
test $n_stat1 = $n_stat2 \

View File

@@ -34,9 +34,10 @@ done
# To avoid counting those, first get a baseline count for running
# ls with one empty directory argument. Then, compare that with the
# invocation under test.
count_stats() { grep -vE '\+\+\+|ENOSYS|NOTSUP' "$1" | wc -l; }
mkdir d || framework_failure_
strace -q -o log1 -e $stats ls -F --color=always d || fail=1
n_stat1=$(grep -vF '+++' log1 | wc -l) || framework_failure_
n_stat1=$(count_stats log1) || framework_failure_
test $n_stat1 = 0 \
&& skip_ 'No stat calls recognized on this platform'
@@ -55,7 +56,7 @@ ln -s x link-to-x || framework_failure_
LS_COLORS='or=0:mi=0:ex=01;32:ln=01;35' \
strace -qe $stats -o log2 ls -F --color=always x link-to-x > out.tmp || fail=1
n_stat2=$(grep -vF '+++' log2 | wc -l) || framework_failure_
n_stat2=$(count_stats log2) || framework_failure_
# Expect one more stat call,
# which failed with coreutils 6.9 and earlier, which had 2.