shithub: kwa

Download patch

ref: c153970394a8b04aa4eca9dee54d3a55e51606c9
parent: 51a73e9b3ac7061a9df560f8f4a2484447181fdc
author: qwx <qwx@sciops.net>
date: Sun Sep 28 19:24:37 EDT 2025

add more tests, use unicode data as test file instead of /lib/theo

--- a/test/T.-f-f
+++ b/test/T.-f-f
@@ -8,15 +8,15 @@
 echo xxx | $awk -f foo1 -f foo2 >foo3
 diff foo foo3 || echo 'BAD: T.-f-f multiple -fs'
 
-echo '/a/' | $awk -f - /lib/theo >foo1
-$awk '/a/' /lib/theo >foo2
+echo '/a/' | $awk -f - /lib/ucd/UnicodeData.txt >foo1
+$awk '/a/' /lib/ucd/UnicodeData.txt >foo2
 diff foo1 foo2 || echo 'BAD: T.-f-f  -f -'
 
-cp /lib/theo foo1
+cp /lib/ucd/UnicodeData.txt foo1
 echo '/./ {' >foo2
 echo 'print' >foo3
 echo '}' >foo4
-$awk -f foo2 -f foo3 -f foo4 /lib/theo >foo5
+$awk -f foo2 -f foo3 -f foo4 /lib/ucd/UnicodeData.txt >foo5
 diff foo1 foo5 || echo 'BAD: T.-f-f 3 files'
 
 echo '/./ {' >foo2
@@ -26,5 +26,5 @@
 
 
 ]' >foo4
-$awk -f foo2 -f foo3 -f foo4 /lib/theo >foo5 >[2]foo6
+$awk -f foo2 -f foo3 -f foo4 /lib/ucd/UnicodeData.txt >foo5 >[2]foo6
 grep 'syntax error.*at foo4:' foo6 >/dev/null >[2=1] || echo 'BAD: T.-f-f source file name'
--- a/test/T.close
+++ b/test/T.close
@@ -2,8 +2,8 @@
 echo T.close: test close built-in
 
 rm -f foo
-$awk '{ print >>"foo"; close("foo") }' /lib/theo
-diff /lib/theo foo || echo 'BAD: T.close (1)'
+$awk '{ print >>"foo"; close("foo") }' /lib/ucd/UnicodeData.txt
+diff /lib/ucd/UnicodeData.txt foo || echo 'BAD: T.close (1)'
 
 ls -l >foo
 tail -1 foo >foo1
@@ -12,7 +12,7 @@
 
 echo 0 >foo1
 $awk '	# non-accessible file
-  BEGIN { getline <"/lib/theo"; print close("/lib/theo"); }
+  BEGIN { getline <"/lib/ucd/UnicodeData.txt"; print close("/lib/ucd/UnicodeData.txt"); }
 ' >foo2
 diff foo1 foo2 || echo 'BAD: T.close (3)'
 
--- /dev/null
+++ b/test/T.clv
@@ -1,0 +1,179 @@
+#!/bin/rc
+echo T.clv: check command-line variables
+
+rm -f core
+
+# stdin only, no cmdline asgn
+echo 'hello
+goodbye' | $awk '
+BEGIN { x=0; print x; getline; print x, $0 }
+' >foo1
+echo '0
+0 hello' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (stdin only)'
+
+# cmdline asgn then stdin
+echo 'hello
+goodbye' | $awk '
+BEGIN { x=0; print x; getline; print x, $0 }
+' 'x=1' >foo1
+echo '0
+1 hello' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=1 only)'
+
+# several cmdline asgn, then stdin
+echo 'hello
+goodbye' | $awk '
+BEGIN { x=0; print x; getline; print x, $0 }
+' 'x=1' 'x=2' 'x=3' >foo1
+echo '0
+3 hello' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=3 only)'
+
+# several cmdline asgn, then file
+echo 'hello
+goodbye' >foo
+$awk '
+BEGIN { x=0; print x; getline; print x, $0 }
+' 'x=1' 'x=2' 'x=3' foo >foo1
+echo '0
+3 hello' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=3 only)'
+
+# cmdline asgn then file
+echo 4 >foo1
+$awk 'BEGIN { getline; print x}' 'x=4' /dev/null >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=4 /dev/null)'
+
+#cmdline asgn then file but no read of it
+echo 0 >foo1
+$awk 'BEGIN { x=0; getline <"/dev/null"; print x}' 'x=5' /dev/null >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=5 /dev/null)'
+
+#cmdline asgn then file then read
+echo 'xxx
+yyy
+zzz' >foo
+echo '6
+end' >foo1
+$awk 'BEGIN { x=0; getline; print x}
+      END { print x }' 'x=6' foo 'x=end' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=6 /dev/null)'
+
+#cmdline asgn then file then read
+echo '0
+end' >foo1
+$awk 'BEGIN { x=0; getline <"/dev/null"; print x}
+      END { print x }' 'x=7' /dev/null 'x=end' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=7 /dev/null)'
+
+#cmdline asgn then file then read; _ in commandname
+echo '0
+end' >foo1
+$awk 'BEGIN { _=0; getline <"/dev/null"; print _}
+      END { print _ }' '_=7A' /dev/null '_=end' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (_=7A /dev/null)'
+
+# illegal varname in commandname
+$awk '{ print }' '99_=foo' /dev/null >foo >[2]foo2
+grep 'can''t open.*foo' foo2 >/dev/null >[2=1] || echo 'BAD: T.clv (7B: illegal varname)'
+
+# these test the new -v option:  awk ... -v a=1 -v b=2 'prog' does before BEGIN
+
+echo 123 >foo1
+$awk -v 'x=123' 'BEGIN { print x }' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=11)'
+
+echo 123 >foo1
+$awk '-vx=123' 'BEGIN { print x }' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=11a)'
+
+echo 123 abc 10.99 >foo1
+$awk -v 'x=123' -v 'y=abc' -v 'z1=10.99' 'BEGIN { print x, y, z1 }' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=12)'
+
+echo 123 abc 10.99 >foo1
+$awk '-vx=123' '-vy=abc' '-vz1=10.99' 'BEGIN { print x, y, z1 }' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=12a)'
+
+echo 123 abc 10.99 >foo1
+$awk -v 'x=123' -v 'y=abc' -v 'z1=10.99' -- 'BEGIN { print x, y, z1 }' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=12a)'
+
+echo 'BEGIN { print x, y, z1 }' >foo0
+echo 123 abc 10.99 >foo1
+$awk -v 'x=123' -v 'y=abc' -f foo0 -v 'z1=10.99' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=13)'
+
+echo 'BEGIN { print x, y, z1 }' >foo0
+echo 123 abc 10.99 >foo1
+$awk '-vx=123' '-vy=abc' -f foo0 '-vz1=10.99' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=13a)'
+
+echo 'BEGIN { print x, y, z1 }' >foo0
+echo 123 abc 10.99 >foo1
+$awk -f foo0 -v 'x=123' -v 'y=abc' -v 'z1=10.99' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=14)'
+
+echo 'BEGIN { print x, y, z1 }' >foo0
+echo 123 abc 10.99 >foo1
+$awk -f foo0 '-vx=123' '-vy=abc' '-vz1=10.99' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=14a)'
+
+echo 'BEGIN { print x, y, z1 }
+END { print x }' >foo0
+echo '123 abc 10.99
+4567' >foo1
+$awk -f foo0 -v 'x=123' -v 'y=abc' -v 'z1=10.99' /dev/null 'x=4567' /dev/null >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=15)'
+
+echo 'BEGIN { print x, y, z1 }
+END { print x }' >foo0
+echo '123 abc 10.99
+4567' >foo1
+$awk -f foo0 '-vx=123' '-vy=abc' '-vz1=10.99' /dev/null 'x=4567' /dev/null >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=15a)'
+
+echo 'BEGIN { print x, y, z1 }
+NR==1 { print x }' >foo0
+echo '123 abc 10.99
+4567' >foo1
+$awk -v 'x=123' -v 'y=abc' -v 'z1=10.99' -f foo0 'x=4567' /lib/ucd/UnicodeData.txt >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=16)'
+
+echo 'BEGIN { print x, y, z1 }
+NR==1 { print x }' >foo0
+echo '123 abc 10.99
+4567' >foo1
+$awk '-vx=123' '-vy=abc' '-vz1=10.99' -f foo0 'x=4567' /lib/ucd/UnicodeData.txt >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=16a)'
+
+
+
+# special chars in commandline assigned value;
+# have to use local echo to avoid quoting problems.
+
+echo 'a\\b\z' >foo1
+echo 'hello' | $awk '{print x}' 'x=\141\\\\\142\\z' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=17)'
+
+echo 'a
+z' >foo1
+echo 'hello' | $awk '{print x}' 'x=a\nz' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=18)'
+
+# a bit circular here...
+$awk 'BEGIN { printf("a%c%c%cz\n", "\b", "\r", "\f") }' >foo1 
+echo 'hello' | $awk '{print x}' 'x=a\b\r\fz' >foo2
+diff foo1 foo2 || echo 'BAD: T.clv (x=19)'
+
+
+### newer -v tests
+
+
+$awk -vx 'BEGIN {print x}' >foo >[2=1]
+grep 'invalid -v option argument: x' foo >/dev/null || echo 'BAD: T.clv (x=20)'
+
+$awk -v x 'BEGIN {print x}' >foo >[2=1]
+grep 'invalid -v option argument: x' foo >/dev/null || echo 'BAD: T.clv (x=20a)'
+
--- /dev/null
+++ b/test/T.latin1
@@ -1,0 +1,36 @@
+#!/bin/rc
+echo T.latin1: tests of 8-bit input
+
+$awk '
+{ print $0 }
+' latin1 >foo1
+
+diff latin1 foo1 || echo 'BAD: T.latin1 1'
+
+$awk '{ gsub(/\351/, "\370"); print }' latin1 >foo0
+$awk '{ gsub(/é/, "ø"); print }' latin1 >foo1
+diff foo0 foo1 || echo 'BAD: T.latin1 3'
+
+$awk '{ gsub(/[^\300-\370]/, ""); print }' latin1 >foo0
+$awk '{ gsub(/[^À-ø]/, ""); print } ' latin1 >foo1
+diff foo0 foo1 || echo 'BAD: T.latin1 4'
+
+echo  '/á/' >foo1
+$awk -f foo1 foo1 >foo2
+
+diff foo1 foo2 || echo 'BAD: T.latin1 5'
+
+
+echo /[áé]/ >foo1
+$awk -f foo1 foo1 >foo2
+diff foo1 foo2 || echo 'BAD: T.latin1 6'
+
+
+echo 'This is a line.
+Patterns like /[áé]/ do not work yet. Example, run awk /[áé]/
+over a file containing just á.
+This is another line.' >foo0
+echo 'Patterns like /[áé]/ do not work yet. Example, run awk /[áé]/
+over a file containing just á.' >foo1
+$awk '/[áé]/' foo0 >foo2
+diff foo1 foo2 || echo 'BAD: T.latin1 7'
--- a/test/T.redir
+++ b/test/T.redir
@@ -1,21 +1,21 @@
 #!/bin/rc
 echo T.redir: test redirections
 
-$awk '{ print >"foo" }' /lib/theo
-diff foo /lib/theo || echo 'BAD: T.redir (print >"foo")'
+$awk '{ print >"foo" }' /lib/ucd/UnicodeData.txt
+diff foo /lib/ucd/UnicodeData.txt || echo 'BAD: T.redir (print >"foo")'
 
 rm -f foo
-$awk '{ print >>"foo" }' /lib/theo
-diff foo /lib/theo || echo 'BAD: T.redir (print >>"foo")'
+$awk '{ print >>"foo" }' /lib/ucd/UnicodeData.txt
+diff foo /lib/ucd/UnicodeData.txt || echo 'BAD: T.redir (print >>"foo")'
 
 rm -f foo
 $awk 'NR%2 == 1 { print >>"foo" }
-      NR%2 == 0 { print >"foo" }' /lib/theo
-diff foo /lib/theo || echo 'BAD: T.redir (print > and >>"foo")'
+      NR%2 == 0 { print >"foo" }' /lib/ucd/UnicodeData.txt
+diff foo /lib/ucd/UnicodeData.txt || echo 'BAD: T.redir (print > and >>"foo")'
 
 rm -f foo
-$awk '{ print | "cat >foo" }' /lib/theo
-diff foo /lib/theo || echo 'BAD: T.redir (print | "cat >foo")'
+$awk '{ print | "cat >foo" }' /lib/ucd/UnicodeData.txt
+diff foo /lib/ucd/UnicodeData.txt || echo 'BAD: T.redir (print | "cat >foo")'
 
 # tests flush of stdout before opening pipe
 echo '   head
@@ -26,12 +26,10 @@
 		print i | "sort" }' >foo2
 diff foo1 foo2 || echo 'BAD: T.redir (buffering)'
 
-rm -f foo[12]
-$awk '{ print >"/fd/2" }' /lib/theo >foo1 >[2]foo2
-diff foo2 /lib/theo || echo 'BAD: T.redir (print >"/fd/2")'
+$awk '{ print >"/fd/2" }' /lib/ucd/UnicodeData.txt >foo1 >[2]foo2
+diff foo2 /lib/ucd/UnicodeData.txt || echo 'BAD: T.redir (print >"/fd/2")'
 diff foo1 /dev/null  || echo 'BAD: T.redir (print >"/fd/2")'
 
-rm -f foo[12]
-$awk '{ print >"/fd/1" }' /lib/theo >foo1 >[2]foo2
-diff foo1 /lib/theo || echo 'BAD: T.redir (print >"/fd/1")'
+$awk '{ print >"/fd/1" }' /lib/ucd/UnicodeData.txt >foo1 >[2]foo2
+diff foo1 /lib/ucd/UnicodeData.txt || echo 'BAD: T.redir (print >"/fd/1")'
 diff foo2 /dev/null  || echo 'BAD: T.redir (print >"/fd/2")'
--- a/test/T.split
+++ b/test/T.split
@@ -54,7 +54,7 @@
 echo 'f b a' > $TEMP0
 $awk '{
 	FS = ":"
-	getline a < "/lib/theo"
+	getline a < "/lib/ucd/UnicodeData.txt"
 	print $1
 }' $TEMP0 > $TEMP1
 echo 'f' > $TEMP2
@@ -101,7 +101,7 @@
 
      ' > $TEMP0
 who | sed 10q  >> $TEMP0
-sed 10q /lib/theo >> $TEMP0
+sed 10q /lib/ucd/UnicodeData.txt >> $TEMP0
 
 $awk '
 {	n = split($0, x, "")
--- /dev/null
+++ b/test/latin1
@@ -1,0 +1,11 @@
+Ich studiere Rechtswissenschaft an der Juristischen Fakultät der LMU
+ München, arbeite als Aufsicht und Postmaster im CIP-Pool der
+ Universitätsbibliothek und bin Mitglied von Mensa in Deutschland und
+ Greenpeace.
+ Außerdem bin ich im Ortsverband München-Ost des THW für die
+ Jugendarbeit zuständig. 
+Serveurs WWW Français et Francophones. Les références qui suivent sont en francais 
+dansk deutsch español français italiano
+À propos de CANARIE 
+Accélérer l'émergence de la société de l'information
+Jysk Åbent universiteit På dansk Fluemønstre Jørgensens
--