]> git.draconx.ca Git - cdecl99.git/blobdiff - tests/stress.at
tests: Avoid shell limitations in huge input tests.
[cdecl99.git] / tests / stress.at
index 605a69ac27b6c3ebe2f047130df5476fa2c90003..7fa620dbf1c3544fe8b8ca9c42f3c5956711d3b6 100644 (file)
@@ -96,27 +96,8 @@ AT_CLEANUP
 # Check that we can parse declarations with more than 10000 specifiers.
 AT_SETUP([Excessive specifiers])
 
-s="const"
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
-  AS_VAR_APPEND([s], [" $s"])
-done
-
-cat >test.dat <<EOF
-explain $s int
-explain int $s
-type $s int
-type int $s
-EOF
-
-s="inline"
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
-  AS_VAR_APPEND([s], [" $s"])
-done
-cat >>test.dat <<EOF
-declare f as $s function returning int
-EOF
-
-AT_CHECK([cdecl99 -f test.dat], [0],
+AT_CHECK([gunzip -c "$srcdir/tests/data/manyspec.gz" >test.dat || exit 77
+cdecl99 -f test.dat], [0],
 [[type const int
 type const int
 const int
@@ -135,6 +116,14 @@ AT_DATA([check.awk],
 BEGIN { FS = "@"; runstart = 0; }
 END { finish_run(NR); }
 
+gsub(/,[^,)]*/, "~") {
+  while (match($0, /~+/) > 0) {
+    l = substr($0, 1, RSTART-1);
+    r = substr($0, RSTART+RLENGTH);
+    $0 = l ", [plus " RLENGTH " more parameters]" r;
+  }
+}
+
 $0 != lastline {
   finish_run(NR-1);
   lastline = $0;
@@ -149,20 +138,14 @@ function finish_run(nr) {
 }
 ]])
 
-a="a"
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do
-  AS_VAR_APPEND([a], [",$a"])
-done
-
-cat >test.dat <<EOF
-explain int $a
-EOF
-
-AT_CHECK([cdecl99 -f test.dat >test.out; status=$?;
+AT_CHECK([gunzip -c "$srcdir/tests/data/manydecl.gz" >test.dat || exit 77
+cdecl99 -f test.dat >test.out; status=$?;
 $AWK -f check.awk test.out
 exit $status], [0],
 [[declare a as int
 [repeated 16383 more times]
+type function (a, [plus 16383 more parameters]) returning int
+int (a, [plus 16383 more parameters])
 ]])
 
 AT_CLEANUP