xref: /openbsd-src/regress/bin/test/TEST.sh (revision 2133b42eb22f6d83c07d97f9e3bc89be7a178410)
19c16b896Snicm#!/bin/sh
29c16b896Snicm#
39c16b896Snicm# Copyright (c) June 1996 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
49c16b896Snicm# All rights reserved.
59c16b896Snicm#
69c16b896Snicm# Redistribution and use in source and binary forms, with or without
79c16b896Snicm# modification, are permitted provided that the following conditions
89c16b896Snicm# are met:
99c16b896Snicm# 1. Redistributions of source code must retain the above copyright
109c16b896Snicm#    notice, this list of conditions and the following disclaimer.
119c16b896Snicm# 2. Redistributions in binary form must reproduce the above copyright
129c16b896Snicm#    notice, this list of conditions and the following disclaimer in the
139c16b896Snicm#    documentation and/or other materials provided with the distribution.
149c16b896Snicm#
159c16b896Snicm# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
169c16b896Snicm# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
179c16b896Snicm# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
189c16b896Snicm# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
199c16b896Snicm# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
209c16b896Snicm# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
219c16b896Snicm# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
229c16b896Snicm# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
239c16b896Snicm# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
249c16b896Snicm# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
259c16b896Snicm# SUCH DAMAGE.
269c16b896Snicm#
279c16b896Snicm# TEST.sh - check if test(1) or builtin test works
289c16b896Snicm#
29*2133b42eStobias# $OpenBSD: TEST.sh,v 1.3 2018/04/02 06:47:43 tobias Exp $
309c16b896Snicm
319c16b896Snicm# force a specified test program, e.g. `env test=/bin/test sh TEST.sh'
329c16b896Snicm: ${test=test}
339c16b896Snicm
349c16b896SnicmERROR=0 FAILED=0
359c16b896Snicm
369c16b896Snicmt ()
379c16b896Snicm{
389c16b896Snicm	# $1 -> exit code
399c16b896Snicm	# $2 -> $test expression
409c16b896Snicm
419c16b896Snicm	echo -n "$1: $test $2 "
429c16b896Snicm
439c16b896Snicm	# check for syntax errors
449c16b896Snicm	syntax="`eval $test $2 2>&1`"
459c16b896Snicm	if test -z "$syntax"; then
469c16b896Snicm
479c16b896Snicm	case $1 in
489c16b896Snicm		0) if eval $test $2; then echo " OK"; else failed;fi;;
499c16b896Snicm		1) if eval $test $2; then failed; else echo " OK";fi;;
509c16b896Snicm	esac
519c16b896Snicm
529c16b896Snicm	else
539c16b896Snicm		error
549c16b896Snicm	fi
559c16b896Snicm}
569c16b896Snicm
579c16b896Snicmerror ()
589c16b896Snicm{
599c16b896Snicm	echo ""; echo "	$syntax"
609c16b896Snicm	ERROR=`expr $ERROR + 1`
619c16b896Snicm}
629c16b896Snicm
639c16b896Snicmfailed ()
649c16b896Snicm{
659c16b896Snicm	echo ""; echo "	failed"
669c16b896Snicm	FAILED=`expr $FAILED + 1`
679c16b896Snicm}
689c16b896Snicm
699c16b896Snicm
709c16b896Snicmt 0 'b = b'
719c16b896Snicmt 1 'b != b'
729c16b896Snicmt 0 '\( b = b \)'
739c16b896Snicmt 1 '! \( b = b \)'
749c16b896Snicmt 1 '! -f /etc/passwd'
759c16b896Snicm
769c16b896Snicmt 0 '-h = -h'
779c16b896Snicmt 0 '-o = -o'
789c16b896Snicmt 1 '-f = h'
799c16b896Snicmt 1 '-h = f'
809c16b896Snicmt 1 '-o = f'
819c16b896Snicmt 1 'f = -o'
829c16b896Snicmt 0 '\( -h = -h \)'
839c16b896Snicmt 1 '\( a = -h \)'
849c16b896Snicmt 1 '\( -f = h \)'
859c16b896Snicmt 0 '-h = -h -o a'
869c16b896Snicmt 0 '\( -h = -h \) -o 1'
879c16b896Snicmt 0 '-h = -h -o -h = -h'
889c16b896Snicmt 0 '\( -h = -h \) -o \( -h = -h \)'
899c16b896Snicmt 0 'roedelheim = roedelheim'
909c16b896Snicmt 1 'potsdam = berlin-dahlem'
919c16b896Snicm
929c16b896Snicmt 0 '-d /'
939c16b896Snicmt 0 '-d / -a a != b'
949c16b896Snicmt 1 '-z "-z"'
959c16b896Snicmt 0 '-n -n'
969c16b896Snicm
979c16b896Snicmt 0 '0'
989c16b896Snicmt 0 '\( 0 \)'
999c16b896Snicmt 0 '-E'
1009c16b896Snicmt 0 '-X -a -X'
1019c16b896Snicmt 0 '-XXX'
1029c16b896Snicmt 0 '\( -E \)'
1039c16b896Snicmt 0 'true -o X'
1049c16b896Snicmt 0 'true -o -X'
1059c16b896Snicmt 0 '\( \( \( a = a \) -o 1 \) -a 1 \) -a true'
1069c16b896Snicmt 1 '-h /'
1079c16b896Snicmt 0 '-r /'
1081412fbc7Sdanielt 1 '-w /bin/sh'
1099c16b896Snicmt 0 '-x /bin/sh'
1109c16b896Snicmt 0 '-c /dev/null'
1119c16b896Snicmt 0 '-b /dev/fd0a -o -b /dev/rfd0a -o true'
1129c16b896Snicmt 0 '-f /etc/passwd'
1139c16b896Snicmt 0 '-s /etc/passwd'
1149c16b896Snicm
1159c16b896Snicmt 1 '! \( 700 -le 1000 -a -n "1" -a "20" = "20" \)'
1169c16b896Snicmt 0 '100 -eq 100'
1179c16b896Snicmt 0 '100 -lt 200'
1189c16b896Snicmt 1 '1000 -lt 200'
1199c16b896Snicmt 0 '1000 -gt 200'
1209c16b896Snicmt 0 '1000 -ge 200'
1219c16b896Snicmt 0 '1000 -ge 1000'
1229c16b896Snicmt 1 '2 -ne 2'
1239c16b896Snicmt 0 '0 -eq 0'
1249c16b896Snicmt 1 '-5 -eq 5'
1259c16b896Snicmt 0 '\( 0 -eq 0 \)'
1269c16b896Snicmt 1 '1 -eq 0 -o a = a -a 1 -eq 0 -o a = aa'
127*2133b42eStobiast 0 '" +123 " -eq 123'
128*2133b42eStobiast 1 '"-123  " -gt " -1"'
129*2133b42eStobiast 0 '123 -gt -123'
130*2133b42eStobiast 0 '-0 -eq +0'
131*2133b42eStobiast 1 '+0 -gt 0'
132*2133b42eStobiast 0 '0 -eq 0'
133*2133b42eStobiast 0 '0000 -eq -0'
134*2133b42eStobiast 0 '-1 -gt -2'
135*2133b42eStobiast 1 '1 -gt 2'
136*2133b42eStobiast 1 '4294967296 -eq 0'
137*2133b42eStobiast 0 '12345678901234567890 -eq +0012345678901234567890'
1389c16b896Snicm
1399c16b896Snicmt 1 '"" -o ""'
1409c16b896Snicmt 1 '"" -a ""'
1419c16b896Snicmt 1 '"a" -a ""'
1429c16b896Snicmt 0 '"a" -a ! ""'
1439c16b896Snicmt 1 '""'
1449c16b896Snicmt 0 '! ""'
1459c16b896Snicm
1469c16b896Snicmecho ""
1479c16b896Snicmecho "Syntax errors: $ERROR Failed: $FAILED"
1489c16b896Snicm[ $ERROR -gt 0 ] && exit 1
1499c16b896Snicm[ $FAILED -gt 0 ] && exit 1
1509c16b896Snicmexit 0
151