ref: 3206ebbc2fbd2d489d12a559b5d4e68fdfdc5ffc
parent: 6107b9c6c24e358901ad588b8e9053bd70cd8aa2
author: qwx <qwx@sciops.net>
date: Wed Jan 7 18:32:16 EST 2026
test: begin refactoring for inclusion
--- a/test/Compare.T1
+++ /dev/null
@@ -1,49 +1,0 @@
-#!/bin/rc
-rfork e
-if(~ $#oldawk 0)
- oldawk=trueawk
-if(~ $#awk 0)
- awk=kwa
-
-working=(\
- T.-f-f \
- T.chem \
- T.csconcat \
- T.delete \
- T.exprconv \
- T.fmt \
- T.getline \
- T.lilly \
- T.main \
- T.redir \
- T.system \
-)
-
-broken=(\
- T.argv \
- T.arnold \
- T.builtin \
- T.close \
- T.clv \
- T.errmsg \
- T.expr \
- T.flags \
- T.func \
- T.int-expr \
- T.latin1 \
- T.misc \
- T.nextfile \
- T.overflow \
- T.re \
- T.recache \
- T.split \
- T.sub \
- T.utf \
- T.utfre \
-)
-
-for(i in $working)
- ./$i
-echo known broken
-for(i in $broken)
- ./$i
--- a/test/Compare.p
+++ /dev/null
@@ -1,17 +1,0 @@
-#!/bin/rc
-rfork e
-if(~ $#oldawk 0)
- oldawk=trueawk
-if(~ $#awk 0)
- awk=kwa
-
-for(i in p.*){- echo -n $i:
- $oldawk -f $i test.countries test.countries >foo1.$i
- $awk -f $i test.countries test.countries >foo2.$i
- if(cmp -s foo1.$i foo2.$i)
- echo
- if not
- echo BAD
- diff -b foo1.$i foo2.$i | sed 's/^/ /;10q'
-}
--- a/test/Compare.t
+++ /dev/null
@@ -1,17 +1,0 @@
-#!/bin/rc
-rfork e
-if(~ $#oldawk 0)
- oldawk=trueawk
-if(~ $#awk 0)
- awk=kwa
-
-for(i in t.*){- echo -n $i:
- $oldawk -f $i test.data >foo1.$i
- $awk -f $i test.data >foo2.$i
- if(cmp -s foo1.$i foo2.$i)
- echo
- if not
- echo BAD
- diff -b foo1.$i foo2.$i | sed 's/^/ /;10q'
-}
--- a/test/T.-f-f
+++ b/test/T.-f-f
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.-f-f: check multiple -f arguments
+echo T.-f-f: check multiple -f arguments >[1=2]
echo 'begin
end' >foo
@@ -6,13 +6,13 @@
echo 'BEGIN { print "begin" }' >foo1 echo 'END { print "end" }' >foo2echo xxx | $awk -f foo1 -f foo2 >foo3
-diff foo foo3 || echo 'BAD: T.-f-f multiple -fs'
+diff foo foo3 || echo 'BAD: T.-f-f: multiple -fs' >[1=2]
sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
echo '/a/' | $awk -f - foo.txt >foo1
$awk '/a/' foo.txt >foo2
-diff foo1 foo2 || echo 'BAD: T.-f-f -f -'
+diff foo1 foo2 || echo 'BAD: T.-f-f: -f -' >[1=2]
cp foo.txt foo1
echo '/./ {' >foo2@@ -19,7 +19,7 @@
echo 'print' >foo3
echo '}' >foo4
$awk -f foo2 -f foo3 -f foo4 foo.txt >foo5
-diff foo1 foo5 || echo 'BAD: T.-f-f 3 files'
+diff foo1 foo5 || echo 'BAD: T.-f-f: 3 files' >[1=2]
echo '/./ {' >foo2echo 'print' >foo3
@@ -29,4 +29,4 @@
]' >foo4
$awk -f foo2 -f foo3 -f foo4 foo.txt >foo5 >[2]foo6
-grep 'syntax error at .*foo4' foo6 >/dev/null >[2=1] || echo 'BAD: T.-f-f source file name'
+grep 'syntax error at .*foo4' foo6 >/dev/null >[2=1] || echo 'BAD: T.-f-f: source file name' >[1=2]
--- a/test/T.argv
+++ b/test/T.argv
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.argv: misc tests of argc and argv
+echo T.argv: misc tests of argc and argv >[1=2]
echo >foo1
echo >foo2
@@ -13,7 +13,7 @@
exit
}' * >foo1
echo * >foo2
-diff foo1 foo2 || echo 'BAD: T.argv (echo1 *)'
+diff foo1 foo2 || echo 'BAD: T.argv: echo1 *' >[1=2]
$awk '
BEGIN {@@ -26,7 +26,7 @@
exit
}' * >foo1
echo * >foo2
-diff foo1 foo2 || echo 'BAD: T.argv (echo2 *)'
+diff foo1 foo2 || echo 'BAD: T.argv: echo2 *' >[1=2]
$awk '
BEGIN {@@ -45,7 +45,7 @@
def
!
-diff foo1 foo2 || echo 'BAD: T.argv (argc *)'
+diff foo1 foo2 || echo 'BAD: T.argv: argc *' >[1=2]
echo '1
2
@@ -54,7 +54,7 @@
foo2
foo3' >foo1
$awk '{print L $0}' 'L=foo' <foo0 >foo2-diff foo1 foo2 || echo 'BAD: T.argv (L=foo <foo1)'
+diff foo1 foo2 || echo 'BAD: T.argv: L=foo <foo1' >[1=2]
echo '1
2
@@ -63,7 +63,7 @@
foo2
foo3' >foo1
$awk '{print L $0}' 'L=foo' foo0 >foo2-diff foo1 foo2 || echo 'BAD: T.argv (L=foo foo1)'
+diff foo1 foo2 || echo 'BAD: T.argv: L=foo foo1' >[1=2]
echo '1
2
@@ -72,7 +72,7 @@
foo2
foo3' >foo1
cat foo0 | $awk '{print L $0}' 'L=foo' - >foo2-diff foo1 foo2 || echo 'BAD: T.argv (L=foo -)'
+diff foo1 foo2 || echo 'BAD: T.argv: L=foo -' >[1=2]
echo '1
2
@@ -84,7 +84,7 @@
glop2
glop3' >foo1
$awk '{print L $0}' 'L=foo' foo0 'L=glop' foo0 >foo2-diff foo1 foo2 || echo 'BAD: T.argv (L=foo L=glop)'
+diff foo1 foo2 || echo 'BAD: T.argv: L=foo L=glop' >[1=2]
echo '1
2
@@ -96,23 +96,16 @@
222
223' >foo1
$awk '{print L $0}' 'L=11' foo0 'L=22' foo0 >foo2-diff foo1 foo2 || echo 'BAD: T.argv (L=11 L=22)'
+diff foo1 foo2 || echo 'BAD: T.argv: L=11 L=22' >[1=2]
-echo >foo0
-echo 'name=value
-name=value' >foo1
-$awk 'BEGIN { print ARGV[1] } { print ARGV[1] }' 'name=value' foo0 >foo2-diff foo1 foo2 || echo 'BAD: T.argv assignment operand modified'
-
echo 3.345 >foo1
$awk 'BEGIN { print ARGV[1] + ARGV[2]}' 1 2.345 >foo2-diff foo1 foo2 || echo 'BAD: T.argv (ARGV[1] + ARGV[2])'
+diff foo1 foo2 || echo 'BAD: T.argv: ARGV[1] + ARGV[2]' >[1=2]
echo 3.345 >foo1
x1=1 x2=2.345 $awk 'BEGIN { print ENVIRON["x1"] + ENVIRON["x2"]}' 1 2.345 >foo2-diff foo1 foo2 || echo 'BAD: T.argv (ENVIRON[x1] + ENVIRON[x2])'
+diff foo1 foo2 || echo 'BAD: T.argv: ENVIRON[x1] + ENVIRON[x2]' >[1=2]
-
echo 'foo1' >foo1
echo 'foo2' >foo2
echo 'foo3' >foo3
@@ -120,7 +113,7 @@
{ print }' foo1 foo2 foo3 >foo4echo 'foo1
foo3' >foo5
-diff foo4 foo5 || echo 'BAD: T.argv zap ARGV[2]'
+diff foo4 foo5 || echo 'BAD: T.argv: zap ARGV[2]' >[1=2]
echo hi > foo1 ; mv foo1 foo2
$awk 'BEGIN { ARGV[1] = "foo2" ; print FILENAME }@@ -127,7 +120,7 @@
{ print FILENAME }' foo1 >foo3echo '
foo2' >foo4
-diff foo3 foo4 || echo 'BAD: T.argv startup FILENAME'
+diff foo3 foo4 || echo 'BAD: T.argv: startup FILENAME' >[1=2]
# assumes that startup FILENAME is ""
@@ -148,7 +141,7 @@
for (i in ARGV)
printf("ARGV[%d] is %s\n", i, ARGV[i])}' >foo2
-diff foo1 foo2 || echo 'BAD: T.argv delete ARGV[2]'
+diff foo1 foo2 || echo 'BAD: T.argv: delete ARGV[2]' >[1=2]
# deleting ARGV used to trigger a use-after-free crash when awk
# iterates over it to read files.
@@ -169,4 +162,4 @@
awkstatus=$status
if(! ~ $awkstatus '' || ! diff /dev/null foo4)
- echo 'BAD: T.argv delete ARGV'
+ echo 'BAD: T.argv: delete ARGV' >[1=2]
--- /dev/null
+++ b/test/T.argv.broken
@@ -1,0 +1,8 @@
+#!/bin/rc
+echo T.argv: misc tests of argc and argv >[1=2]
+
+echo >foo0
+echo 'name=value
+name=value' >foo1
+$awk 'BEGIN { print ARGV[1] } { print ARGV[1] }' 'name=value' foo0 >foo2+diff foo1 foo2 || echo 'BAD: T.argv: assignment operand modified' >[1=2]
--- a/test/T.arnold
+++ b/test/T.arnold
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.arnold: test fixes by Arnold Robbins 8/18
+echo T.arnold: test fixes by Arnold Robbins 8/18 >[1=2]
# for which many thanks
rm -rf arnold-fixes
@@ -6,10 +6,15 @@
tar xf arnold-fixes.tar
cd arnold-fixes
-for(i in *.awk){+files=(\
+ string-conv.awk\
+ system-status.awk\
+)
+
+for(i in $files){ name=`{basename $i .awk} if(! ~ $name system-status){$awk -f $name.awk >foo.$name
- diff $name.ok foo.$name || echo 'BAD: T.arnold ('^$name^')'+ diff $name.ok foo.$name || echo 'BAD: T.arnold: '^$name >[1=2]
}
}
--- /dev/null
+++ b/test/T.arnold.broken
@@ -1,0 +1,23 @@
+#!/bin/rc
+echo T.arnold: test fixes by Arnold Robbins 8/18 >[1=2]
+# for which many thanks
+
+rm -rf arnold-fixes
+tar xf arnold-fixes.tar
+cd arnold-fixes
+
+files=(\
+ a-format.awk\
+ decr-NF.awk\
+ ofs-rebuild.awk\
+ space.awk\
+ unary-plus.awk\
+)
+
+for(i in $files){+ name=`{basename $i .awk}+ if(! ~ $name system-status){+ $awk -f $name.awk >foo.$name
+ diff $name.ok foo.$name || echo 'BAD: T.arnold: '^$name >[1=2]
+ }
+}
--- a/test/T.builtin
+++ b/test/T.builtin
@@ -1,9 +1,9 @@
#!/bin/rc
-echo T.builtin: test miscellaneous builtin functions
+echo T.builtin: test miscellaneous builtin functions >[1=2]
$awk 'BEGIN { print index(123, substr(123, 2)) }' >foo1echo 2 >foo2
-diff foo1 foo2 || echo 'BAD: T.builtin (index/substr)'
+diff foo1 foo2 || echo 'BAD: T.builtin: index/substr' >[1=2]
$awk 'BEGIN {pi = 2 * atan2(1, 0)
@@ -11,7 +11,7 @@
pi, sin(pi), cos(pi/2), exp(log(pi)), log(exp(10)))
}' >foo1
echo '3.14159 0.000 0.000 3.14159 10.000' >foo2
-diff foo1 foo2 || echo 'BAD: T.builtin (sin/cos)'
+diff foo1 foo2 || echo 'BAD: T.builtin: sin/cos' >[1=2]
$awk 'BEGIN {s = srand(1) # set a real random start
@@ -21,47 +21,46 @@
for (i = 1; i <= 10; i++)
print rand() >"foo2"
}'
-diff foo1 foo2 || echo 'BAD: T.builtin (rand)'
+diff foo1 foo2 || echo 'BAD: T.builtin: rand' >[1=2]
echo 'hello, WORLD!' |
$awk '{ printf("%s|%s|%s\n", tolower($0), toupper($0), $0)}' >foo1echo 'hello, world!|HELLO, WORLD!|hello, WORLD!' >foo2
-diff foo1 foo2 || echo 'BAD: T.builtin (toupper/tolower)'
+diff foo1 foo2 || echo 'BAD: T.builtin: toupper/tolower' >[1=2]
-
echo 'Dürst' |
$awk '{ printf("%s|%s|%s\n", tolower($0), toupper($0), $0)}' >foo1echo 'dürst|DÜRST|Dürst' >foo2
-diff foo1 foo2 || echo 'BAD: T.builtin (toupper/tolower) for utf-8'
+diff foo1 foo2 || echo 'BAD: T.builtin: toupper/tolower for utf-8' >[1=2]
$awk 'BEGIN { print 0.01 }' /dev/null >foo1echo '0.01' >foo2
-diff foo1 foo2 || echo 'BAD: T.builtin LC_NUMERIC radix (.) handling'
+diff foo1 foo2 || echo 'BAD: T.builtin: LC_NUMERIC radix (.) handling' >[1=2]
$awk 'BEGIN { j = 1; sprintf("%d", 99, ++j) # does j get incremented?if (j != 2)
- print "BAD: T.builtin (printf arg list not evaluated)"
-}'
+ print "BAD: T.builtin: printf arg list not evaluated"
+}' >[1=2]
$awk 'BEGIN { j = 1; substr("", 1, ++j) # does j get incremented?if (j != 2)
- print "BAD: T.builtin (substr arg list not evaluated)"
-}'
+ print "BAD: T.builtin: substr arg list not evaluated"
+}' >[1=2]
$awk 'BEGIN {j = 1; sub(/1/, ++j, z) # does j get incremented?
if (j != 2)
- print "BAD: T.builtin (sub() arg list not evaluated)"
-}'
+ print "BAD: T.builtin: sub() arg list not evaluated"
+}' >[1=2]
$awk 'BEGIN { j = 1; length("zzzz", ++j, ++j) # does j get incremented?if (j != 3)
- print "BAD: T.builtin (excess length args not evaluated)"
+ print "BAD: T.builtin: excess length args not evaluated"
}' >[2]foo
-grep 'too many arg' foo >/dev/null || echo 'T.bad: too many args not caught'
+grep 'too many arg' foo >/dev/null || echo 'BAD: T.builtin: too many args not caught' >[1=2]
echo 'a
a b
@@ -70,19 +69,4 @@
2
3' >foo1
$awk '{ n = split($0, x); print length(x) }' <foo0 >foo2-diff foo1 foo2 || echo 'BAD: T.builtin length array'
-
-# Test for backslash handling
-cat <<'EOF' >foo0
-BEGIN {- print "A\
-B";
- print "CD"
-}
-EOF
-$awk -f foo0 /dev/null >foo1
-cat <<'EOF' >foo2
-AB
-CD
-EOF
-diff foo1 foo2 || echo 'BAD: T.builtin continuation handling (backslash)'
+diff foo1 foo2 || echo 'BAD: T.builtin: length array' >[1=2]
--- /dev/null
+++ b/test/T.builtin.broken
@@ -1,0 +1,17 @@
+#!/bin/rc
+echo T.builtin: test miscellaneous builtin functions >[1=2]
+
+# Test for backslash handling
+cat <<'EOF' >foo0
+BEGIN {+ print "A\
+B";
+ print "CD"
+}
+EOF
+$awk -f foo0 /dev/null >foo1
+cat <<'EOF' >foo2
+AB
+CD
+EOF
+diff foo1 foo2 || echo 'BAD: T.builtin: continuation handling (backslash)' >[1=2]
--- a/test/T.chem
+++ b/test/T.chem
@@ -1,8 +1,8 @@
#!/bin/rc
-echo T.chem: test chem.awk
+echo T.chem: test chem.awk >[1=2]
for(i in lsd1.p penicil.p res.p){$awk -f chem.awk $i >foo1
$oldawk -f chem.awk $i >foo2
- diff foo1 foo2 || echo 'BAD: T.chem on '^$i
+ diff foo1 foo2 || echo 'BAD: T.chem: '^$i >[1=2]
}
--- a/test/T.close
+++ b/test/T.close
@@ -1,37 +1,13 @@
#!/bin/rc
-echo T.close: test close built-in
+echo T.close: test close built-in >[1=2]
sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
rm -f foo
$awk '{ print >>"foo"; close("foo") }' foo.txt-diff foo.txt foo || echo 'BAD: T.close (1)'
+diff foo.txt foo || echo 'BAD: T.close: 1' >[1=2]
ls -l >foo
tail -1 foo >foo1
$awk '{ print >"foo2"; close("foo2") }' foo-diff foo1 foo2 || echo 'BAD: T.close (2)'
-
-echo 0 >foo1
-$awk ' # non-accessible file
- BEGIN { getline <"foo.txt"; print close("foo.txt"); }-' >foo2
-diff foo1 foo2 || echo 'BAD: T.close (3)'
-
-echo -1 >foo1
-$awk ' # file not opened
- BEGIN { print close("glotch"); }-' >foo2
-diff foo1 foo2 || echo 'BAD: T.close (4)'
-
-echo 0 >foo1
-$awk ' # normal close
- BEGIN { print "hello" > "foo"; print close("foo"); }-' >foo2
-diff foo1 foo2 || echo 'BAD: T.close (5)'
-
-echo 0 >foo1
-$awk ' # normal close
- BEGIN { print "hello" | "cat >foo"; print close("cat >foo"); }-' >foo2
-diff foo1 foo2 || echo 'BAD: T.close (6)'
+diff foo1 foo2 || echo 'BAD: T.close: 2' >[1=2]
--- /dev/null
+++ b/test/T.close.broken
@@ -1,0 +1,28 @@
+#!/bin/rc
+echo T.close: test close built-in >[1=2]
+
+sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
+
+echo 0 >foo1
+$awk ' # non-accessible file
+ BEGIN { getline <"foo.txt"; print close("foo.txt"); }+' >foo2
+diff foo1 foo2 || echo 'BAD: T.close: 3' >[1=2]
+
+echo -1 >foo1
+$awk ' # file not opened
+ BEGIN { print close("glotch"); }+' >foo2
+diff foo1 foo2 || echo 'BAD: T.close: 4' >[1=2]
+
+echo 0 >foo1
+$awk ' # normal close
+ BEGIN { print "hello" > "foo"; print close("foo"); }+' >foo2
+diff foo1 foo2 || echo 'BAD: T.close: 5' >[1=2]
+
+echo 0 >foo1
+$awk ' # normal close
+ BEGIN { print "hello" | "cat >foo"; print close("cat >foo"); }+' >foo2
+diff foo1 foo2 || echo 'BAD: T.close: 6' >[1=2]
--- a/test/T.clv
+++ b/test/T.clv
@@ -1,8 +1,6 @@
#!/bin/rc
-echo T.clv: check command-line variables
+echo T.clv: check command-line variables >[1=2]
-rm -f core
-
# stdin only, no cmdline asgn
echo 'hello
goodbye' | $awk '
@@ -10,7 +8,7 @@
' >foo1
echo '0
0 hello' >foo2
-diff foo1 foo2 || echo 'BAD: T.clv (stdin only)'
+diff foo1 foo2 || echo 'BAD: T.clv: stdin only' >[1=2]
# cmdline asgn then stdin
echo 'hello
@@ -19,7 +17,7 @@
' 'x=1' >foo1
echo '0
1 hello' >foo2
-diff foo1 foo2 || echo 'BAD: T.clv (x=1 only)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=1 only' >[1=2]
# several cmdline asgn, then stdin
echo 'hello
@@ -28,7 +26,7 @@
' 'x=1' 'x=2' 'x=3' >foo1
echo '0
3 hello' >foo2
-diff foo1 foo2 || echo 'BAD: T.clv (x=3 only)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=3 only' >[1=2]
# several cmdline asgn, then file
echo 'hello
@@ -38,17 +36,17 @@
' 'x=1' 'x=2' 'x=3' foo >foo1
echo '0
3 hello' >foo2
-diff foo1 foo2 || echo 'BAD: T.clv (x=3 only)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=3 only' >[1=2]
# 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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=4 /dev/null' >[1=2]
#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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=5 /dev/null' >[1=2]
#cmdline asgn then file then read
echo 'xxx
@@ -58,7 +56,7 @@
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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=6 /dev/null' >[1=2]
#cmdline asgn then file then read
echo '0
@@ -65,7 +63,7 @@
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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=7 /dev/null' >[1=2]
#cmdline asgn then file then read; _ in commandname
echo '0
@@ -72,68 +70,43 @@
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)'
+diff foo1 foo2 || echo 'BAD: T.clv: _=7A /dev/null' >[1=2]
# 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)'
+grep 'can''t open.*foo' foo2 >/dev/null >[2=1] || echo 'BAD: T.clv: 7B: illegal varname' >[1=2]
# 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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=11' >[1=2]
-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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=12' >[1=2]
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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=12b' >[1=2]
echo 'BEGIN { print x, y, z1 }' >foo0echo 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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=13' >[1=2]
echo 'BEGIN { print x, y, z1 }' >foo0echo 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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=14' >[1=2]
-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 }' >foo0echo '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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=15' >[1=2]
-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)'
-
sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
echo 'BEGIN { print x, y, z1 }@@ -141,35 +114,21 @@
echo '123 abc 10.99
4567' >foo1
$awk -v 'x=123' -v 'y=abc' -v 'z1=10.99' -f foo0 'x=4567' foo.txt >foo2
-diff foo1 foo2 || echo 'BAD: T.clv (x=16)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=16' >[1=2]
-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' foo.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)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=17' >[1=2]
echo 'a
z' >foo1
echo 'hello' | $awk '{print x}' 'x=a\nz' >foo2-diff foo1 foo2 || echo 'BAD: T.clv (x=18)'
+diff foo1 foo2 || echo 'BAD: T.clv: x=18' >[1=2]
# 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)'
-
-$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)'
-
+diff foo1 foo2 || echo 'BAD: T.clv: x=19' >[1=2]
--- /dev/null
+++ b/test/T.clv.broken
@@ -1,0 +1,42 @@
+#!/bin/rc
+echo T.clv: check command-line variables >[1=2]
+
+echo 123 >foo1
+$awk '-vx=123' 'BEGIN { print x }' >foo2+diff foo1 foo2 || echo 'BAD: T.clv: x=11a' >[1=2]
+
+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' >[1=2]
+
+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' >[1=2]
+
+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' >[1=2]
+
+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' >[1=2]
+
+sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
+
+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' foo.txt >foo2
+diff foo1 foo2 || echo 'BAD: T.clv: x=16a' >[1=2]
+
+$awk -vx 'BEGIN {print x}' >foo >[2=1]+grep 'invalid -v option argument: x' foo >/dev/null || echo 'BAD: T.clv: x=20' >[1=2]
+
+$awk -v x 'BEGIN {print x}' >foo >[2=1]+grep 'invalid -v option argument: x' foo >/dev/null || echo 'BAD: T.clv: x=20a' >[1=2]
--- a/test/T.csconcat
+++ b/test/T.csconcat
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.csconcat: test constant string concatenation
+echo T.csconcat: test constant string concatenation >[1=2]
$awk '
BEGIN {@@ -25,4 +25,4 @@
hello world
EOF
-diff foo1 foo2 || echo 'BAD: T.csconcat (1)'
+diff foo1 foo2 || echo 'BAD: T.csconcat: 1' >[1=2]
--- a/test/T.delete
+++ b/test/T.delete
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.delete: misc tests of array deletion
+echo T.delete: misc tests of array deletion >[1=2]
echo '1 2 3 4
1 2 3
@@ -17,4 +17,4 @@
n2 = 0; for (i in x) n2++
print n, n1, n2
}' foo0 >foo1
-diff foo1 foo2 || echo 'BAD: T.delete (1)'
+diff foo1 foo2 || echo 'BAD: T.delete: 1' >[1=2]
--- a/test/T.errmsg
+++ b/test/T.errmsg
@@ -1,15 +1,17 @@
#!/bin/rc
-echo T.errmsg: check some error messages
+echo T.errmsg: check some error messages >[1=2]
ls >foo.glop
-awk=$awk awk '
-{ pat = $0+awk '
+BEGIN{+ awk = ENVIRON["awk"]
+}{+ pat = $0
prog = ""
while (getline x > 0 && x != "")
prog = prog "\n" x
- print sprintf("\n%s ''%s'' <foo.glop >/dev/null >[2]foo",- ENVIRON["awk"], prog)
- print sprintf("grep ''%s'' foo >/dev/null || echo ''BAD: %s'' failed", pat, pat)+ print "\n"awk" ''"prog"'' <foo.glop >/dev/null >[2]foo"
+ print "grep ''"pat"'' foo >/dev/null || echo ''BAD: T.errmsg: "pat"'' >[1=2]"
}
' >foo.rc <<'!!!!'
parsing error
@@ -18,9 +20,6 @@
illegal break, continue, next or nextfile from BEGIN
BEGIN { nextfile }-illegal break, continue, next or nextfile from END
-END { nextfile }-
nextfile is illegal inside a function
function foo() { nextfile }@@ -27,12 +26,6 @@
duplicate argument
function f(i,j,i) { return i }-nonterminated character class
-/[[/
-
-nonterminated character class
-/[]/
-
No closing ] for class
/[\
@@ -39,9 +32,6 @@
No closing ] for class
BEGIN { s = "[x"; if (1 ~ s) print "foo"}-syntax error in regular expression
-BEGIN { if ("x" ~ /$^/) print "ugh" }-
no matching parenthesis
/((.)/
@@ -76,10 +66,6 @@
BEGIN { f(f) } function f() { print "x" }-can''t use function f as argument in f
-BEGIN { f(f) }-function f() { print "x" }-
x is an array, not a function
{ split($0, x) }; function x() {}@@ -179,9 +165,6 @@
calling undefined function foo
BEGIN { foo() }-
-this should print a BAD message
-BEGIN { print }!!!!
rc ./foo.rc
@@ -189,19 +172,16 @@
echo xxx >foo0
$awk '{print x}' 'x=ab' foo0 >foo1 >[2]foo2
-grep 'newline in string' foo2 >/dev/null || echo 'BAD: T.errmsg newline in string'
+grep 'newline in string' foo2 >/dev/null || echo 'BAD: T.errmsg: newline in string' >[1=2]
$awk -safe 'BEGIN{"date" | getline}' >foo >[2]foo2-grep 'cmd | getline is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg cmd|getline unsafe'
+grep 'cmd | getline is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg: cmd|getline unsafe' >[1=2]
$awk -safe 'BEGIN{print >"foo"}' >foo >[2]foo2-grep 'print > is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg print > unsafe'
+grep 'print > is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg: print > unsafe' >[1=2]
$awk -safe 'BEGIN{print >> "foo"}' >foo >[2]foo2-grep 'print >> is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg print >> unsafe'
+grep 'print >> is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg: print >> unsafe' >[1=2]
$awk -safe 'BEGIN{print | "foo"}' >foo >[2]foo2-grep 'print | is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg print | unsafe'
-
-$awk -safe 'BEGIN {system("date")}' >foo >[2]foo2-grep 'system is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg system unsafe'
+grep 'print | is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg: print | unsafe' >[1=2]
--- /dev/null
+++ b/test/T.errmsg.broken
@@ -1,0 +1,39 @@
+#!/bin/rc
+echo T.errmsg: check some error messages >[1=2]
+
+ls >foo.glop
+awk '
+{+ awk = ENVIRON["awk"]
+ pat = $0
+ prog = ""
+ while (getline x > 0 && x != "")
+ prog = prog "\n" x
+ print "\n"awk" ''"prog"'' <foo.glop >/dev/null >[2]foo"
+ print "grep ''"pat"'' foo >/dev/null || echo ''BAD: T.errmsg: "pat"'' >[1=2]"
+}
+' >foo.rc <<'!!!!'
+illegal break, continue, next or nextfile from END
+END { nextfile }+
+nonterminated character class
+/[[/
+
+nonterminated character class
+/[]/
+
+syntax error in regular expression
+BEGIN { if ("x" ~ /$^/) print "ugh" }+
+can''t use function f as argument in f
+BEGIN { f(f) }+function f() { print "x" }+
+this should print a BAD message
+BEGIN { print }+!!!!
+
+rc ./foo.rc
+
+$awk -safe 'BEGIN {system("date")}' >foo >[2]foo2+grep 'system is unsafe' foo2 >/dev/null || echo 'BAD: T.errmsg: system unsafe' >[1=2]
--- a/test/T.exprconv
+++ b/test/T.exprconv
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.exprconv: check conversion of expr to number
+echo T.exprconv: check conversion of expr to number >[1=2]
$awk '
BEGIN { x = (1 > 0); print x@@ -17,4 +17,4 @@
0
1
1' >foo2
-cmp foo1 foo2 || echo 'BAD: T.exprconv (1 > 0, etc.)'
+cmp foo1 foo2 || echo 'BAD: T.exprconv: 1 > 0, etc.' >[1=2]
--- a/test/T.fmt
+++ b/test/T.fmt
@@ -1,23 +1,6 @@
#!/bin/rc
-echo T.fmt: OFMT and CONVFMT tests
+echo T.fmt: OFMT and CONVFMT tests >[1=2]
-echo '0.333333
-0.3 0.142857
-0.33 0.14 0.333333
-0.33 0.14 0.3333333333 0.1428571429 0.333333 ' >foo1
-$awk '
-BEGIN{- print 1/3
- OFMT="%.1g"
- print 1/3, 1/7" "
- OFMT="%.2g"
- x=1/3" "
- print 1/3, 1/7, x
- CONVFMT="%.10f"
- print 1/3, 1/7, 1/3" ", 1/7" ", x
-}' >foo2
-diff foo1 foo2 || echo >[1=2] 'BAD: T.ofmt: bad conversions'
-
echo ' 1' >foo1
$awk 'BEGIN{ split("2 12", x, "2"); print x[1], x[2] }' >foo2-diff foo1 foo2 || echo >[1=2] 'BAD: T.ofmt: undue conversion'
+diff foo1 foo2 || echo >[1=2] 'BAD: T.ofmt: undue conversion' >[1=2]
--- /dev/null
+++ b/test/T.fmt.broken
@@ -1,0 +1,19 @@
+#!/bin/rc
+echo T.fmt: OFMT and CONVFMT tests >[1=2]
+
+echo '0.333333
+0.3 0.142857
+0.33 0.14 0.333333
+0.33 0.14 0.3333333333 0.1428571429 0.333333 ' >foo1
+$awk '
+BEGIN{+ print 1/3
+ OFMT="%.1g"
+ print 1/3, 1/7" "
+ OFMT="%.2g"
+ x=1/3" "
+ print 1/3, 1/7, x
+ CONVFMT="%.10f"
+ print 1/3, 1/7, 1/3" ", 1/7" ", x
+}' >foo2
+diff foo1 foo2 || echo >[1=2] 'BAD: T.ofmt: bad conversions' >[1=2]
--- a/test/T.getline
+++ b/test/T.getline
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.getline: test getline function
+echo T.getline: test getline function >[1=2]
who >foo1
cat foo1 | $awk '
@@ -9,7 +9,7 @@
exit
}
' >foo
-cmp -s foo1 foo || echo 'BAD: T.getline (bare getline)'
+cmp -s foo1 foo || echo 'BAD: T.getline: bare getline' >[1=2]
who >foo1
cat foo1 | $awk '
@@ -19,7 +19,7 @@
exit
}
' >foo
-cmp -s foo1 foo || echo 'BAD: T.getline (getline xxx)'
+cmp -s foo1 foo || echo 'BAD: T.getline: getline xxx' >[1=2]
sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
@@ -30,7 +30,7 @@
exit
}
' >foo
-cmp -s foo.txt foo || echo 'BAD: T.getline (getline <file)'
+cmp -s foo.txt foo || echo 'BAD: T.getline: getline <file' >[1=2]
cat foo.txt | $awk '
BEGIN {@@ -39,7 +39,7 @@
exit
}
' >foo
-cmp -s foo.txt foo || echo 'BAD: T.getline (getline <"-")'
+cmp -s foo.txt foo || echo 'BAD: T.getline: getline <"-"' >[1=2]
$awk '
BEGIN {@@ -48,7 +48,7 @@
exit
}
' foo.txt >foo
-cmp -s foo.txt foo || echo 'BAD: T.getline (getline <arg)'
+cmp -s foo.txt foo || echo 'BAD: T.getline: getline <arg' >[1=2]
$awk '
BEGIN {@@ -57,7 +57,7 @@
exit
}
' foo.txt >foo
-cmp -s foo.txt foo || echo 'BAD: T.getline (getline x <arg)'
+cmp -s foo.txt foo || echo 'BAD: T.getline: getline x <arg' >[1=2]
$awk '
BEGIN {@@ -66,7 +66,7 @@
exit
}
' foo.txt >foo
-cmp -s foo.txt foo || echo 'BAD: T.getline (cat arg | getline)'
+cmp -s foo.txt foo || echo 'BAD: T.getline: cat arg | getline' >[1=2]
$awk '
BEGIN {@@ -75,11 +75,11 @@
exit
}
' foo.txt >foo
-cmp -s foo.txt foo || echo 'BAD: T.getline (cat arg | getline x)'
+cmp -s foo.txt foo || echo 'BAD: T.getline: cat arg | getline x' >[1=2]
$awk ' BEGIN { print getline <"/glop/glop/glop" } ' >fooecho '-1' >foo1
-cmp -s foo foo1 || echo 'BAD: T.getline (non-existent file)'
+cmp -s foo foo1 || echo 'BAD: T.getline: non-existent file' >[1=2]
echo 'false false equal' >foo1
$awk 'BEGIN {@@ -91,9 +91,9 @@
if ($0==$1) printf "equal\n"
else printf "not equal\n"
}' >foo2
-cmp -s foo1 foo2 || echo >[1=2] 'BAD: T.getline bad $0 type in cmd|getline'
+cmp -s foo1 foo2 || echo >[1=2] 'BAD: T.getline bad $0 type in cmd|getline' >[1=2]
echo 'L1
L2' | $awk 'BEGIN { $0="old stuff"; $1="new"; getline x; print}' >foo1echo 'new stuff' >foo2
-cmp -s foo1 foo2 || echo >[1=2] 'BAD: T.getline bad update $0'
+cmp -s foo1 foo2 || echo >[1=2] 'BAD: T.getline bad update $0' >[1=2]
--- a/test/T.lilly
+++ b/test/T.lilly
@@ -1,8 +1,8 @@
#!/bin/rc
-echo T.lilly: miscellaneous RE tests from Bruce Lilly
+echo T.lilly: miscellaneous RE tests from Bruce Lilly >[1=2]
rm -f foo
-$oldawk '
+awk '
BEGIN { awk = ENVIRON["oldawk"] } /./ {print $0 >"foo"
@@ -12,7 +12,7 @@
}' <lilly.progs >foo1 >[2=1]
rm -f foo
-$awk '
+awk '
BEGIN { awk = ENVIRON["awk"] } /./ {print $0 >"foo"
@@ -25,4 +25,4 @@
sed -e 's#'^$oldawk^':##' -e 's/Syntax/syntax/' -e '/warning:/d' foo1 >foo.glop1
sed 's#'^$awk^':##' foo2 >foo.glop2
-diff foo.glop1 foo.glop2 >foo.lilly.diff || echo 'BAD: check foo.lilly.diff'
+diff foo.glop1 foo.glop2 >foo.lilly.diff || echo 'BAD: check foo.lilly.diff' >[1=2]
--- a/test/T.main
+++ b/test/T.main
@@ -1,27 +1,25 @@
#!/bin/rc
-echo T.main: misc tests of arguments in main
+echo T.main: misc tests of arguments in main >[1=2]
-rm -f core
-
# test -d option
-echo hello | $awk -d '{print}' >foo1 || echo 'BAD: T.main awk -d (wanted to) drop core'+echo hello | $awk -d '{print}' >foo1 || echo 'BAD: T.main: awk -d (wanted to) drop core' >[1=2]echo 'a::b::c' >foo
$awk -F:: '{print NF}' foo >foo1echo '3' >foo2
-diff foo1 foo2 || echo 'BAD: awk -F::'
+diff foo1 foo2 || echo 'BAD: T.main: awk -F::' >[1=2]
echo 'a::b::c' >foo
$awk -F :: '{print NF}' foo >foo1echo '3' >foo2
-diff foo1 foo2 || echo 'BAD: awk -F ::'
+diff foo1 foo2 || echo 'BAD: T.main: awk -F ::' >[1=2]
echo 'a b c' >foo
$awk -F t '{print NF}' foo >foo1echo '3' >foo2
-diff foo1 foo2 || echo 'BAD: awk -F (tab)'
+diff foo1 foo2 || echo 'BAD: T.main: awk -F (tab)' >[1=2]
echo 'atabbtabc' >foo
$awk -F tab '{print NF}' foo >foo1echo '3' >foo2
-diff foo1 foo2 || echo 'BAD: awk -F tab'
+diff foo1 foo2 || echo 'BAD: T.main: awk -F tab' >[1=2]
--- a/test/T.recache
+++ b/test/T.recache
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.recache: test re cache in b.c
+echo T.recache: test re cache in b.c >[1=2]
# thanks to ross ridge for this horror
echo b >foo1
@@ -29,4 +29,4 @@
print x
}
' >foo2
-diff foo1 foo2 || echo 'BAD: T.recache'
+diff foo1 foo2 || echo 'BAD: T.recache' >[1=2]
--- a/test/T.redir
+++ b/test/T.redir
@@ -1,23 +1,23 @@
#!/bin/rc
-echo T.redir: test redirections
+echo T.redir: test redirections >[1=2]
sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
$awk '{ print >"foo" }' foo.txt-diff foo foo.txt || echo 'BAD: T.redir (print >"foo")'
+diff foo foo.txt || echo 'BAD: T.redir: print >"foo"' >[1=2]
rm -f foo
$awk '{ print >>"foo" }' foo.txt-diff foo foo.txt || echo 'BAD: T.redir (print >>"foo")'
+diff foo foo.txt || echo 'BAD: T.redir: print >>"foo"' >[1=2]
rm -f foo
$awk 'NR%2 == 1 { print >>"foo" } NR%2 == 0 { print >"foo" }' foo.txt-diff foo foo.txt || echo 'BAD: T.redir (print > and >>"foo")'
+diff foo foo.txt || echo 'BAD: T.redir: print > and >>"foo"' >[1=2]
rm -f foo
$awk '{ print | "cat >foo" }' foo.txt-diff foo foo.txt || echo 'BAD: T.redir (print | "cat >foo")'
+diff foo foo.txt || echo 'BAD: T.redir: print | "cat >foo"' >[1=2]
# tests flush of stdout before opening pipe
echo ' head
@@ -26,12 +26,12 @@
$awk 'BEGIN { print " head"for (i = 1; i < 3; i++)
print i | "sort" }' >foo2
-diff foo1 foo2 || echo 'BAD: T.redir (buffering)'
+diff foo1 foo2 || echo 'BAD: T.redir: buffering' >[1=2]
$awk '{ print >"/fd/2" }' foo.txt >foo1 >[2]foo2-diff foo2 foo.txt || echo 'BAD: T.redir (print >"/fd/2")'
-diff foo1 /dev/null || echo 'BAD: T.redir (print >"/fd/2")'
+diff foo2 foo.txt || echo 'BAD: T.redir: print >"/fd/2"'
+diff foo1 /dev/null || echo 'BAD: T.redir: print >"/fd/2"' >[1=2]
$awk '{ print >"/fd/1" }' foo.txt >foo1 >[2]foo2-diff foo1 foo.txt || echo 'BAD: T.redir (print >"/fd/1")'
-diff foo2 /dev/null || echo 'BAD: T.redir (print >"/fd/2")'
+diff foo1 foo.txt || echo 'BAD: T.redir: print >"/fd/1"'
+diff foo2 /dev/null || echo 'BAD: T.redir: print >"/fd/2"' >[1=2]
--- a/test/T.split
+++ b/test/T.split
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.split: misc tests of field splitting and split command
+echo T.split: misc tests of field splitting and split command >[1=2]
TEMP0=foo0
TEMP1=foo1
@@ -6,23 +6,6 @@
TEMP2=foo2
$awk 'BEGIN {- # Assign string to $0, then change FS.
- FS = ":"
- $0="a:bc:def"
- FS = "-"
- print FS, $1, NF
-
- # Assign number to $0, then change FS.
- FS = "2"
- $0=1212121
- FS="3"
- print FS, $1, NF
-}' > $TEMP1
-echo '- a 3
-3 1 4' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split 0.1'
-
-$awk 'BEGIN {# FS changes after getline.
FS = ":"
"echo a:bc:def" | getline
@@ -30,7 +13,7 @@
print FS, $1, NF
}' > $TEMP1
echo '- a 3' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split 0.2'
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: 0.2' >[1=2]
echo '
a
@@ -47,56 +30,12 @@
2
3
4' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split 0.3'
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: 0.3' >[1=2]
# getline var shouldn't impact fields.
sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
-echo 'f b a' > $TEMP0
-$awk '{- FS = ":"
- getline a < "foo.txt"
- print $1
-}' $TEMP0 > $TEMP1
-echo 'f' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split 0.4'
-
-echo 'a b c d
-foo
-e f g h i
-bar' > $TEMP0
-$awk '{- FS=":"
- getline v
- print $2, NF
- FS=" "
-}' $TEMP0 > $TEMP1
-echo 'b 4
-f 5' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split 0.5'
-
-echo 'a.b.c=d.e.f
-g.h.i=j.k.l
-m.n.o=p.q.r' > $TEMP0
-echo 'b
-h
-n' > $TEMP1
-$awk 'BEGIN { FS="=" } { FS="."; $0=$1; print $2; FS="="; }' $TEMP0 > $TEMP2-diff $TEMP1 $TEMP2 || echo 'BAD: T.split (record assignment 1)'
-
-echo 'a.b.c=d.e.f
-g.h.i=j.k.l
-m.n.o=p.q.r' > $TEMP0
-echo 'd.e.f
-b
-j.k.l
-h
-p.q.r
-n' > $TEMP1
-$awk 'BEGIN { FS="=" } { print $2; FS="."; $0=$1; print $2; FS="="; }' $TEMP0 > $TEMP2-diff $TEMP1 $TEMP2 || echo 'BAD: T.split (record assignment 2)'
-
echo 'abc
de
f
@@ -116,25 +55,12 @@
print s
}' $TEMP0 > $TEMP1
-diff $TEMP0 $TEMP1 || echo 'BAD: T.split 1'
+diff $TEMP0 $TEMP1 || echo 'BAD: T.split: 1' >[1=2]
# assumes same test.temp.0! bad design
$awk '
-{ n = split($0, x, //)- m = length($0)
- if (m != n) print "error 1", NR
- s = ""
- for (i = 1; i <= m; i++)
- s = s x[i]
- if (s != $0) print "error 2", NR
- print s
-}' $TEMP0 > $TEMP1
-
-diff $TEMP0 $TEMP1 || echo 'BAD: T.split //'
-
-$awk '
BEGIN { FS = "" } { n = split($0, x) # will be split with FSm = length($0)
@@ -146,7 +72,7 @@
print s
}' $TEMP0 > $TEMP2
-diff $TEMP0 $TEMP2 || echo 'BAD: T.split 2'
+diff $TEMP0 $TEMP2 || echo 'BAD: T.split: 2' >[1=2]
# assumes same test.temp.0!
@@ -162,7 +88,7 @@
print s
}' $TEMP0 > $TEMP2
-diff $TEMP0 $TEMP2 || echo 'BAD: T.split 3'
+diff $TEMP0 $TEMP2 || echo 'BAD: T.split: 3' >[1=2]
$awk '
@@ -176,7 +102,7 @@
echo '2
2
2' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split 4'
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: 4' >[1=2]
rm -f $TEMP1 $TEMP2 $TEMP3
@@ -191,7 +117,7 @@
1
2
3' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split null 3rd arg'
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: null 3rd arg' >[1=2]
rm -f $TEMP1 $TEMP2 $TEMP3
$awk 'BEGIN {@@ -200,7 +126,7 @@
}' > $TEMP1
echo '2 a b' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split(a[1],a)'
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: a[1],a' >[1=2]
$awk 'BEGIN {a = "cat\n\n\ndog"
@@ -208,4 +134,4 @@
print b[1], b[2]
}' > $TEMP1
echo 'cat dog' > $TEMP2
-diff $TEMP1 $TEMP2 || echo 'BAD: T.split(a, b, "[\r\n]+")'
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: a, b, "[\r\n]+"' >[1=2]
--- /dev/null
+++ b/test/T.split.broken
@@ -1,0 +1,92 @@
+#!/bin/rc
+echo T.split: misc tests of field splitting and split command >[1=2]
+
+TEMP0=foo0
+TEMP1=foo1
+TEMP2=foo2
+
+$awk 'BEGIN {+ # Assign string to $0, then change FS.
+ FS = ":"
+ $0="a:bc:def"
+ FS = "-"
+ print FS, $1, NF
+
+ # Assign number to $0, then change FS.
+ FS = "2"
+ $0=1212121
+ FS="3"
+ print FS, $1, NF
+}' > $TEMP1
+echo '- a 3
+3 1 4' > $TEMP2
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: 0.1' >[1=2]
+
+# getline var shouldn't impact fields.
+
+sed 1000q /lib/ucd/UnicodeData.txt >foo.txt
+
+echo 'f b a' > $TEMP0
+$awk '{+ FS = ":"
+ getline a < "foo.txt"
+ print $1
+}' $TEMP0 > $TEMP1
+echo 'f' > $TEMP2
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: 0.4' >[1=2]
+
+echo 'a b c d
+foo
+e f g h i
+bar' > $TEMP0
+$awk '{+ FS=":"
+ getline v
+ print $2, NF
+ FS=" "
+}' $TEMP0 > $TEMP1
+echo 'b 4
+f 5' > $TEMP2
+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: 0.5' >[1=2]
+
+echo 'a.b.c=d.e.f
+g.h.i=j.k.l
+m.n.o=p.q.r' > $TEMP0
+echo 'b
+h
+n' > $TEMP1
+$awk 'BEGIN { FS="=" } { FS="."; $0=$1; print $2; FS="="; }' $TEMP0 > $TEMP2+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: record assignment 1' >[1=2]
+
+echo 'a.b.c=d.e.f
+g.h.i=j.k.l
+m.n.o=p.q.r' > $TEMP0
+echo 'd.e.f
+b
+j.k.l
+h
+p.q.r
+n' > $TEMP1
+$awk 'BEGIN { FS="=" } { print $2; FS="."; $0=$1; print $2; FS="="; }' $TEMP0 > $TEMP2+diff $TEMP1 $TEMP2 || echo 'BAD: T.split: record assignment 2' >[1=2]
+
+echo 'abc
+de
+f
+
+ ' > $TEMP0
+who | sed 10q >> $TEMP0
+sed 10q foo.txt >> $TEMP0
+
+$awk '
+{ n = split($0, x, //)+ m = length($0)
+ if (m != n) print "error 1", NR
+ s = ""
+ for (i = 1; i <= m; i++)
+ s = s x[i]
+ if (s != $0) print "error 2", NR
+ print s
+}' $TEMP0 > $TEMP1
+
+diff $TEMP0 $TEMP1 || echo 'BAD: T.split: //' >[1=2]
--- a/test/T.system
+++ b/test/T.system
@@ -1,5 +1,5 @@
#!/bin/rc
-echo T.system: test system built-in
+echo T.system: test system built-in >[1=2]
rm -f foo
$awk 'BEGIN {@@ -11,4 +11,4 @@
echo $status | sed 's/^.*: //' >>foo
echo '1
2' >foo1
-diff foo foo1 || echo 'BAD: T.system (1)'
+diff foo foo1 || echo 'BAD: T.system: 1' >[1=2]
--- /dev/null
+++ b/test/kwa.rc
@@ -1,0 +1,59 @@
+#!/bin/rc
+rfork e
+if(~ $#oldawk 0)
+ oldawk=awk
+if(~ $#awk 0)
+ awk=kwa
+
+fn check{+ if(! cmp -s $1 $2){+ echo BAD: $3 >[2=1]
+ diff -b $1 $2 | sed 's/^/ /;10q'
+ }
+ if not
+ rm $1 $2
+ status=()
+}
+
+echo 'p.*: book tests' >[1=2]
+for(i in p.*){+ $oldawk -f $i test.countries test.countries >foo1.$i >[2=1]
+ $awk -f $i test.countries test.countries >foo2.$i >[2=1]
+ check foo?.$i $i
+}
+
+broken=(\
+ t.gsub4 \
+ t.ofmt \
+)
+echo 't.*: general-purpose tests' >[1=2]
+for(i in t.*){+ if(! ~ $i $broken){+ $oldawk -f $i test.data >foo1.$i >[2=1]
+ $awk -f $i test.data >foo2.$i >[2=1]
+ check foo?.$i $i
+ }
+ if not
+ status=()
+}
+
+broken=(\
+ T.expr \
+ T.flags \
+ T.func \
+ T.int-expr \
+ T.latin1 \
+ T.misc \
+ T.nextfile \
+ T.overflow \
+ T.re \
+ T.sub \
+ T.utf \
+ T.utfre \
+)
+for(i in T.*){+ if(! ~ $i $broken *.broken)
+ ./$i
+ if not
+ status=()
+}
--- /dev/null
+++ b/test/mkfile
@@ -1,0 +1,8 @@
+</$objtype/mkfile
+
+TEST=kwa
+
+</sys/src/cmd/mktest
+
+clean:V:
+ rm -rf $CLEANFILES arnold-fixes foo*
--
⑨