113de33a5SJulio Merino#!/bin/sh 213de33a5SJulio Merino 313de33a5SJulio Merino#- 413de33a5SJulio Merino# Copyright (c) June 1996 Wolfram Schneider <wosch@FreeBSD.org>. Berlin. 513de33a5SJulio Merino# All rights reserved. 613de33a5SJulio Merino# 713de33a5SJulio Merino# Redistribution and use in source and binary forms, with or without 813de33a5SJulio Merino# modification, are permitted provided that the following conditions 913de33a5SJulio Merino# are met: 1013de33a5SJulio Merino# 1. Redistributions of source code must retain the above copyright 1113de33a5SJulio Merino# notice, this list of conditions and the following disclaimer. 1213de33a5SJulio Merino# 2. Redistributions in binary form must reproduce the above copyright 1313de33a5SJulio Merino# notice, this list of conditions and the following disclaimer in the 1413de33a5SJulio Merino# documentation and/or other materials provided with the distribution. 1513de33a5SJulio Merino# 1613de33a5SJulio Merino# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1713de33a5SJulio Merino# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1813de33a5SJulio Merino# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1913de33a5SJulio Merino# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2013de33a5SJulio Merino# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2113de33a5SJulio Merino# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2213de33a5SJulio Merino# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2313de33a5SJulio Merino# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2413de33a5SJulio Merino# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2513de33a5SJulio Merino# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2613de33a5SJulio Merino# SUCH DAMAGE. 2713de33a5SJulio Merino 2813de33a5SJulio Merino# 2913de33a5SJulio Merino# TEST.sh - check if test(1) or builtin test works 3013de33a5SJulio Merino# 3113de33a5SJulio Merino 3213de33a5SJulio Merino# force a specified test program, e.g. `env test=/bin/test sh regress.sh' 3313de33a5SJulio Merino: ${test=test} 3413de33a5SJulio Merino 3513de33a5SJulio Merinot () 3613de33a5SJulio Merino{ 3713de33a5SJulio Merino # $1 -> exit code 3813de33a5SJulio Merino # $2 -> $test expression 3913de33a5SJulio Merino 4013de33a5SJulio Merino count=$((count+1)) 4113de33a5SJulio Merino # check for syntax errors 4213de33a5SJulio Merino syntax="`eval $test $2 2>&1`" 4313de33a5SJulio Merino ret=$? 4413de33a5SJulio Merino if test -n "$syntax"; then 4513de33a5SJulio Merino printf "not ok %s - (syntax error)\n" "$count $2" 4613de33a5SJulio Merino elif [ "$ret" != "$1" ]; then 4713de33a5SJulio Merino printf "not ok %s - (got $ret, expected $1)\n" "$count $2" 4813de33a5SJulio Merino else 4913de33a5SJulio Merino printf "ok %s\n" "$count $2" 5013de33a5SJulio Merino fi 5113de33a5SJulio Merino} 5213de33a5SJulio Merino 5313de33a5SJulio Merinocount=0 5413de33a5SJulio Merinoecho "1..130" 5513de33a5SJulio Merino 5613de33a5SJulio Merinot 0 'b = b' 5713de33a5SJulio Merinot 0 'b == b' 5813de33a5SJulio Merinot 1 'b != b' 5913de33a5SJulio Merinot 0 '\( b = b \)' 6013de33a5SJulio Merinot 0 '\( b == b \)' 6113de33a5SJulio Merinot 1 '! \( b = b \)' 6213de33a5SJulio Merinot 1 '! \( b == b \)' 6313de33a5SJulio Merinot 1 '! -f /etc/passwd' 6413de33a5SJulio Merino 6513de33a5SJulio Merinot 0 '-h = -h' 6613de33a5SJulio Merinot 0 '-o = -o' 6713de33a5SJulio Merinot 1 '-f = h' 6813de33a5SJulio Merinot 1 '-h = f' 6913de33a5SJulio Merinot 1 '-o = f' 7013de33a5SJulio Merinot 1 'f = -o' 7113de33a5SJulio Merinot 0 '\( -h = -h \)' 7213de33a5SJulio Merinot 1 '\( a = -h \)' 7313de33a5SJulio Merinot 1 '\( -f = h \)' 7413de33a5SJulio Merinot 0 '-h = -h -o a' 7513de33a5SJulio Merinot 0 '\( -h = -h \) -o 1' 7613de33a5SJulio Merinot 0 '-h = -h -o -h = -h' 7713de33a5SJulio Merinot 0 '\( -h = -h \) -o \( -h = -h \)' 7813de33a5SJulio Merinot 0 'roedelheim = roedelheim' 7913de33a5SJulio Merinot 1 'potsdam = berlin-dahlem' 8013de33a5SJulio Merino 8113de33a5SJulio Merinot 0 '-d /' 8213de33a5SJulio Merinot 0 '-d / -a a != b' 8313de33a5SJulio Merinot 1 '-z "-z"' 8413de33a5SJulio Merinot 0 '-n -n' 8513de33a5SJulio Merino 8613de33a5SJulio Merinot 0 '0' 8713de33a5SJulio Merinot 0 '\( 0 \)' 8813de33a5SJulio Merinot 0 '-E' 8913de33a5SJulio Merinot 0 '-X -a -X' 9013de33a5SJulio Merinot 0 '-XXX' 9113de33a5SJulio Merinot 0 '\( -E \)' 9213de33a5SJulio Merinot 0 'true -o X' 9313de33a5SJulio Merinot 0 'true -o -X' 9413de33a5SJulio Merinot 0 '\( \( \( a = a \) -o 1 \) -a 1 \) -a true' 9513de33a5SJulio Merinot 1 '-h /' 9613de33a5SJulio Merinot 0 '-r /' 9713de33a5SJulio Merinot 1 '-w /' 9813de33a5SJulio Merinot 0 '-x /bin/sh' 9913de33a5SJulio Merinot 0 '-c /dev/null' 10013de33a5SJulio Merinot 0 '-f /etc/passwd' 10113de33a5SJulio Merinot 0 '-s /etc/passwd' 10213de33a5SJulio Merino 10313de33a5SJulio Merinot 1 '! \( 700 -le 1000 -a -n "1" -a "20" = "20" \)' 10413de33a5SJulio Merinot 0 '100 -eq 100' 10513de33a5SJulio Merinot 0 '100 -lt 200' 10613de33a5SJulio Merinot 1 '1000 -lt 200' 10713de33a5SJulio Merinot 0 '1000 -gt 200' 10813de33a5SJulio Merinot 0 '1000 -ge 200' 10913de33a5SJulio Merinot 0 '1000 -ge 1000' 11013de33a5SJulio Merinot 1 '2 -ne 2' 11113de33a5SJulio Merinot 0 '0 -eq 0' 11213de33a5SJulio Merinot 1 '-5 -eq 5' 11313de33a5SJulio Merinot 0 '\( 0 -eq 0 \)' 11413de33a5SJulio Merinot 1 '1 -eq 0 -o a = a -a 1 -eq 0 -o a = aa' 11513de33a5SJulio Merino 11613de33a5SJulio Merinot 1 '"" -o ""' 11713de33a5SJulio Merinot 1 '"" -a ""' 11813de33a5SJulio Merinot 1 '"a" -a ""' 11913de33a5SJulio Merinot 0 '"a" -a ! ""' 12013de33a5SJulio Merinot 1 '""' 12113de33a5SJulio Merinot 0 '! ""' 12213de33a5SJulio Merino 12313de33a5SJulio Merinot 0 '!' 12413de33a5SJulio Merinot 0 '\(' 12513de33a5SJulio Merinot 0 '\)' 12613de33a5SJulio Merino 12713de33a5SJulio Merinot 1 '\( = \)' 12813de33a5SJulio Merinot 0 '\( != \)' 12913de33a5SJulio Merinot 0 '\( ! \)' 13013de33a5SJulio Merinot 0 '\( \( \)' 13113de33a5SJulio Merinot 0 '\( \) \)' 13213de33a5SJulio Merinot 0 '! = !' 13313de33a5SJulio Merinot 1 '! != !' 13413de33a5SJulio Merinot 1 '-n = \)' 13513de33a5SJulio Merinot 0 '! != \)' 13613de33a5SJulio Merinot 1 '! = a' 13713de33a5SJulio Merinot 0 '! != -n' 13813de33a5SJulio Merinot 0 '! -c /etc/passwd' 13913de33a5SJulio Merino 14013de33a5SJulio Merinot 1 '! = = =' 14113de33a5SJulio Merinot 0 '! = = \)' 14213de33a5SJulio Merinot 0 '! "" -o ""' 14313de33a5SJulio Merinot 1 '! "x" -o ""' 14413de33a5SJulio Merinot 1 '! "" -o "x"' 14513de33a5SJulio Merinot 1 '! "x" -o "x"' 14613de33a5SJulio Merinot 0 '\( -f /etc/passwd \)' 14713de33a5SJulio Merinot 0 '\( ! "" \)' 14813de33a5SJulio Merinot 1 '\( ! -e \)' 14913de33a5SJulio Merino 15013de33a5SJulio Merinot 0 '0 -eq 0 -a -d /' 15113de33a5SJulio Merinot 0 '-s = "" -o "" = ""' 15213de33a5SJulio Merinot 0 '"" = "" -o -s = ""' 15313de33a5SJulio Merinot 1 '-s = "" -o -s = ""' 15413de33a5SJulio Merinot 0 '-z x -o x = "#" -o x = x' 15513de33a5SJulio Merinot 1 '-z y -o y = "#" -o y = x' 15613de33a5SJulio Merinot 0 '0 -ne 0 -o ! -f /' 15713de33a5SJulio Merinot 0 '1 -ne 0 -o ! -f /etc/passwd' 15813de33a5SJulio Merinot 1 '0 -ne 0 -o ! -f /etc/passwd' 15913de33a5SJulio Merino 16013de33a5SJulio Merinot 0 '-n =' 16113de33a5SJulio Merinot 1 '-z =' 16213de33a5SJulio Merinot 1 '! =' 16313de33a5SJulio Merinot 0 '-n -eq' 16413de33a5SJulio Merinot 1 '-z -eq' 16513de33a5SJulio Merinot 1 '! -eq' 16613de33a5SJulio Merinot 0 '-n -a' 16713de33a5SJulio Merinot 1 '-z -a' 16813de33a5SJulio Merinot 1 '! -a' 16913de33a5SJulio Merinot 0 '-n -o' 17013de33a5SJulio Merinot 1 '-z -o' 17113de33a5SJulio Merinot 1 '! -o' 17213de33a5SJulio Merinot 1 '! -n =' 17313de33a5SJulio Merinot 0 '! -z =' 17413de33a5SJulio Merinot 0 '! ! =' 17513de33a5SJulio Merinot 1 '! -n -eq' 17613de33a5SJulio Merinot 0 '! -z -eq' 17713de33a5SJulio Merinot 0 '! ! -eq' 17813de33a5SJulio Merinot 1 '! -n -a' 17913de33a5SJulio Merinot 0 '! -z -a' 18013de33a5SJulio Merinot 0 '! ! -a' 18113de33a5SJulio Merinot 1 '! -n -o' 18213de33a5SJulio Merinot 0 '! -z -o' 18313de33a5SJulio Merinot 0 '! ! -o' 18413de33a5SJulio Merinot 0 '\( -n = \)' 18513de33a5SJulio Merinot 1 '\( -z = \)' 18613de33a5SJulio Merinot 1 '\( ! = \)' 18713de33a5SJulio Merinot 0 '\( -n -eq \)' 18813de33a5SJulio Merinot 1 '\( -z -eq \)' 18913de33a5SJulio Merinot 1 '\( ! -eq \)' 19013de33a5SJulio Merinot 0 '\( -n -a \)' 19113de33a5SJulio Merinot 1 '\( -z -a \)' 19213de33a5SJulio Merinot 1 '\( ! -a \)' 19313de33a5SJulio Merinot 0 '\( -n -o \)' 19413de33a5SJulio Merinot 1 '\( -z -o \)' 19513de33a5SJulio Merinot 1 '\( ! -o \)' 196