diff options
-rw-r--r-- | Test/C02cond.ztst | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/Test/C02cond.ztst b/Test/C02cond.ztst new file mode 100644 index 000000000..ee502d303 --- /dev/null +++ b/Test/C02cond.ztst @@ -0,0 +1,151 @@ +# Tests corresponding to the texinfo node `Conditional Expressions' + +%prep + + umask 077 + + mkdir cond.tmp + + cd cond.tmp + + touch unmodified + + touch zerolength + chgrp $EGID zerolength + print 'Garbuglio' >nonzerolength + + mkdir modish + chmod g+xs modish + chmod u+s modish + chmod +t modish + + touch unmodish + chmod 000 unmodish +%test + + [[ -a zerolength && ! -a nonexistent ]] +0:-a cond + + # Find a block special file system. This is a little tricky. + block=$(find /dev /devices -type b -print 2>/dev/null|head -1) && + [[ -b $block && ! -b zerolength ]] +0:-b cond + + char=(/dev/tty*([1])) + [[ -c $char && ! -c $block ]] +0:-c cond + + [[ -d . && ! -d zerolength ]] +0:-d cond + + [[ -e zerolength && ! -e nonexistent ]] +0:-e cond + + [[ -f zerolength && ! -f cond && ! -f $char && ! -f $block && ! -f . ]] +0:-f cond + + [[ -g modish && ! -g zerolength ]] +0:-g cond + + ln -s zerolength link + [[ -h link && ! -h zerolength ]] +0:-h cond + + [[ -k modish && ! -k zerolength ]] +0:-k cond + + foo=foo + bar= + [[ -n $foo && ! -n $bar && ! -n '' ]] +0:-n cond + + [[ -o rcs && ! -o norcs && -o noerrexit && ! -o errexit ]] +0:-o cond + + if whence mkfifo >/dev/null; then + mkfifo pipe + else + mknod pipe p + fi + [[ -p pipe && ! -p zerolength ]] +0:-p cond + + [[ -r zerolength && ! -r unmodish ]] +0:-r cond + + [[ -s nonzerolength && ! -s zerolength ]] +0:-s cond + +# no simple way of guaranteeing test for -t + + [[ -u modish && ! -u zerolength ]] +0:-u cond + + [[ -x $ZTST_srcdir/ztst.zsh && ! -x zerolength ]] +0:-x cond + + [[ -z $bar && -z '' && ! -z $foo ]] +0:-z cond + + [[ -L link && ! -L zerolength ]] +0:-L cond + +# hard to guarantee a file not owned by current uid + [[ -O zerolength ]] +0:-O cond + + [[ -G zerolength ]] +0:-G cond + +# can't be bothered with -S + + sleep 1 + cat unmodified + touch newnewnew + [[ -N newnewnew && ! -N unmodified ]] +0:-N cond + + [[ newnewnew -nt zerolength && ! (unmodified -nt zerolength) ]] +0:-nt cond + + [[ zerolength -ot newnewnew && ! (zerolength -ot unmodified) ]] +0:-ot cond + + [[ link -ef zerolength && ! (link -ef nonzerolength) ]] +0:-ef cond + + [[ foo = foo && foo != bar && foo == foo && foo != '' ]] +0:=, == and != conds + + [[ bar < foo && foo > bar ]] +0:< and > conds + + [[ $(( 3 + 4 )) -eq 0x07 && $(( 5 * 2 )) -ne 0x10 ]] +0:-eq and -ne conds + + [[ 3 -lt 04 && 05 -gt 2 ]] +0:-lt and -gt conds + + [[ 3 -le 3 && ! (4 -le 3) ]] +0:-le cond + + [[ 3 -ge 3 && ! (3 -ge 4) ]] +0:-ge cond + + [[ 1 -lt 2 || 2 -lt 2 && 3 -gt 4 ]] +0:|| and && in conds + + [[ -e /dev/fd/0 ]] +0:/dev/fd support in conds handled by access + + [[ -O /dev/fd/0 ]] +0:/dev/fd support in conds handled by stat + + [[ ( -z foo && -z foo ) || -z foo ]] +1:complex conds with skipping + + [ '' != bar -a '' = '' ] +0:strings with `[' builtin + + [ `echo 0` -lt `echo 1` ] +0:substituion in `[' builtin |