about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--Test/C02cond.ztst36
2 files changed, 14 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index ed2a63b00..4b86371ba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2020-03-11  dana  <dana@dana.is>
 
+	* 45470: Test/C02cond.ztst: Simplify '-N cond' test
+
 	* 45424 (tweaked): Completion/Solaris/Command/_pfexec,
 	Completion/Unix/Command/_doas, Completion/Unix/Command/_su,
 	Completion/Unix/Command/_sudo, Completion/Zsh/Type/_command_names:
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