This FP was seen on latest openSUSE - logfile attached.
The patch fixes it.  Okay to push?

Have a nice day,
Berny
>From c7c328c26a73504006f97d38b85b3178382acc0e Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <m...@bernhard-voelker.de>
Date: Wed, 21 Apr 2021 00:12:00 +0200
Subject: [PATCH] tests: fix FP in ls/stat-free-color.sh

It seems that ls(1) calls newfstatat(1, ...) on newer systems - but
only when there is something to output.

* tests/ls/stat-free-color.sh: Create a sample file in order to
get the baseline count correctly.
---
 tests/ls/stat-free-color.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/ls/stat-free-color.sh b/tests/ls/stat-free-color.sh
index 13f41a090..818471b93 100755
--- a/tests/ls/stat-free-color.sh
+++ b/tests/ls/stat-free-color.sh
@@ -57,9 +57,10 @@ eval $(dircolors -b color-without-stat)
 # Furthermore, underlying library functions may also implicitly
 # add an extra stat call, e.g. opendir since glibc-2.21-360-g46f894d.
 # To avoid counting those, first get a baseline count for running
-# ls with one empty directory argument.  Then, compare that with the
+# ls with one file in the test directory.  Then, compare that with the
 # invocation under test.
 mkdir d || framework_failure_
+touch d/file || framework_failure_
 
 strace -q -o log1 -e $stats ls --color=always d || fail=1
 n_stat1=$(grep -vF '+++' log1 | wc -l) || framework_failure_
-- 
2.31.1

++ initial_cwd_=/home/berny/coreutils
+++ testdir_prefix_
+++ printf gt
++ pfx_=gt
+++ mktempd_ /home/berny/coreutils gt-stat-free-color.sh.XXXX
+++ case $# in
+++ destdir_=/home/berny/coreutils
+++ template_=gt-stat-free-color.sh.XXXX
+++ MAX_TRIES_=4
+++ case $destdir_ in
+++ destdir_slash_=/home/berny/coreutils/
+++ case $template_ in
++++ unset TMPDIR
+++ d=/home/berny/coreutils/gt-stat-free-color.sh.TwHh
+++ case $d in
+++ :
+++ test -d /home/berny/coreutils/gt-stat-free-color.sh.TwHh
++++ ls -dgo /home/berny/coreutils/gt-stat-free-color.sh.TwHh
+++ perms='drwx------ 2 4096 Apr 20 23:51 /home/berny/coreutils/gt-stat-free-color.sh.TwHh'
+++ case $perms in
+++ :
+++ echo /home/berny/coreutils/gt-stat-free-color.sh.TwHh
+++ return
++ test_dir_=/home/berny/coreutils/gt-stat-free-color.sh.TwHh
++ cd /home/berny/coreutils/gt-stat-free-color.sh.TwHh
++ case $srcdir in
++ srcdir=../.
++ builddir=..
++ export srcdir builddir
++ gl_init_sh_nl_='
'
++ IFS=' 	
'
++ for sig_ in 1 2 3 13 15
+++ expr 1 + 128
++ eval 'trap '\''Exit 129'\'' 1'
+++ trap 'Exit 129' 1
++ for sig_ in 1 2 3 13 15
+++ expr 2 + 128
++ eval 'trap '\''Exit 130'\'' 2'
+++ trap 'Exit 130' 2
++ for sig_ in 1 2 3 13 15
+++ expr 3 + 128
++ eval 'trap '\''Exit 131'\'' 3'
+++ trap 'Exit 131' 3
++ for sig_ in 1 2 3 13 15
+++ expr 13 + 128
++ eval 'trap '\''Exit 141'\'' 13'
+++ trap 'Exit 141' 13
++ for sig_ in 1 2 3 13 15
+++ expr 15 + 128
++ eval 'trap '\''Exit 143'\'' 15'
+++ trap 'Exit 143' 15
++ trap remove_tmp_ 0
+ path_prepend_ ./src
+ test 1 '!=' 0
+ path_dir_=./src
+ case $path_dir_ in
+ abs_path_dir_=/home/berny/coreutils/./src
+ case $abs_path_dir_ in
+ PATH=/home/berny/coreutils/./src:/home/berny/coreutils/src:/home/berny/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin
+ create_exe_shims_ /home/berny/coreutils/./src
+ case $EXEEXT in
+ return 0
+ shift
+ test 0 '!=' 0
+ export PATH
+ print_ver_ ls
+ require_built_ ls
+ skip_=no
+ for i in "$@"
+ case " $built_programs " in
+ test no = yes
+ test yes = yes
+ local i
+ for i in $*
+ env ls --version
ls (GNU coreutils) 8.32.133-e3766
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Richard M. Stallman and David MacKenzie.
+ require_strace_ stat
+ test 1 = 1
+ strace -V
+ strace -qe stat echo
+ strace -o log-help ls --help
++ wc -l
+ n_lines_help=594
+ rm -f log-help
+ test 594 = 0
+ test 594 = 1
+ require_dirent_d_type_
+ python
+ python /home/berny/coreutils/tests/d_type-check
+ stats=stat
+ other_stats='statx lstat stat64 lstat64 newfstatat fstatat64'
+ for stat in $other_stats
+ strace -qe statx true
+ stats=stat,statx
+ for stat in $other_stats
+ strace -qe lstat true
+ stats=stat,statx,lstat
+ for stat in $other_stats
+ strace -qe stat64 true
+ stats=stat,statx,lstat,stat64
+ for stat in $other_stats
+ strace -qe lstat64 true
+ stats=stat,statx,lstat,stat64,lstat64
+ for stat in $other_stats
+ strace -qe newfstatat true
+ stats=stat,statx,lstat,stat64,lstat64,newfstatat
+ for stat in $other_stats
+ strace -qe fstatat64 true
+ stats=stat,statx,lstat,stat64,lstat64,newfstatat,fstatat64
+ cat
++ dircolors -b color-without-stat
+ eval 'LS_COLORS='\''rs=0:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=00:su=00:sg=00:ca=00:tw=00:ow=00:st=00:ex=00:mh=00:'\'';' export LS_COLORS
++ LS_COLORS='rs=0:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=00:su=00:sg=00:ca=00:tw=00:ow=00:st=00:ex=00:mh=00:'
++ export LS_COLORS
+ mkdir d
+ strace -q -o log1 -e stat,statx,lstat,stat64,lstat64,newfstatat,fstatat64 ls --color=always d
++ grep -vF +++ log1
++ wc -l
+ n_stat1=9
+ test 9 = 0
+ mkdir d/subdir
+ touch d/regf
+ ln d/regf d/hlink
+ ln -s regf d/slink
+ ln -s nowhere d/dangle
+ strace -q -o log2 -e stat,statx,lstat,stat64,lstat64,newfstatat,fstatat64 ls --color=always d
dangle
hlink
regf
slink
subdir
++ grep -vF +++ log2
++ wc -l
+ n_stat2=10
+ test 9 = 10
+ fail=1
+ head -n30 log1 log2
==> log1 <==
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=99592, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=168040, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=39560, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=2109768, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=727472, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=26208, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
statx(AT_FDCWD, "d", AT_STATX_SYNC_AS_STAT, STATX_MODE, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
newfstatat(3, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
+++ exited with 0 +++

==> log2 <==
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=99592, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=168040, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=39560, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=2109768, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=727472, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=26208, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
statx(AT_FDCWD, "d", AT_STATX_SYNC_AS_STAT, STATX_MODE, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
newfstatat(3, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
newfstatat(1, "", {st_mode=S_IFREG|0644, st_size=4006, ...}, AT_EMPTY_PATH) = 0
+++ exited with 0 +++
+ Exit 1
+ set +e
+ exit 1
+ exit 1
+ remove_tmp_
+ __st=1
+ cleanup_
+ :
+ test '' = yes
+ cd /home/berny/coreutils
+ chmod -R u+rwx /home/berny/coreutils/gt-stat-free-color.sh.TwHh
+ rm -rf /home/berny/coreutils/gt-stat-free-color.sh.TwHh
+ exit 1
FAIL tests/ls/stat-free-color.sh (exit status: 1)

Reply via email to