| if (( $UID == 0 )); then |
| echo "test-tests: the test suite should not be run as root" >&2 |
| fi |
| |
| b() |
| { |
| [ "$@" ] |
| echo $? |
| } |
| |
| t() |
| { |
| test "$@" |
| echo $? |
| } |
| |
| echo 't -a noexist' |
| t -a noexist |
| echo 't -a run-all' |
| t -a run-all |
| |
| echo 't -b run-all' |
| t -b run-all |
| echo 't -b /dev/jb1a' |
| t -b /dev/jb1a |
| |
| echo 't -c run-all' |
| t -c run-all |
| echo 't -c /dev/tty' |
| t -c /dev/tty |
| |
| echo 't -d run-all' |
| t -d run-all |
| echo 't -d /etc' |
| t -d /etc |
| echo 't -d ""' |
| t -d "" |
| echo 'b -d ""' |
| b -d "" |
| |
| echo 't -e noexist' |
| t -e noexist |
| echo 't -e run-all' |
| t -e run-all |
| |
| echo 't -f noexist' |
| t -f noexist |
| echo 't -f /dev/tty' |
| t -f /dev/tty |
| echo 't -f run-all' |
| t -f run-all |
| |
| echo 't -g run-all' |
| t -g run-all |
| |
| touch /tmp/test.setgid |
| chgrp ${GROUPS[0]} /tmp/test.setgid |
| chmod ug+x /tmp/test.setgid |
| chmod g+s /tmp/test.setgid |
| echo 't -g /tmp/test.setgid' |
| t -g /tmp/test.setgid |
| rm -f /tmp/test.setgid |
| |
| echo 't -k run-all' |
| t -k run-all |
| |
| echo 't -n ""' |
| t -n "" |
| echo 't -n "hello"' |
| t -n "hello" |
| |
| echo 't -p run-all' |
| t -p run-all |
| |
| echo 't -r noexist' |
| t -r noexist |
| |
| if (( $UID != 0 )); then |
| touch /tmp/test.noread |
| chmod a-r /tmp/test.noread |
| echo 't -r /tmp/test.noread' |
| t -r /tmp/test.noread |
| rm -f /tmp/test.noread |
| else |
| echo 't -r /tmp/test.noread' |
| echo 1 |
| fi |
| |
| echo 't -r run-all' |
| t -r run-all |
| |
| echo 't -s noexist' |
| t -s noexist |
| echo 't -s /dev/null' |
| t -s /dev/null |
| echo 't -s run-all' |
| t -s run-all |
| |
| echo 't -t 20' |
| t -t 20 |
| echo 't -t 0' |
| t -t 0 < /dev/tty |
| |
| echo 't -u noexist' |
| t -u noexist |
| |
| echo 't -u run-all' |
| t -u run-all |
| |
| touch /tmp/test.setuid |
| chmod u+x /tmp/test.setuid # some systems require this to turn on setuid bit |
| chmod u+s /tmp/test.setuid |
| echo 't -u /tmp/test.setuid' |
| t -u /tmp/test.setuid |
| rm -f /tmp/test.setuid |
| |
| echo 't -w noexist' |
| t -w noexist |
| |
| if (( $UID != 0 )); then |
| touch /tmp/test.nowrite |
| chmod a-w /tmp/test.nowrite |
| echo 't -w /tmp/test.nowrite' |
| t -w /tmp/test.nowrite |
| rm -f /tmp/test.nowrite |
| else |
| echo 't -w /tmp/test.nowrite' |
| echo 1 |
| fi |
| |
| echo 't -w /dev/null' |
| t -w /dev/null |
| |
| echo 't -x noexist' |
| t -x noexist |
| |
| touch /tmp/test.exec |
| chmod u+x /tmp/test.exec |
| echo 't -x /tmp/test.exec' |
| t -x /tmp/test.exec |
| rm -f /tmp/test.exec |
| |
| touch /tmp/test.noexec |
| chmod u-x /tmp/test.noexec |
| echo 't -x /tmp/test.noexec' |
| t -x /tmp/test.noexec |
| rm -f /tmp/test.noexec |
| |
| echo 't -z ""' |
| t -z "" |
| echo 't -z "foo"' |
| t -z "foo" |
| |
| echo 't "foo"' |
| t "foo" |
| echo 't ""' |
| t "" |
| |
| touch /tmp/test.owner |
| echo 't -O /tmp/test.owner' |
| t -O /tmp/test.owner |
| rm -f /tmp/test.owner |
| |
| touch /tmp/test.socket |
| echo 't -S /tmp/test.socket' |
| t -S /tmp/test.socket # false |
| rm -f /tmp/test.socket |
| |
| touch /tmp/test.newer |
| echo 't -N /tmp/test.newer' |
| t -N /tmp/test.newer |
| rm -f /tmp/test.newer |
| |
| echo 't "hello" = "hello"' |
| t "hello" = "hello" |
| echo 't "hello" = "goodbye"' |
| t "hello" = "goodbye" |
| |
| echo 't "hello" == "hello"' |
| t "hello" == "hello" |
| echo 't "hello" == "goodbye"' |
| t "hello" == "goodbye" |
| |
| echo 't "hello" != "hello"' |
| t "hello" != "hello" |
| echo 't "hello" != "goodbye"' |
| t "hello" != "goodbye" |
| |
| echo 't "hello" < "goodbye"' |
| t "hello" \< "goodbye" |
| echo 't "hello" > "goodbye"' |
| t "hello" \> "goodbye" |
| |
| echo 't ! "hello" > "goodbye"' |
| t "! hello" \> "goodbye" |
| |
| echo 't 200 -eq 200' |
| t 200 -eq 200 |
| echo 't 34 -eq 222' |
| t 34 -eq 222 |
| echo 't -32 -eq 32' |
| t -32 -eq 32 |
| |
| echo 't 200 -ne 200' |
| t 200 -ne 200 |
| echo 't 34 -ne 222' |
| t 34 -ne 222 |
| |
| echo 't 200 -gt 200' |
| t 200 -gt 200 |
| echo 't 340 -gt 222' |
| t 340 -gt 222 |
| |
| echo 't 200 -ge 200' |
| t 200 -ge 200 |
| echo 't 34 -ge 222' |
| t 34 -ge 222 |
| |
| echo 't 200 -lt 200' |
| t 200 -lt 200 |
| echo 't 34 -lt 222' |
| t 34 -lt 222 |
| |
| echo 't 200 -le 200' |
| t 200 -le 200 |
| echo 't 340 -le 222' |
| t 340 -le 222 |
| |
| echo 't 700 -le 1000 -a -n "1" -a "20" = "20"' |
| t 700 -le 1000 -a -n "1" -a "20" = "20" |
| echo 't ! \( 700 -le 1000 -a -n "1" -a "20" = "20" \)' |
| t ! \( 700 -le 1000 -a -n "1" -a "20" = "20" \) |
| |
| touch /tmp/abc |
| sleep 2 |
| touch /tmp/def |
| |
| echo 't /tmp/abc -nt /tmp/def' |
| t /tmp/abc -nt /tmp/def |
| echo 't /tmp/abc -ot /tmp/def' |
| t /tmp/abc -ot /tmp/def |
| echo 't /tmp/def -nt /tmp/abc' |
| t /tmp/def -nt /tmp/abc |
| echo 't /tmp/def -ot /tmp/abc' |
| t /tmp/def -ot /tmp/abc |
| |
| echo 't /tmp/abc -ef /tmp/def' |
| t /tmp/abc -ef /tmp/def |
| ln /tmp/abc /tmp/ghi |
| echo 't /tmp/abc -ef /tmp/ghi' |
| t /tmp/abc -ef /tmp/ghi |
| |
| rm /tmp/abc /tmp/def /tmp/ghi |
| |
| echo 't -r /dev/fd/0' |
| t -r /dev/fd/0 |
| echo 't -w /dev/fd/1' |
| t -w /dev/fd/1 |
| echo 't -w /dev/fd/2' |
| t -w /dev/fd/2 |
| |
| echo 't -r /dev/stdin' |
| t -r /dev/stdin |
| echo 't -w /dev/stdout' |
| t -w /dev/stdout |
| echo 't -w /dev/stderr' |
| t -w /dev/stderr |
| |
| echo 't' |
| t |
| echo 'b' |
| b |
| |
| echo 't 12 -eq 34' |
| t 12 -eq 34 |
| echo 't ! 12 -eq 34' |
| t ! 12 -eq 34 |
| |
| echo 't -n abcd -o aaa' |
| t -n abcd -o aaa |
| echo 't -n abcd -o -z aaa' |
| t -n abcd -o -z aaa |
| |
| echo 't -n abcd -a aaa' |
| t -n abcd -a aaa |
| echo 't -n abcd -a -z aaa' |
| t -n abcd -a -z aaa |
| |
| # test set or unset shell options |
| set +o allexport |
| echo 't -o allexport' |
| t -o allexport |
| echo 't ! -o allexport' |
| t ! -o allexport |
| |
| #test set or unset shell variables |
| unset unset |
| echo 't -v unset' |
| t -v unset |
| set= |
| echo 't -v set' |
| t -v set |
| set=set |
| echo 't -v set' |
| t -v set |
| |
| echo 't xx -a yy' |
| t xx -a yy |
| echo 't xx -o ""' |
| t xx -o "" |
| echo 't xx -a ""' |
| t xx -a "" |
| |
| echo 't -X -a -X' |
| t -X -a -X |
| echo 't -X -o -X' |
| t -X -o -X |
| echo 't -X -o ""' |
| t -X -o "" |
| echo 't -X -a ""' |
| t -X -a "" |
| echo 't "" -a -X' |
| t "" -a -X |
| echo 't "" -o -X' |
| t "" -o -X |
| echo 't "" -a ""' |
| t "" -a "" |
| echo 't "" -o ""' |
| t "" -o "" |
| echo 't true -o -X' |
| t true -o -X |
| echo 't true -a -X' |
| t true -a -X |
| |
| echo 't ( -E )' |
| t \( -E \) |
| echo 't ( "" )' |
| t \( "" \) |
| |
| z=42 |
| |
| echo 't ! -z "$z"' |
| t ! -z "$z" |
| |
| echo 't ! -n "$z"' |
| t ! -n "$z" |
| |
| zero= |
| echo 't "$zero"' |
| t "$zero" |
| echo 't ! "$zero"' |
| t ! "$zero" |
| echo 'b "$zero"' |
| b "$zero" |
| echo 'b ! "$zero"' |
| b ! "$zero" |
| |
| touch /tmp/test.group |
| chgrp ${GROUPS[0]} /tmp/test.group |
| echo 't -G /tmp/test.group' |
| t -G /tmp/test.group |
| rm /tmp/test.group |
| |
| case "${THIS_SH}" in |
| /*) SHNAME=${THIS_SH} ;; |
| *) SHNAME=${PWD}/${THIS_SH} ;; |
| esac |
| |
| if ln -s ${SHNAME} /tmp/test.symlink 2>/dev/null; then |
| chgrp ${GROUPS[0]} /tmp/test.symlink 2>/dev/null |
| echo 't -h /tmp/test.symlink' |
| t -h /tmp/test.symlink |
| # some systems don't let you remove this |
| rm -f /tmp/test.symlink 2>/dev/null |
| else |
| echo 't -h /tmp/test.symlink' |
| echo 0 |
| fi |
| |
| # arithmetic constant errors |
| echo "t 4+3 -eq 7" |
| t 4+3 -eq 7 |
| echo "b 4-5 -eq 7" |
| b 4+3 -eq 7 |
| |
| echo "t 9 -eq 4+5" |
| t 9 -eq 4+5 |
| echo "b 9 -eq 4+5" |
| b 9 -eq 4+5 |
| |
| A=7 |
| echo "t A -eq 7" |
| t A -eq 7 |
| echo "b A -eq 7" |
| b A -eq 7 |
| |
| B=9 |
| echo "t 9 -eq B" |
| t 9 -eq B |
| echo "b 9 -eq B" |
| b 9 -eq B |
| |
| # badly formed expressions |
| echo 't ( 1 = 2' |
| t \( 1 = 2 |
| echo 'b ( 1 = 2' |
| b \( 1 = 2 |
| |
| # more errors |
| t a b |
| t a b c |
| t -A v |
| # too many arguments -- argument expected is also reasonable |
| t 4 -eq 4 -a 2 -ne 5 -a 4 -ne |
| # too many arguments |
| t 4 -eq 4 -a 3 4 |
| |
| [ |
| echo $? |
| |
| t \( \) |
| |
| # non-numeric arguments to `test -t' should return failure -- fix in 2.05 |
| echo 't -t a' |
| t -t a |
| echo 't -t addsds' |
| t -t addsds |
| echo 't -t 42' |
| t -t 42 |
| echo 't -t /dev/tty' |
| t -t /dev/tty |
| echo 't -t /dev/tty4' |
| t -t /dev/tty4 |
| echo 't -t /dev/tty4444444...' |
| t -t /dev/tty4444444... |
| |
| # fixed in bash-4.0-beta |
| t -t ' ' |