summaryrefslogtreecommitdiff
path: root/tests/misc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/misc')
-rwxr-xr-xtests/misc/stat-birthtime30
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