shithub: kwa

Download patch

ref: edee032b5ea8bdf6dd56b81f9ea0e2efc2750bc5
parent: 3206ebbc2fbd2d489d12a559b5d4e68fdfdc5ffc
author: qwx <qwx@sciops.net>
date: Wed Jan 7 18:41:42 EST 2026

test: further refactor

--- a/test/T.overflow
+++ b/test/T.overflow
@@ -1,5 +1,5 @@
 #!/bin/rc
-echo T.overflow: test some overflow conditions
+echo T.overflow: test some overflow conditions >[1=2]
 
 $awk 'BEGIN {
  	for (i = 0; i < 1000; i++) printf("abcdefghijklmnopqsrtuvwxyz")
@@ -7,7 +7,7 @@
  	exit
 }' >foo1
 $awk '{print}' foo1 >foo2
-cmp -s foo1 foo2 || echo 'BAD: T.overflow record 1'
+cmp -s foo1 foo2 || echo 'BAD: T.overflow: record 1' >[1=2]
 
 echo 'abcdefghijklmnopqsrtuvwxyz' >foo1
 echo hello | $awk '
@@ -15,7 +15,7 @@
    $0 = s
    print $1
  }'  >foo2
-cmp -s foo1 foo2 || echo 'BAD: T.overflow abcdef'
+cmp -s foo1 foo2 || echo 'BAD: T.overflow: abcdef' >[1=2]
 
 # default input record 3072, fields 200:
 $awk '
@@ -27,7 +27,7 @@
 	}
 } ' >foo1
 $awk '{$1 = " 123456789"; print}' foo1 >foo2
-cmp -s foo1 foo2 || echo 'BAD: T.overflow -mr -mf set $1'
+cmp -s foo1 foo2 || echo 'BAD: T.overflow: -mr -mf set $1' >[1=2]
 
 $awk '
 BEGIN {
@@ -40,28 +40,8 @@
 $awk  '{print NF}' foo >foo1
 echo '500
 500' >foo2
-cmp -s foo1 foo2 || echo 'BAD: T.overflow -mr -mf NF'
+cmp -s foo1 foo2 || echo 'BAD: T.overflow: -mr -mf NF' >[1=2]
 
-rm -f core
-# this should not drop core
-$awk 'BEGIN {
-	for (i = 1; i < 1000; i++) s = s "a-z"
-	if ("x" ~ "[" s "]")
-		print "ugh"
-}' >foo >[2]foo
-test -r core && echo >[1=2] "BAD: T.overflow too long char class dropped core"
-
-echo 4000004 >foo1
-$awk '
-BEGIN {
-	x1 = sprintf("%1000000s\n", "hello")
-	x2 = sprintf("%-1000000s\n", "world")
-	x3 = sprintf("%1000000.1000000s\n", "goodbye")
-	x4 = sprintf("%-1000000.1000000s\n", "goodbye")
-	print length(x1 x2 x3 x4)
-}' >foo2
-cmp -s foo1 foo2 || echo 'BAD: T.overflow huge sprintfs'
-
 echo 0 >foo1
 $awk '
 BEGIN {
@@ -74,13 +54,4 @@
 		n++
 	print n
 }' >foo2
-cmp -s foo1 foo2 || echo 'BAD: T.overflow big array'
-
-echo x >foo1
-$awk '{print $40000000000000}' <foo1 >foo2 >[2]foo
-grep 'out of range field' foo >/dev/null || echo >[1=2] 'BAD: T.overflow \$400000'
-
-rm foo*
-$awk 'BEGIN { for (i=1; i <= 1000; i++) print i >("foo" i) }'
-ls foo* | grep '1000' >/dev/null || echo >[1=2] 'BAD: T.overflow openfiles'
-rm foo*
+cmp -s foo1 foo2 || echo 'BAD: T.overflow: big array' >[1=2]
--- /dev/null
+++ b/test/T.overflow.broken
@@ -1,0 +1,43 @@
+#!/bin/rc
+echo T.overflow: test some overflow conditions >[1=2]
+
+$awk 'BEGIN {
+	for (i = 1; i < 1000; i++) s = s "a-z"
+	if ("x" ~ "[" s "]")
+		print "ugh"
+}' >foo >[2]foo2
+grep . foo2 >[1=2] && echo 'BAD: T.overflow: too long char class' >[1=2]
+
+echo 4000004 >foo1
+$awk '
+BEGIN {
+	x1 = sprintf("%1000000s\n", "hello")
+	x2 = sprintf("%-1000000s\n", "world")
+	x3 = sprintf("%1000000.1000000s\n", "goodbye")
+	x4 = sprintf("%-1000000.1000000s\n", "goodbye")
+	print length(x1 x2 x3 x4)
+}' >foo2
+cmp -s foo1 foo2 || echo 'BAD: T.overflow: huge sprintfs' >[1=2]
+
+echo 0 >foo1
+$awk '
+BEGIN {
+	for (i = 0; i < 100000; i++)
+		x[i] = i
+	for (i in x)
+		delete x[i]
+	n = 0
+	for (i in x)
+		n++
+	print n
+}' >foo2
+cmp -s foo1 foo2 || echo 'BAD: T.overflow: big array' >[1=2]
+
+echo x >foo1
+$awk '{print $40000000000000}' <foo1 >foo2 >[2]foo
+grep 'out of range field' foo >/dev/null || echo >[1=2] 'BAD: T.overflow: \$400000' >[1=2]
+
+rm -f foo_x*
+$awk 'BEGIN { for (i=1; i <= 1000; i++) print i >("foo_x" i) }'
+ls foo_x* | grep '1000' >/dev/null || echo >[1=2] 'BAD: T.overflow: openfiles' >[1=2]
+rm foo_x*
--- a/test/kwa.rc
+++ b/test/kwa.rc
@@ -22,13 +22,9 @@
 	check foo?.$i $i
 }
 
-broken=(\
-	t.gsub4 \
-	t.ofmt \
-)
 echo 't.*: general-purpose tests' >[1=2]
 for(i in t.*){
-	if(! ~ $i $broken){
+	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
@@ -45,7 +41,6 @@
 	T.latin1 \
 	T.misc \
 	T.nextfile \
-	T.overflow \
 	T.re \
 	T.sub \
 	T.utf \
--- a/test/t.gsub4
+++ /dev/null
@@ -1,4 +1,0 @@
-length($1) == 0 { next }
-
-{gsub("[" $1 "]","(&)"); print}
-{gsub("[" $1 "]","(\\&)"); print}
--- /dev/null
+++ b/test/t.gsub4.broken
@@ -1,0 +1,4 @@
+length($1) == 0 { next }
+
+{gsub("[" $1 "]","(&)"); print}
+{gsub("[" $1 "]","(\\&)"); print}
--- a/test/t.ofmt
+++ /dev/null
@@ -1,2 +1,0 @@
-BEGIN	{OFMT="%.5g"}
-	{print $1+0}
--- /dev/null
+++ b/test/t.ofmt.broken
@@ -1,0 +1,2 @@
+BEGIN	{OFMT="%.5g"}
+	{print $1+0}
--