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