68 lines
2.9 KiB
Diff
68 lines
2.9 KiB
Diff
|
|
From 80ddc46e54f6116235e68d3fc039ef775e72d1c5 Mon Sep 17 00:00:00 2001
|
||
|
|
From: dana <dana@dana.is>
|
||
|
|
Date: Wed, 11 Mar 2020 21:17:12 -0500
|
||
|
|
Subject: [PATCH] 45470: C02cond: Simplify '-N cond' test
|
||
|
|
|
||
|
|
This fixes an (intermittent?) issue with the test on macOS+APFS, and hopefully
|
||
|
|
makes it simpler and faster in general
|
||
|
|
---
|
||
|
|
Test/C02cond.ztst | 36 ++++++++++++------------------------
|
||
|
|
1 files changed, 12 insertions(+), 24 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/Test/C02cond.ztst b/Test/C02cond.ztst
|
||
|
|
index 4b1ec02f0..5b105b2a0 100644
|
||
|
|
--- a/Test/C02cond.ztst
|
||
|
|
+++ b/Test/C02cond.ztst
|
||
|
|
@@ -146,39 +146,27 @@
|
||
|
|
|
||
|
|
# can't be bothered with -S
|
||
|
|
|
||
|
|
- if [[ ${mtab::="$({mount || /sbin/mount || /usr/sbin/mount} 2>/dev/null)"} = *[(]?*[)] ]]; then
|
||
|
|
- print -u $ZTST_fd 'This test takes two seconds...'
|
||
|
|
- else
|
||
|
|
- unmodified_ls="$(ls -lu $unmodified)"
|
||
|
|
- print -u $ZTST_fd 'This test takes up to 60 seconds...'
|
||
|
|
- fi
|
||
|
|
- sleep 2
|
||
|
|
+ print -ru $ZTST_fd 'This test may take two seconds...'
|
||
|
|
touch $newnewnew
|
||
|
|
if [[ $OSTYPE == "cygwin" ]]; then
|
||
|
|
ZTST_skip="[[ -N file ]] not supported on Cygwin"
|
||
|
|
elif (( isnfs )); then
|
||
|
|
ZTST_skip="[[ -N file ]] not supported with NFS"
|
||
|
|
- elif { (( ! $+unmodified_ls )) &&
|
||
|
|
- cat $unmodified &&
|
||
|
|
- { df -k -- ${$(print -r -- "$mtab" |
|
||
|
|
- awk '/noatime/ {print $1,$3}'):-""} | tr -s ' ' |
|
||
|
|
- fgrep -- "$(df -k . | tail -1 | tr -s ' ')" } >&/dev/null } ||
|
||
|
|
- { (( $+unmodified_ls )) && SECONDS=0 &&
|
||
|
|
- ! until (( SECONDS >= 58 )); do
|
||
|
|
- ZTST_hashmark; sleep 2; cat $unmodified
|
||
|
|
- [[ $unmodified_ls != "$(ls -lu $unmodified)" ]] && break
|
||
|
|
- done }; then
|
||
|
|
- ZTST_skip="[[ -N file ]] not supported with noatime file system"
|
||
|
|
+ elif ! zmodload -F zsh/stat b:zstat 2> /dev/null; then
|
||
|
|
+ ZTST_skip='[[ -N file ]] not tested; zsh/stat not available'
|
||
|
|
+ elif ! { sleep 2; touch -a $unmodified 2> /dev/null }; then
|
||
|
|
+ ZTST_skip='[[ -N file ]] not tested; touch failed'
|
||
|
|
+ elif [[ "$(zstat +atime $unmodified)" == "$(zstat +mtime $unmodified)" ]]; then
|
||
|
|
+ ZTST_skip='[[ -N file ]] not supported on this file system'
|
||
|
|
else
|
||
|
|
[[ -N $newnewnew && ! -N $unmodified ]]
|
||
|
|
fi
|
||
|
|
0:-N cond
|
||
|
|
-F:This test can fail on NFS-mounted filesystems as the access and
|
||
|
|
-F:modification times are not updated separately. The test will fail
|
||
|
|
-F:on HFS+ (Apple Mac OS X default) filesystems because access times
|
||
|
|
-F:are not recorded. Also, Linux ext3 filesystems may be mounted
|
||
|
|
-F:with the noatime option which does not update access times.
|
||
|
|
-F:Failures in these cases do not indicate a problem in the shell.
|
||
|
|
+F:This test relies on the file system supporting atime updates. It
|
||
|
|
+F:should automatically detect whether this is the case, and skip
|
||
|
|
+F:without failing if it isn't, but it's possible that some
|
||
|
|
+F:configurations may elude this detection. Please report this
|
||
|
|
+F:scenario if you encounter it.
|
||
|
|
|
||
|
|
[[ $newnewnew -nt $zlnfs && ! ($unmodified -nt $zlnfs) ]]
|
||
|
|
0:-nt cond
|