ref: d38caa1bee4fc59e86f2cc1de2787d319ac2bffe
parent: 71320bfe1d69359a5bc816b16b5c5781f6cfb55e
author: qwx <qwx@sciops.net>
date: Sat Sep 27 06:54:36 EDT 2025
add more tests
--- /dev/null
+++ b/test/T.close
@@ -1,0 +1,35 @@
+#!/bin/rc
+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)'
+
+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 <"/lib/theo"; print close("/lib/theo"); }+' >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)'
--- /dev/null
+++ b/test/T.main
@@ -1,0 +1,27 @@
+#!/bin/rc
+echo T.main: misc tests of arguments in main
+
+rm -f core
+
+# test -d option
+echo hello | $awk -d '{print}' >foo1 || echo 'BAD: T.main awk -d (wanted to) drop core'+
+echo 'a::b::c' >foo
+$awk -F:: '{print NF}' foo >foo1+echo '3' >foo2
+diff foo1 foo2 || echo 'BAD: awk -F::'
+
+echo 'a::b::c' >foo
+$awk -F :: '{print NF}' foo >foo1+echo '3' >foo2
+diff foo1 foo2 || echo 'BAD: awk -F ::'
+
+echo 'a b c' >foo
+$awk -F t '{print NF}' foo >foo1+echo '3' >foo2
+diff foo1 foo2 || echo 'BAD: awk -F (tab)'
+
+echo 'atabbtabc' >foo
+$awk -F tab '{print NF}' foo >foo1+echo '3' >foo2
+diff foo1 foo2 || echo 'BAD: awk -F tab'
--- /dev/null
+++ b/test/T.recache
@@ -1,0 +1,32 @@
+#!/bin/rc
+echo T.recache: test re cache in b.c
+ # thanks to ross ridge for this horror
+
+echo b >foo1
+$awk '
+BEGIN {+ #
+ # Fill up DFA cache with run-time REs that have all been
+ # used twice.
+ #
+ CACHE_SIZE=64
+ for(i = 0; i < CACHE_SIZE; i++) {+ for(j = 0; j < 2; j++) {+ "" ~ i "";
+ }
+ }
+ #
+ # Now evalutate an expression that uses two run-time REs
+ # that have never been used before. The second RE will
+ # push the first out of the cache while the first RE is
+ # still needed.
+ #
+ x = "a"
+ reg1 = "[Aa]"
+ reg2 = "A"
+ sub(reg1, x ~ reg2 ? "B" : "b", x)
+
+ print x
+}
+' >foo2
+diff foo1 foo2 || echo 'BAD: T.recache'
--- /dev/null
+++ b/test/T.system
@@ -1,0 +1,14 @@
+#!/bin/rc
+echo T.system: test system built-in
+
+rm -f foo
+$awk 'BEGIN {+ n = system("exit 3")+ print n
+ exit n+1 ""
+}
+' >foo
+echo $status | sed 's/^.*: //' >>foo
+echo '1
+2' >foo1
+diff foo foo1 || echo 'BAD: T.system (1)'
--
⑨