shithub: kwa

Download patch

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)'
--