Pádraig Brady wrote: > Note the above test fits the pattern of "requiring a delay to pass" > and so can use the retry_delay_ functionality used elsewhere. > The advantage is that the delay is 1s rather than 2 on > 1s resolution file systems like ext3.
Oh! Glad you remembered that. I should have, too. You're welcome to push that. I'll make a pre-release snapshot tomorrow or Wednesday. > diff --git a/tests/misc/stat-birthtime b/tests/misc/stat-birthtime > index 4490ee8..e584df0 100755 > --- a/tests/misc/stat-birthtime > +++ b/tests/misc/stat-birthtime > @@ -27,15 +27,25 @@ atime=$(stat --format %X a) || fail=1 > mtime=$(stat --format %Y a) || fail=1 > ctime=$(stat --format %Z a) || fail=1 > > -case $(stat --format %x a) in > - *.000000000*) sleep 2;; # worst case file system is FAT > - *) sleep .02;; # should be adequate for any system with subsecond > resolution > -esac > - > -touch a || fail=1 > -test "x$btime" = x$(stat --format %W a) || fail=1 > -test "x$atime" != x$(stat --format %X a) || fail=1 > -test "x$mtime" != x$(stat --format %Y a) || fail=1 > -test "x$ctime" != x$(stat --format %Z a) || fail=1 > +# Wait up to 2.17s for timestamps to change. > +# ---------------------------------------- > +# iterations file system resolution e.g. > +# ---------------------------------------- > +# 1 nano or micro second ext4 > +# 4 1 second ext3 > +# 5 2 second FAT > +# ---------------------------------------- > +check_timestamps_updated() > +{ > + local delay="$1" > + sleep $delay > + touch a || fail=1 > + > + test "x$btime" = x$(stat --format %W a) && > + test "x$atime" != x$(stat --format %X a) && > + test "x$mtime" != x$(stat --format %Y a) && > + test "x$ctime" != x$(stat --format %Z a) > +} > +retry_delay_ check_timestamps_updated .07 5 || fail=1