1*13de33a5SJulio Merino#!/bin/sh 2*13de33a5SJulio Merino 3*13de33a5SJulio Merino#- 4*13de33a5SJulio Merino# Copyright (c) June 1996 Wolfram Schneider <wosch@FreeBSD.org>. Berlin. 5*13de33a5SJulio Merino# All rights reserved. 6*13de33a5SJulio Merino# 7*13de33a5SJulio Merino# Redistribution and use in source and binary forms, with or without 8*13de33a5SJulio Merino# modification, are permitted provided that the following conditions 9*13de33a5SJulio Merino# are met: 10*13de33a5SJulio Merino# 1. Redistributions of source code must retain the above copyright 11*13de33a5SJulio Merino# notice, this list of conditions and the following disclaimer. 12*13de33a5SJulio Merino# 2. Redistributions in binary form must reproduce the above copyright 13*13de33a5SJulio Merino# notice, this list of conditions and the following disclaimer in the 14*13de33a5SJulio Merino# documentation and/or other materials provided with the distribution. 15*13de33a5SJulio Merino# 16*13de33a5SJulio Merino# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17*13de33a5SJulio Merino# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*13de33a5SJulio Merino# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*13de33a5SJulio Merino# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20*13de33a5SJulio Merino# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21*13de33a5SJulio Merino# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22*13de33a5SJulio Merino# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23*13de33a5SJulio Merino# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24*13de33a5SJulio Merino# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25*13de33a5SJulio Merino# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26*13de33a5SJulio Merino# SUCH DAMAGE. 27*13de33a5SJulio Merino 28*13de33a5SJulio Merino# 29*13de33a5SJulio Merino# TEST.sh - check if test(1) or builtin test works 30*13de33a5SJulio Merino# 31*13de33a5SJulio Merino 32*13de33a5SJulio Merino# force a specified test program, e.g. `env test=/bin/test sh regress.sh' 33*13de33a5SJulio Merino: ${test=test} 34*13de33a5SJulio Merino 35*13de33a5SJulio Merinot () 36*13de33a5SJulio Merino{ 37*13de33a5SJulio Merino # $1 -> exit code 38*13de33a5SJulio Merino # $2 -> $test expression 39*13de33a5SJulio Merino 40*13de33a5SJulio Merino count=$((count+1)) 41*13de33a5SJulio Merino # check for syntax errors 42*13de33a5SJulio Merino syntax="`eval $test $2 2>&1`" 43*13de33a5SJulio Merino ret=$? 44*13de33a5SJulio Merino if test -n "$syntax"; then 45*13de33a5SJulio Merino printf "not ok %s - (syntax error)\n" "$count $2" 46*13de33a5SJulio Merino elif [ "$ret" != "$1" ]; then 47*13de33a5SJulio Merino printf "not ok %s - (got $ret, expected $1)\n" "$count $2" 48*13de33a5SJulio Merino else 49*13de33a5SJulio Merino printf "ok %s\n" "$count $2" 50*13de33a5SJulio Merino fi 51*13de33a5SJulio Merino} 52*13de33a5SJulio Merino 53*13de33a5SJulio Merinocount=0 54*13de33a5SJulio Merinoecho "1..130" 55*13de33a5SJulio Merino 56*13de33a5SJulio Merinot 0 'b = b' 57*13de33a5SJulio Merinot 0 'b == b' 58*13de33a5SJulio Merinot 1 'b != b' 59*13de33a5SJulio Merinot 0 '\( b = b \)' 60*13de33a5SJulio Merinot 0 '\( b == b \)' 61*13de33a5SJulio Merinot 1 '! \( b = b \)' 62*13de33a5SJulio Merinot 1 '! \( b == b \)' 63*13de33a5SJulio Merinot 1 '! -f /etc/passwd' 64*13de33a5SJulio Merino 65*13de33a5SJulio Merinot 0 '-h = -h' 66*13de33a5SJulio Merinot 0 '-o = -o' 67*13de33a5SJulio Merinot 1 '-f = h' 68*13de33a5SJulio Merinot 1 '-h = f' 69*13de33a5SJulio Merinot 1 '-o = f' 70*13de33a5SJulio Merinot 1 'f = -o' 71*13de33a5SJulio Merinot 0 '\( -h = -h \)' 72*13de33a5SJulio Merinot 1 '\( a = -h \)' 73*13de33a5SJulio Merinot 1 '\( -f = h \)' 74*13de33a5SJulio Merinot 0 '-h = -h -o a' 75*13de33a5SJulio Merinot 0 '\( -h = -h \) -o 1' 76*13de33a5SJulio Merinot 0 '-h = -h -o -h = -h' 77*13de33a5SJulio Merinot 0 '\( -h = -h \) -o \( -h = -h \)' 78*13de33a5SJulio Merinot 0 'roedelheim = roedelheim' 79*13de33a5SJulio Merinot 1 'potsdam = berlin-dahlem' 80*13de33a5SJulio Merino 81*13de33a5SJulio Merinot 0 '-d /' 82*13de33a5SJulio Merinot 0 '-d / -a a != b' 83*13de33a5SJulio Merinot 1 '-z "-z"' 84*13de33a5SJulio Merinot 0 '-n -n' 85*13de33a5SJulio Merino 86*13de33a5SJulio Merinot 0 '0' 87*13de33a5SJulio Merinot 0 '\( 0 \)' 88*13de33a5SJulio Merinot 0 '-E' 89*13de33a5SJulio Merinot 0 '-X -a -X' 90*13de33a5SJulio Merinot 0 '-XXX' 91*13de33a5SJulio Merinot 0 '\( -E \)' 92*13de33a5SJulio Merinot 0 'true -o X' 93*13de33a5SJulio Merinot 0 'true -o -X' 94*13de33a5SJulio Merinot 0 '\( \( \( a = a \) -o 1 \) -a 1 \) -a true' 95*13de33a5SJulio Merinot 1 '-h /' 96*13de33a5SJulio Merinot 0 '-r /' 97*13de33a5SJulio Merinot 1 '-w /' 98*13de33a5SJulio Merinot 0 '-x /bin/sh' 99*13de33a5SJulio Merinot 0 '-c /dev/null' 100*13de33a5SJulio Merinot 0 '-f /etc/passwd' 101*13de33a5SJulio Merinot 0 '-s /etc/passwd' 102*13de33a5SJulio Merino 103*13de33a5SJulio Merinot 1 '! \( 700 -le 1000 -a -n "1" -a "20" = "20" \)' 104*13de33a5SJulio Merinot 0 '100 -eq 100' 105*13de33a5SJulio Merinot 0 '100 -lt 200' 106*13de33a5SJulio Merinot 1 '1000 -lt 200' 107*13de33a5SJulio Merinot 0 '1000 -gt 200' 108*13de33a5SJulio Merinot 0 '1000 -ge 200' 109*13de33a5SJulio Merinot 0 '1000 -ge 1000' 110*13de33a5SJulio Merinot 1 '2 -ne 2' 111*13de33a5SJulio Merinot 0 '0 -eq 0' 112*13de33a5SJulio Merinot 1 '-5 -eq 5' 113*13de33a5SJulio Merinot 0 '\( 0 -eq 0 \)' 114*13de33a5SJulio Merinot 1 '1 -eq 0 -o a = a -a 1 -eq 0 -o a = aa' 115*13de33a5SJulio Merino 116*13de33a5SJulio Merinot 1 '"" -o ""' 117*13de33a5SJulio Merinot 1 '"" -a ""' 118*13de33a5SJulio Merinot 1 '"a" -a ""' 119*13de33a5SJulio Merinot 0 '"a" -a ! ""' 120*13de33a5SJulio Merinot 1 '""' 121*13de33a5SJulio Merinot 0 '! ""' 122*13de33a5SJulio Merino 123*13de33a5SJulio Merinot 0 '!' 124*13de33a5SJulio Merinot 0 '\(' 125*13de33a5SJulio Merinot 0 '\)' 126*13de33a5SJulio Merino 127*13de33a5SJulio Merinot 1 '\( = \)' 128*13de33a5SJulio Merinot 0 '\( != \)' 129*13de33a5SJulio Merinot 0 '\( ! \)' 130*13de33a5SJulio Merinot 0 '\( \( \)' 131*13de33a5SJulio Merinot 0 '\( \) \)' 132*13de33a5SJulio Merinot 0 '! = !' 133*13de33a5SJulio Merinot 1 '! != !' 134*13de33a5SJulio Merinot 1 '-n = \)' 135*13de33a5SJulio Merinot 0 '! != \)' 136*13de33a5SJulio Merinot 1 '! = a' 137*13de33a5SJulio Merinot 0 '! != -n' 138*13de33a5SJulio Merinot 0 '! -c /etc/passwd' 139*13de33a5SJulio Merino 140*13de33a5SJulio Merinot 1 '! = = =' 141*13de33a5SJulio Merinot 0 '! = = \)' 142*13de33a5SJulio Merinot 0 '! "" -o ""' 143*13de33a5SJulio Merinot 1 '! "x" -o ""' 144*13de33a5SJulio Merinot 1 '! "" -o "x"' 145*13de33a5SJulio Merinot 1 '! "x" -o "x"' 146*13de33a5SJulio Merinot 0 '\( -f /etc/passwd \)' 147*13de33a5SJulio Merinot 0 '\( ! "" \)' 148*13de33a5SJulio Merinot 1 '\( ! -e \)' 149*13de33a5SJulio Merino 150*13de33a5SJulio Merinot 0 '0 -eq 0 -a -d /' 151*13de33a5SJulio Merinot 0 '-s = "" -o "" = ""' 152*13de33a5SJulio Merinot 0 '"" = "" -o -s = ""' 153*13de33a5SJulio Merinot 1 '-s = "" -o -s = ""' 154*13de33a5SJulio Merinot 0 '-z x -o x = "#" -o x = x' 155*13de33a5SJulio Merinot 1 '-z y -o y = "#" -o y = x' 156*13de33a5SJulio Merinot 0 '0 -ne 0 -o ! -f /' 157*13de33a5SJulio Merinot 0 '1 -ne 0 -o ! -f /etc/passwd' 158*13de33a5SJulio Merinot 1 '0 -ne 0 -o ! -f /etc/passwd' 159*13de33a5SJulio Merino 160*13de33a5SJulio Merinot 0 '-n =' 161*13de33a5SJulio Merinot 1 '-z =' 162*13de33a5SJulio Merinot 1 '! =' 163*13de33a5SJulio Merinot 0 '-n -eq' 164*13de33a5SJulio Merinot 1 '-z -eq' 165*13de33a5SJulio Merinot 1 '! -eq' 166*13de33a5SJulio Merinot 0 '-n -a' 167*13de33a5SJulio Merinot 1 '-z -a' 168*13de33a5SJulio Merinot 1 '! -a' 169*13de33a5SJulio Merinot 0 '-n -o' 170*13de33a5SJulio Merinot 1 '-z -o' 171*13de33a5SJulio Merinot 1 '! -o' 172*13de33a5SJulio Merinot 1 '! -n =' 173*13de33a5SJulio Merinot 0 '! -z =' 174*13de33a5SJulio Merinot 0 '! ! =' 175*13de33a5SJulio Merinot 1 '! -n -eq' 176*13de33a5SJulio Merinot 0 '! -z -eq' 177*13de33a5SJulio Merinot 0 '! ! -eq' 178*13de33a5SJulio Merinot 1 '! -n -a' 179*13de33a5SJulio Merinot 0 '! -z -a' 180*13de33a5SJulio Merinot 0 '! ! -a' 181*13de33a5SJulio Merinot 1 '! -n -o' 182*13de33a5SJulio Merinot 0 '! -z -o' 183*13de33a5SJulio Merinot 0 '! ! -o' 184*13de33a5SJulio Merinot 0 '\( -n = \)' 185*13de33a5SJulio Merinot 1 '\( -z = \)' 186*13de33a5SJulio Merinot 1 '\( ! = \)' 187*13de33a5SJulio Merinot 0 '\( -n -eq \)' 188*13de33a5SJulio Merinot 1 '\( -z -eq \)' 189*13de33a5SJulio Merinot 1 '\( ! -eq \)' 190*13de33a5SJulio Merinot 0 '\( -n -a \)' 191*13de33a5SJulio Merinot 1 '\( -z -a \)' 192*13de33a5SJulio Merinot 1 '\( ! -a \)' 193*13de33a5SJulio Merinot 0 '\( -n -o \)' 194*13de33a5SJulio Merinot 1 '\( -z -o \)' 195*13de33a5SJulio Merinot 1 '\( ! -o \)' 196