ref: a458242e8256b735e5bc38085fb3db35d7fa720d
parent: ef4281a5027fe3aeff75fb4017a4078e395cdab2
author: Ori Bernstein <ori@eigenstate.org>
date: Sat Feb 6 19:26:11 EST 2021
add test tests.
--- a/cmd/mkfile
+++ b/cmd/mkfile
@@ -3,5 +3,6 @@
TEST=\
cpp\
date\
+ test\
-<../regress
\ No newline at end of file
+<../regress
--- /dev/null
+++ b/cmd/test.rc
@@ -1,0 +1,136 @@
+#!/bin/rc
+
+rfork e
+
+ERROR=0
+FAILED=0
+
+fn t{
+ # $1 -> exit code
+ # $2 -> $test expression
+
+ expect=$1
+ shift
+
+ echo -n $expect^': test' $*
+
+ # check for syntax errors
+ syntax=`{test $* >[2=1]}
+ if(~ $"syntax ''){
+ switch($expect){
+ case 0
+ if(test $*) echo ' OK'
+ if not failed
+ case 1
+ if(test $*) failed
+ if not echo ' OK'
+ }
+ }
+ if not
+ error
+}
+
+fn error{
+ echo
+ echo ' '^$"syntax
+ ERROR=`{echo $ERROR 1 + p | dc}
+}
+
+fn failed{
+ echo ' failed'
+ FAILED=`{echo $FAILED 1 + p | dc}
+}
+
+
+t 0 b '=' b
+t 1 b '!=' b
+t 0 '(' b '=' b ')'
+t 1 ! '(' b '=' b ')'
+t 1 ! -f /bin/rc
+
+t 0 -h '=' -h
+t 0 -o '=' -o
+#t 1 -f '=' h
+t 1 -h '=' f
+t 1 -o '=' f
+t 1 f '=' -o
+
+t 0 '(' -h '=' -h ')'
+t 1 '(' a '=' -h ')'
+#t 1 '(' -f '=' h ')'
+t 0 -h '=' -h -o a
+t 0 '(' -h '=' -h ')' -o 1
+t 0 -h '=' -h -o -h '=' -h
+t 0 '(' -h '=' -h ')' -o '(' -h '=' -h ')'
+t 0 roedelheim '=' roedelheim
+t 1 potsdam '=' berlin-dahlem
+
+t 0 -d /
+t 0 -d / -a a '!=' b
+t 1 -z -z
+t 0 -n -n
+
+t 0 0
+t 0 '(' 0 ')'
+t 0 '-E'
+t 0 -X -a -X
+t 0 -XXX
+t 0 '(' -E ')'
+t 0 true -o X
+t 0 true -o -X
+t 0 '(' '(' '(' a '=' a ')' -o 1 ')' -a 1 ')'
+#t 1 -h /
+t 0 -r /
+t 1 -w /dev/zero
+t 0 -w /dev/null
+t 1 -x /dev/null
+t 0 -x /bin/rc
+#t 0 -c /dev/null
+#t 0 -b /dev/fd0a -o -b /dev/rfd0a -o true
+t 0 -f /adm/users
+t 0 -s /adm/users
+
+t 1 ! '(' 700 -le 1000 -a -n 1 -a 20 '=' 20 ')'
+t 0 100 -eq 100
+t 0 100 -lt 200
+t 1 1000 -lt 200
+t 0 1000 -gt 200
+t 0 1000 -ge 200
+t 0 1000 -ge 1000
+
+t 1 2 -ne 2
+t 0 0 -eq 0
+t 1 -5 -eq 5
+t 0 '(' 0 -eq 0 ')'
+t 1 1 -eq 0 -o a '=' a -a 1 -eq 0 -o a '=' aa
+#t 0 '" +123 " -eq 123'
+#t 1 '"-123 " -gt " -1"'
+t 0 123 -gt -123
+t 0 -0 -eq +0
+t 1 +0 -gt 0
+t 0 0 -eq 0
+t 0 0000 -eq -0
+t 0 -1 -gt -2
+t 1 1 -gt 2
+t 1 4294967296 -eq 0
+t 0 12345678901234567890 -eq +12345678901234567890
+
+t 1 '' -o ''
+t 1 '' -a ''
+t 1 a -a ''
+t 0 a -a ! ''
+t 1 ''
+t 0 ! ''
+
+t 0 1 -eq 1
+t 1 ! 1 -eq 1
+t 0 ! ! 1 -eq 1
+t 1 ! ! ! 1 -eq 1
+t 1 ! '(' XXX -o XXX ')'
+t 0 ! '(' ! '(' XXX -o XXX ')' ')'
+
+echo
+echo 'Syntax errors:' $ERROR 'Failed:' $FAILED
+if(! ~ $ERROR 0 || ! ~ $FAILED 0)
+ exit 'failures'
+exit ''