diff options
Diffstat (limited to 'tests/misc')
-rwxr-xr-x | tests/misc/stat-birthtime | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/tests/misc/stat-birthtime b/tests/misc/stat-birthtime index 4490ee808..e584df02a 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 Exit $fail |