|
|
1.1 ! root 1: # A collection of both regular and pathological input for "test" ! 2: # In order to test out things like -p and -K we need to be root, so those ! 3: # things are not tested yet. We are more interested in the range of valid ! 4: # expressions that "test" can parse. ! 5: ! 6: if [ $1 ] ! 7: then TEST=$1 ! 8: else TEST=/bin/test ! 9: fi ! 10: ! 11: STRING_BINARIES='= != < >' ! 12: ARITH_BINARIES="-eq -ne -lt -gt -le -ge" ! 13: NS_FILE_BINARIES="-ef -nt -ot" ! 14: ! 15: STRING_UNARIES="-z -n !" ! 16: FILE_UNARIES="-r -w -x -t -b -c -d -p -f -g -u -s" ! 17: NS_FILE_UNARIES="-K -L" ! 18: ! 19: LPAREN="\(" ! 20: RPAREN="\)" ! 21: ! 22: ALL_OPS="$STRING_BINARIES $ARITH_BINARIES $NS_FILE_BINARIES $STRING_UNARIES\ ! 23: $FILE_UNARIES $NS_FILE_UNARIES $LPAREN $RPAREN" ! 24: ! 25: OLD_FILE=`which test` ! 26: NEW_FILE=/tmp/newfile ! 27: ! 28: >$NEW_FILE # create the new file ! 29: ! 30: xtest () { ! 31: $TEST "$@"; A=$? ! 32: if [ $# -gt 0 ]; then ! 33: $TEST ! \( "$@" \); B="negated as $?" ! 34: else B= ! 35: fi ! 36: echo test "$@" "-->" $A $B ! 37: } ! 38: ! 39: echo Testing pathological cases ! 40: ! 41: xtest \( "" \) # => ( -n "" ) ! 42: xtest \( -a \) = \) # => -n ")" -a ( ")" = ")" ) ! 43: xtest \( = \) # 0 => ( -n "!=" ) ! 44: # 1 => "(" != ")" ! 45: xtest \( -a = -o \) # 1 => ( "-a" = "-o" ) ! 46: # 0 => -n "(" -a -n "=" -o -n ")" ! 47: ! 48: echo Testing simple predicates ! 49: ! 50: xtest ! 51: xtest "" ! 52: xtest "a" ! 53: xtest "!" ! 54: ! 55: echo Testing file comparisons ! 56: ! 57: for l in $OLD_FILE $NEW_FILE; do ! 58: for r in $OLD_FILE $NEW_FILE; do ! 59: for op in $NS_FILE_BINARIES; do ! 60: xtest $l $op $r ! 61: done ! 62: done ! 63: done ! 64: ! 65: echo Testing precedence and associativity ! 66: ! 67: xtest ! "" -o "a" # good 0 => ( ! "" ) -o "a" ! 68: # bad 1 => ! ( "" -o "a" ) ! 69: xtest "" -o ! "" ! 70: ! 71: xtest ! "" -a "a" # good 0 => ( ! "" ) -a "a" ! 72: # bad 1 => ! ("" -a "a") ! 73: xtest "a" -a ! "" ! 74: ! 75: xtest "" -a "" -o "a" # good 0 => ( "" -a "" ) -o "a" ! 76: # bad 1 => "" -a ( "" -o "a" ) ! 77: xtest "a" -o "" -a "" ! 78: ! 79: echo Testing simple arithmetic ! 80: ! 81: for l in 1 2; do ! 82: for r in 1 2; do ! 83: for op in $ARITH_BINARIES; do ! 84: xtest $l $op $r ! 85: done ! 86: done ! 87: done ! 88: ! 89: echo Testing simple string operations. ! 90: ! 91: TEST_OPS="$STRING_BINARIES $STRING_UNARIES $LPAREN $RPAREN" ! 92: ! 93: for l in $TEST_OPS; do ! 94: for r in $TEST_OPS; do ! 95: for op in $STRING_BINARIES; do ! 96: xtest $l $op $r ! 97: done ! 98: done ! 99: done
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.