]> git.draconx.ca Git - cdecl99.git/commitdiff
tests: Avoid shell limitations in huge input tests.
authorNick Bowler <nbowler@draconx.ca>
Tue, 16 Jan 2024 00:52:04 +0000 (19:52 -0500)
committerNick Bowler <nbowler@draconx.ca>
Tue, 16 Jan 2024 00:52:04 +0000 (19:52 -0500)
It seems that the very large here-documents used in the excessive
specifier/declarator tests can be problematic on some ksh versions.

Normal compression tools handle this data very well, so instead of
using the shell to generate it it should be just fine to just use
gunzip to do this and skip the tests if that cannot be done for
whatever reason.

Makefile.am
tests/data/manydecl.gz [new file with mode: 0644]
tests/data/manyspec.gz [new file with mode: 0644]
tests/stress.at

index c32eb926fdc3b6003d6b1f1e9cac9c1c2a1d1132..1aa6a5671a2124f4d2cd7b89350dbdb63994b817 100644 (file)
@@ -26,7 +26,8 @@ CLEANFILES = $(EXTRA_LTLIBRARIES) $(EXTRA_LIBRARIES)
 
 EXTRA_DIST = bootstrap $(DX_BASEDIR)/scripts/fix-gnulib.pl m4/gnulib-cache.m4 \
              src/types.lst src/parse.y src/parse.stamp src/scan.l \
-             src/scan.stamp COPYING.WTFPL2 README.md INSTALL
+             src/scan.stamp COPYING.WTFPL2 README.md INSTALL \
+             tests/data/manyspec.gz tests/data/manydecl.gz
 
 dist_man_MANS = doc/cdecl99.1 doc/libcdecl.3
 
diff --git a/tests/data/manydecl.gz b/tests/data/manydecl.gz
new file mode 100644 (file)
index 0000000..d47e235
Binary files /dev/null and b/tests/data/manydecl.gz differ
diff --git a/tests/data/manyspec.gz b/tests/data/manyspec.gz
new file mode 100644 (file)
index 0000000..88e13e9
Binary files /dev/null and b/tests/data/manyspec.gz differ
index 3ee72d931c7cae04f8b9581fa5c0f7b5f81666d0..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
@@ -157,18 +138,8 @@ 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
-explain int ($a)
-type function ($a) returning int
-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