On Fri, Sep 25, 2026 at 01:03:06AM +0100, Pádraig Brady wrote:
> On 24/09/2026 22:37, Thomas Klausner wrote:
> > >    make TESTS=tests/stat/stat-birthtime.sh SUBDIRS=. check
> > Fails every time.
> > 
> > Manual test:
> > 
> > # touch a || fail=1
> > # btime=$(stat --format %W a) || fail=1
> > # atime=$(stat --format %X a) || fail=1
> > # ctime=$(stat --format %Z a) || fail=1
> > # mtime=$(stat --format %Y a) || fail=1
> > # echo $btime $atime $ctime $mtime
> > 1790285360 1790285360 1790285360 1790285360
> > 
> > (wait a bit)
> > 
> > # touch a || fail=1
> > # btime=$(stat --format %W a) || fail=1
> > # atime=$(stat --format %X a) || fail=1
> > # ctime=$(stat --format %Z a) || fail=1
> > # mtime=$(stat --format %Y a) || fail=1
> > # echo $btime $atime $ctime $mtime
> > 1790285360 1790285451 1790285360 1790285451
> > 
> > So ... mtime changed and it should according to the test?
> 
> They all should change apart from btime,

ctime is 1790285360 in both cases.

> and above they all did, so that would be a pass.
> Since this fails every time, can you add debugging in the test itself?
> 
> Adding VERBOSE=yes to the make invocation may be a quick way to do that.

FAIL: tests/stat/stat-birthtime
===============================

+ initial_cwd_=/tmp/sysutils/coreutils/work/coreutils-9.12
+ testdir_prefix_
+ printf gt
+ pfx_=gt
+ mktempd_ /tmp/sysutils/coreutils/work/coreutils-9.12 gt-stat-birthtime.sh.XXXX
+ destdir_=/tmp/sysutils/coreutils/work/coreutils-9.12
+ template_=gt-stat-birthtime.sh.XXXX
+ MAX_TRIES_=4
+ destdir_slash_=/tmp/sysutils/coreutils/work/coreutils-9.12/
+ unset TMPDIR
+ using redirections: 2>/dev/null do {
+ d=/tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu
+ ':'
+ test -d /tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu
+ ls -dgo /tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu 
2>/dev/null
+ perms='drwx------ 2 0 Sep 25 06:55 
/tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu'
+ ':'
+ echo /tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu
+ return
+ 
test_dir_=/tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu
+ cd /tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu
+ srcdir=../.
+ builddir=..
+ export srcdir builddir
+ gl_init_sh_nl_='
'
+ IFS='         
'
+ for sig_=1
+ expr 1 + 128
+ eval "trap 'Exit 129' 1"
+ trap 'Exit 129' 1
+ for sig_=2
+ expr 2 + 128
+ eval "trap 'Exit 130' 2"
+ trap 'Exit 130' 2
+ for sig_=3
+ expr 3 + 128
+ eval "trap 'Exit 131' 3"
+ trap 'Exit 131' 3
+ for sig_=13
+ expr 13 + 128
+ eval "trap 'Exit 141' 13"
+ trap 'Exit 141' 13
+ for sig_=15
+ expr 15 + 128
+ eval "trap 'Exit 143' 15"
+ trap 'Exit 143' 15
+ saved_IFS='   
'
+ IFS=':'
+ new_PATH=''
+ for dir=/tmp/sysutils/coreutils/work/coreutils-9.12/src
+ IFS='         
'
+ test -d /tmp/sysutils/coreutils/work/coreutils-9.12/src/.
+ new_PATH=/tmp/sysutils/coreutils/work/coreutils-9.12/src
+ for dir=/usr/local/bin
+ IFS='         
'
+ test -d /usr/local/bin/.
+ new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin'
+ for dir=/usr/X11R7/bin
+ IFS='         
'
+ test -d /usr/X11R7/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin'
+ for dir=/bin
+ IFS='         
'
+ test -d /bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin'
+ for dir=/usr/bin
+ IFS='         
'
+ test -d /usr/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin'
+ for dir=/usr/pkg/bin
+ IFS='         
'
+ test -d /usr/pkg/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin'
+ for dir=/usr/local/bin
+ IFS='         
'
+ test -d /usr/local/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin'
+ for dir=/sbin
+ IFS='         
'
+ test -d /sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin'
+ for dir=/usr/sbin
+ IFS='         
'
+ test -d /usr/sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin'
+ for dir=/usr/games
+ IFS='         
'
+ test -d /usr/games/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games'
+ for dir=/sbin
+ IFS='         
'
+ test -d /sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin'
+ for dir=/usr/sbin
+ IFS='         
'
+ test -d /usr/sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin'
+ for dir=/usr/local/bin
+ IFS='         
'
+ test -d /usr/local/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin'
+ for dir=/sbin
+ IFS='         
'
+ test -d /sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin'
+ for dir=/usr/sbin
+ IFS='         
'
+ test -d /usr/sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin'
+ for dir=/usr/local/bin
+ IFS='         
'
+ test -d /usr/local/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin'
+ for dir=/sbin
+ IFS='         
'
+ test -d /sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin'
+ for dir=/usr/sbin
+ IFS='         
'
+ test -d /usr/sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin'
+ for dir=/usr/local/bin
+ IFS='         
'
+ test -d /usr/local/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin'
+ for dir=/sbin
+ IFS='         
'
+ test -d /sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin'
+ for dir=/usr/sbin
+ IFS='         
'
+ test -d /usr/sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin'
+ for dir=/usr/local/bin
+ IFS='         
'
+ test -d /usr/local/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin'
+ for dir=/sbin
+ IFS='         
'
+ test -d /sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin'
+ for dir=/usr/sbin
+ IFS='         
'
+ test -d /usr/sbin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin'
+ for dir=/usr/local/bin
+ IFS='         
'
+ test -d /usr/local/bin/.
+ 
new_PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin'
+ IFS='         
'
+ 
PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin'
+ export PATH
+ trap remove_tmp_ EXIT
+ path_prepend_ ./src
+ test 1 '!=' 0
+ path_dir_=./src
+ abs_path_dir_=/tmp/sysutils/coreutils/work/coreutils-9.12/./src
+ 
PATH='/tmp/sysutils/coreutils/work/coreutils-9.12/./src:/tmp/sysutils/coreutils/work/coreutils-9.12/src:/usr/local/bin:/usr/X11R7/bin:/bin:/usr/bin:/usr/pkg/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/games:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin'
+ create_exe_shims_ /tmp/sysutils/coreutils/work/coreutils-9.12/./src
+ return 0
+ shift
+ test 0 '!=' 0
+ export PATH
+ print_ver_ stat
+ require_built_ stat
+ skip_=no
+ for i=stat
+ test no = yes
+ test yes = yes
+ local i
+ for i=stat
+ env stat --version
stat (GNU coreutils) 9.12
Copyright (C) 2026 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 Michael Meskes.
+ touch a
+ stat --format '%W' a
+ btime=1790319323
+ stat --format '%X' a
+ atime=1790319323
+ stat --format '%Y' a
+ mtime=1790319323
+ stat --format '%Z' a
+ ctime=1790319323
+ retry_delay_ check_timestamps_updated .07 5
+ local test_func=check_timestamps_updated
+ local init_delay=.07
+ local max_n_tries=5
+ shift 3
+ local attempt=1
+ local num_sleeps=1
+ local time_miss
+ test 1 -le 5
+ /usr/bin/awk -v n=1 -v s=.07 'BEGIN { print s * n }'
+ local delay=0.07
+ check_timestamps_updated 0.07
+ local delay=0.07
+ sleep 0.07
+ touch a
+ stat --format '%W' a
+ test x1790319323 = x1790319323
+ stat --format '%X' a
+ test x1790319323 '!=' x1790319323
+ test x1790319323 = x0
+ time_miss=1
+ expr 1 + 1
+ attempt=2
+ expr 1 '*' 2
+ num_sleeps=2
+ test 2 -le 5
+ /usr/bin/awk -v n=2 -v s=.07 'BEGIN { print s * n }'
+ local delay=0.14
+ check_timestamps_updated 0.14
+ local delay=0.14
+ sleep 0.14
+ touch a
+ stat --format '%W' a
+ test x1790319323 = x1790319323
+ stat --format '%X' a
+ test x1790319323 '!=' x1790319323
+ test x1790319323 = x0
+ time_miss=1
+ expr 2 + 1
+ attempt=3
+ expr 2 '*' 2
+ num_sleeps=4
+ test 3 -le 5
+ /usr/bin/awk -v n=4 -v s=.07 'BEGIN { print s * n }'
+ local delay=0.28
+ check_timestamps_updated 0.28
+ local delay=0.28
+ sleep 0.28
+ touch a
+ stat --format '%W' a
+ test x1790319323 = x1790319323
+ stat --format '%X' a
+ test x1790319323 '!=' x1790319323
+ test x1790319323 = x0
+ time_miss=1
+ expr 3 + 1
+ attempt=4
+ expr 4 '*' 2
+ num_sleeps=8
+ test 4 -le 5
+ /usr/bin/awk -v n=8 -v s=.07 'BEGIN { print s * n }'
+ local delay=0.56
+ check_timestamps_updated 0.56
+ local delay=0.56
+ sleep 0.56
+ touch a
+ stat --format '%W' a
+ test x1790319323 = x1790319323
+ stat --format '%X' a
+ test x1790319323 '!=' x1790319324
+ stat --format '%Y' a
+ test x1790319323 '!=' x1790319324
+ stat --format '%Z' a
+ test x1790319323 '!=' x1790319323
+ time_miss=1
+ expr 4 + 1
+ attempt=5
+ expr 8 '*' 2
+ num_sleeps=16
+ test 5 -le 5
+ /usr/bin/awk -v n=16 -v s=.07 'BEGIN { print s * n }'
+ local delay=1.12
+ check_timestamps_updated 1.12
+ local delay=1.12
+ sleep 1.12
+ touch a
+ stat --format '%W' a
+ test x1790319323 = x1790319323
+ stat --format '%X' a
+ test x1790319323 '!=' x1790319325
+ stat --format '%Y' a
+ test x1790319323 '!=' x1790319325
+ stat --format '%Z' a
+ test x1790319323 '!=' x1790319323
+ time_miss=1
+ expr 5 + 1
+ attempt=6
+ expr 16 '*' 2
+ num_sleeps=32
+ test 6 -le 5
+ test 1 = 0
+ fail=1
+ Exit 1
+ set +e
+ exit 1
+ exit 1
+ remove_tmp_
+ __st=1
+ cleanup_
+ ':'
+ test '' = yes
+ cd /tmp/sysutils/coreutils/work/coreutils-9.12
+ chmod -R u+rwx 
/tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu
+ rm -rf /tmp/sysutils/coreutils/work/coreutils-9.12/gt-stat-birthtime.sh.radu 
2>/dev/null
+ exit 1
FAIL tests/stat/stat-birthtime.sh (exit status: 1)

Does that help?
 Thomas



Reply via email to