diff options
author | dana <dana@dana.is> | 2020-03-11 21:17:12 -0500 |
---|---|---|
committer | dana <dana@dana.is> | 2020-03-11 21:17:12 -0500 |
commit | 80ddc46e54f6116235e68d3fc039ef775e72d1c5 (patch) | |
tree | b755dc66b62e4caf67ba6feaff0bce54dd6d7c32 | |
parent | 359e0dae2bded75eebf7fe3b3cf919e1dd44c333 (diff) | |
download | zsh-80ddc46e54f6116235e68d3fc039ef775e72d1c5.tar.gz zsh-80ddc46e54f6116235e68d3fc039ef775e72d1c5.tar.xz zsh-80ddc46e54f6116235e68d3fc039ef775e72d1c5.zip |
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
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | Test/C02cond.ztst | 36 |
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 |