diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Test/C02cond.ztst | 38 |
2 files changed, 32 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog index 1711a5087..af0d54b2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2015-03-20 Peter Stephenson <p.stephenson@samsung.com> + * 34753 / 34754: Test/C02cond.ztst: work around lack + of separate file times with NFS. + * 34752: Src/input.c: history expansion in command substitution *still* didn't work although the command put back into the history was correct. diff --git a/Test/C02cond.ztst b/Test/C02cond.ztst index 69001476c..6581b9d6b 100644 --- a/Test/C02cond.ztst +++ b/Test/C02cond.ztst @@ -8,11 +8,28 @@ cd cond.tmp - touch unmodified + typeset -gi isnfs + [[ "$(find . -prune -fstype nfs 2>/dev/null)" == "." ]] && isnfs=1 + if (( isnfs )) && + (cd -q ${TMPPREFIX:h} >/dev/null 2>&1 && + [[ "$(find . -prune -fstype nfs 2>/dev/null)" != "." ]]); then + filetmpprefix=${TMPPREFIX}-$$- + isnfs=0 + else + filetmpprefix= + fi + newnewnew=${filetmpprefix}newnewnew + unmodified=${filetmpprefix}unmodified + zlnfs=${filetmpprefix}zlnfs + + touch $unmodified touch zerolength chgrp $EGID zerolength + touch $zlnfs + chgrp $EGID $zlnfs + print 'Garbuglio' >nonzerolength mkdir modish @@ -131,19 +148,19 @@ print -u $ZTST_fd 'This test takes two seconds...' sleep 2 - cat unmodified - touch newnewnew + cat $unmodified + touch $newnewnew if [[ $OSTYPE == "cygwin" ]]; then print -u$ZTST_fd "Warning: not testing [[ -N file ]] (not supported on Cygwin)" true - elif [[ "$(find . -prune -fstype nfs 2>/dev/null)" == "." ]]; then + elif (( isnfs )); then print -u$ZTST_fd "Warning: not testing [[ -N file ]] (not supported with NFS)" true elif test -f /etc/mtab && { grep $(df . 2>/dev/null| tail -n1 | awk '{print $1}') /etc/mtab | grep -q noatime; }; then print -u$ZTST_fd "Warning: not testing [[ -N file ]] (not supported with noatime file system)" true else - [[ -N newnewnew && ! -N unmodified ]] + [[ -N $newnewnew && ! -N $unmodified ]] fi 0:-N cond F:This test can fail on NFS-mounted filesystems as the access and @@ -153,10 +170,10 @@ 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. - [[ newnewnew -nt zerolength && ! (unmodified -nt zerolength) ]] + [[ $newnewnew -nt $zlnfs && ! ($unmodified -nt $zlnfs) ]] 0:-nt cond - [[ zerolength -ot newnewnew && ! (zerolength -ot unmodified) ]] + [[ $zlnfs -ot $newnewnew && ! ($zlnfs -ot $unmodified) ]] 0:-ot cond [[ link -ef zerolength && ! (link -ef nonzerolength) ]] @@ -234,8 +251,8 @@ F:Failures in these cases do not indicate a problem in the shell. fn() { # careful: first file must exist to trigger bug - [[ -e unmodified ]] || print Where\'s my file\? - [[ unmodified -nt NonExistentFile ]] + [[ -e $unmodified ]] || print Where\'s my file\? + [[ $unmodified -nt NonExistentFile ]] print status = $? } fn @@ -360,3 +377,6 @@ F:Failures in these cases do not indicate a problem in the shell. %clean # This works around a bug in rm -f in some versions of Cygwin chmod 644 unmodish + for tmpfile in $newnewnew $unmodified $zlnfs; do + [[ -f $tmpfile ]] && rm -f $tmpfile + done |