aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog285
-rw-r--r--test/Makefile.am294
-rw-r--r--test/Makefile.in463
-rw-r--r--test/Maketests117
-rw-r--r--test/assignconst.awk58
-rw-r--r--test/assignconst.ok42
-rw-r--r--test/badargs.ok1
-rwxr-xr-xtest/charasbytes.awk1
-rw-r--r--test/charasbytes.in1
-rw-r--r--test/charasbytes.ok3
-rw-r--r--test/filefuncs.awk25
-rw-r--r--test/filefuncs.ok0
-rw-r--r--test/fnmatch.awk11
-rw-r--r--test/fnmatch.ok9
-rw-r--r--test/fork.awk33
-rw-r--r--test/fork.ok0
-rw-r--r--test/fork2.awk35
-rw-r--r--test/fork2.ok0
-rw-r--r--test/fts.awk121
-rw-r--r--test/functab1.awk3
-rw-r--r--test/functab1.ok2
-rw-r--r--test/functab2.awk8
-rw-r--r--test/functab2.ok2
-rw-r--r--test/functab3.awk10
-rw-r--r--test/functab3.ok2
-rw-r--r--test/functab4.awk14
-rw-r--r--test/functab4.ok3
-rw-r--r--test/getline5.awk35
-rw-r--r--test/getline5.ok1
-rw-r--r--test/hello.awk3
-rw-r--r--test/id.awk11
-rw-r--r--test/id.ok32
-rw-r--r--test/incdupe.ok3
-rw-r--r--test/incdupe2.ok2
-rw-r--r--test/incdupe3.ok2
-rw-r--r--test/incdupe4.ok2
-rw-r--r--test/incdupe5.ok2
-rw-r--r--test/incdupe6.ok3
-rw-r--r--test/incdupe7.ok3
-rw-r--r--test/inchello.awk1
-rw-r--r--test/inclib.awk7
-rw-r--r--test/include.awk5
-rw-r--r--test/include.ok2
-rw-r--r--test/include2.ok2
-rw-r--r--test/jarebug.awk1
-rw-r--r--test/jarebug.in4
-rw-r--r--test/jarebug.ok4
-rwxr-xr-xtest/jarebug.sh21
-rw-r--r--test/lintwarn.ok3
-rw-r--r--test/messages.awk2
-rwxr-xr-xtest/ofs1.awk23
-rw-r--r--test/ofs1.in4
-rw-r--r--test/ofs1.ok7
-rw-r--r--test/ordchr.awk10
-rw-r--r--test/ordchr.ok5
-rw-r--r--test/ordchr2.ok1
-rw-r--r--test/readdir.awk3
-rw-r--r--test/readdir0.awk9
-rw-r--r--test/regexprange.awk14
-rw-r--r--test/regexprange.ok52
-rw-r--r--test/revout.awk6
-rw-r--r--test/revout.ok1
-rw-r--r--test/revtwoway.awk11
-rw-r--r--test/revtwoway.ok2
-rw-r--r--test/rwarray.awk33
-rw-r--r--test/rwarray.in780
-rw-r--r--test/rwarray.ok3
-rw-r--r--test/symtab1.awk21
-rw-r--r--test/symtab1.ok31
-rw-r--r--test/symtab2.awk6
-rw-r--r--test/symtab2.ok2
-rw-r--r--test/symtab3.awk1
-rw-r--r--test/symtab3.ok2
-rw-r--r--test/symtab4.awk1
-rw-r--r--test/symtab4.in2
-rw-r--r--test/symtab4.ok2
-rw-r--r--test/symtab5.awk1
-rw-r--r--test/symtab5.in2
-rw-r--r--test/symtab5.ok2
-rw-r--r--test/symtab6.awk1
-rw-r--r--test/symtab6.ok26
-rw-r--r--test/testext.ok75
-rw-r--r--test/time.awk22
-rw-r--r--test/time.ok3
84 files changed, 2750 insertions, 108 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index 4a2c7b2b..2b669517 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,288 @@
+2012-11-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (readdir): Add a 'this could fail message'.
+ * readdir.awk: Revise to match simplified behavior of the extension.
+
+2012-11-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (GAWK_EXTRA_TESTS): Move to sorted order of tests.
+
+2012-11-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * symtab6.ok: Remove PROCINFO.
+ * Makefile.am (symtab6): Adjust recipe.
+
+2012-11-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * symtab4.awk, symtab4.in, symtab4.ok, symtab5.awk, symtab5.in,
+ symtab5.ok, symtab6.awk: New files.
+ * Makefile.am (EXTRA_DIST): Add new files.
+ (symtab4, symtab5, symtab6): New tests.
+ Thanks to Assaf Gordon <gordon@cshl.edu>.
+
+2012-10-28 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * messages.awk, fts.awk: Adjusted so make diffout will work.
+ * Makefile.am (messages): Adjust to use standard failure test for
+ make diffout.
+
+2012-10-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * symtab1.awk: Adjust to not print ENVIRON and PROCINFO which won't
+ be the same as on the author's machine.
+ * lintwarn.ok: Adjust.
+
+2012-10-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (EXTRA_DIST): Add jarebug.sh.
+
+2012-10-11 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (readdir): Use $(top_srcdir) instead of `.'. Helps
+ when running the valgrind tests.
+
+2012-10-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * testext.ok: Updated.
+
+2012-10-04 Akim Demaille <akim@lrde.epita.fr>
+
+ Fix VPATH builds.
+
+ * Makefile.am (shlib-tests): config.h is in builddir.
+ (beginfile2): So is gawk itself.
+
+ * Makefile.am (functab1, functab2, functab3, functab4, id, symtab1,
+ symtab2, symtab3): New tests.
+ * functab1.awk, functab1.ok, functab2.awk, functab2.ok, functab3.awk,
+ functab3.ok, functab4.awk, functab4.ok, id.awk, id.ok, symtab1.awk,
+ symtab1.ok, symtab2.awk, symtab2.ok, symtab3.awk, symtab3.ok:
+ New files.
+
+2012-09-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * lintwarn.ok: Updated.
+
+2012-09-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * testext.ok: Updated. Twice.
+
+2012-09-11 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (shlib-tests): Check if DYNAMIC is enabled and
+ only if so run the tests. A bit hacky. Needed at least for
+ z/OS.
+
+2012-09-07 Arnold D. Robbins <arnold@skeeve.com>
+
+ * readdir.awk: Change argument to readdir_do_ftype().
+
+2012-08-28 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (EXTRA_DIST): Add jarebug.sh.
+ (readdir): Use standard output filenames readdir.ok and _readdir
+ instead of readdir.out1 and readdir.out2. The standard names are
+ required for the pass-fail and diffout rules to work correctly.
+ (clean): Remove readdir.ok
+
+2012-08-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (charasbytes): Revise test to canonicalize
+ whitespace. (For Mac OS X 10.5, at least.)
+ * charasbytes.ok: Updated.
+
+2012-08-23 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (revout, revtwoway): New tests.
+ * revout.awk, revout.ok, revtwoway.awk, revtwoway.ok: New files.
+
+2012-08-11 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (EXTRA_DIST): Add inchello.awk and incdupe[4-7].ok.
+ (GAWK_EXT_TESTS): Add incdupe[4-7].
+ (incdupe[4-7]): New tests to ensure that mixing -f with include
+ causes a fatal error.
+ * incdupe[4-7].ok, inchello.awk: New files.
+
+2012-08-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fts): New test.
+ * fts.awk: New file.
+
+2012-07-30 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (assignconst): Use AWKPATH to get results that will
+ be consistent no matter where the test is run.
+ * assignconst.ok: Updated.
+
+2012-07-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (readdir): New test.
+ * readdir0.awk, readdir.awk: New files.
+
+2012-07-16 Arnold D. Robbins <arnold@skeeve.com>
+
+ * fnmatch.awk, fnmatch.ok: Portability updates.
+
+2012-07-15 Arnold D. Robbins <arnold@skeeve.com>
+
+ * testext.ok: Update contents.
+
+2012-07-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fnmatch): New test.
+ * fnmatch.awk, fnmatch.ok: New files.
+
+ * Makefile.am (assignconst): New test.
+ * assignconst.awk, assignconst.ok: New files.
+
+2012-06-28 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * time.awk: Avoid possibly throwing a spurious error by protecting
+ a race condition that depends on the order of expression evaluation.
+
+2012-06-25 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (rwarray): New test.
+ * rwarray.awk, rwarray.in, rwarray.ok: New files.
+
+2012-06-21 Arnold D. Robbins <arnold@skeeve.com>
+
+ * testext.ok: Update contents.
+
+2012-06-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * testext.ok: Update contents.
+
+2012-06-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * testext.ok: Update contents.
+
+2012-06-18 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (testext): New test.
+ (EXTRA_DIST): Add new file testext.ok.
+ (SHLIB_TESTS): Add testext.
+ (clean): Add testext.awk to the list.
+ * testext.ok: New file.
+
+2012-06-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (clean): Add fork.tmp.* to the list.
+
+2012-06-10 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (EXTRA_DIST): Add new files time.awk and time.ok.
+ (SHLIB_TESTS): Add time.
+ * time.awk, time.ok: New files.
+
+2012-05-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (clean): Add readfile.ok to list of files to removed.
+
+2012-05-26 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (readfile): Revert previous patch, and add comment
+ explaining that we need to create readfile.ok on failure so that
+ "make diffout" will work properly.
+ (ordchr.awk, ordchr.ok): Add more tests to catch type conversion
+ problems.
+
+2012-05-25 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (readfile): Don't copy the Makefile over readfile.ok
+ if there's a problem.
+
+2012-05-24 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (fmtspcl, include2, incdupe, incdup2, incdupe3): Fix
+ paths to work properly when built in another directory.
+
+2012-05-19 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (EXTRA_DIST): Add new files hello.awk, inclib.awk,
+ include.awk, include.ok, include2.ok, incdupe.ok, incdupe2.ok and
+ incdupe3.ok.
+ (GAWK_EXT_TESTS): Add include, include2, incdupe, incdupe2 and incdupe3.
+ (include2, incdupe, incdupe2, incdupe3): New tests.
+ * badargs.ok: Fix usage message to include new -i option.
+ * hello.awk, incdupe.ok, incdupe2.ok, incdupe3.ok, inclib.awk,
+ include.awk, include.ok, include2.ok: New files.
+
+2012-08-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (regexprange): New test.
+ * regexprange.awk, regexprange.ok: New files.
+
+2012-08-05 Arnold D. Robbins <arnold@skeeve.com>
+
+ New test from Nelson Beebe.
+
+ * Makefile.am (ofs1): New test.
+ * ofs1.awk, ofs1.in, ofs1.ok: New files.
+
+2012-07-13 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (getline5): New test.
+ * getline5.awk, getline5.ok: New files.
+
+2012-06-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (charasbytes): New test.
+ * charasbytes.awk, charasbytes.in, charasbytes.ok: New files.
+
+2012-05-20 Arnold D. Robbins <arnold@skeeve.com>
+
+ * jarebug.sh: New file. Handles Mac OS X also.
+ * Makefile.am (jarebug): Use jarebug.sh to run the test.
+
+2012-05-16 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (jarebug): Remove leading `-' from $(CMP) line.
+
+2012-05-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (jarebug): Move to charset tests. Adjust to check
+ for existence of needed Japanese locale before running the test.
+
+2012-05-09 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (jarebug): New test.
+ * jarebug.awk, jarebug.in, jarebug.ok: New files.
+
+2012-04-08 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (VALGRIND): Set to empty to protect against random
+ values in the environment.
+
+2012-04-08 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (EXTRA_DIST): Add missing files fork.ok, fork2.ok
+ and ordchr2.ok.
+
+2012-04-08 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (AWK, PGAWK): Include new $(VALGRIND) variable in
+ command line (now passed in by top-level Makefile).
+
+2012-04-07 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (ordchr2, readfile): Fix so "make diffout" will work
+ properly.
+ * orchr2.ok: New file.
+
+2012-04-07 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (check): Add new shlib-tests target.
+ (SHLIB_TESTS): Add tests ordchr, ordchr2, fork, fork2, readfile and
+ filefuncs.
+ * ordchr.awk, ordchr.ok, fork.awk, fork.ok, fork2.awk, fork2.ok,
+ filefuncs.awk, filefuncs.ok: New files.
+
+2012-04-01 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (valgrind-scan): Update to match modern valgrind output.
+
2012-04-01 John Haque <j.eh@mchsi.com>
* Makefile.am (mpfr-test): Add target for manual testing of MPFR
diff --git a/test/Makefile.am b/test/Makefile.am
index 54d48397..fc1a1076 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -47,8 +47,6 @@ EXTRA_DIST = \
anchgsub.awk \
anchgsub.in \
anchgsub.ok \
- arraysort.awk \
- arraysort.ok \
argarray.awk \
argarray.in \
argarray.ok \
@@ -62,6 +60,8 @@ EXTRA_DIST = \
arrayprm3.ok \
arrayref.awk \
arrayref.ok \
+ arraysort.awk \
+ arraysort.ok \
arrymem1.awk \
arrymem1.ok \
arryref2.awk \
@@ -102,6 +102,8 @@ EXTRA_DIST = \
asort.ok \
asorti.awk \
asorti.ok \
+ assignconst.awk \
+ assignconst.ok \
awkpath.ok \
back89.awk \
back89.in \
@@ -119,6 +121,9 @@ EXTRA_DIST = \
beginfile2.ok \
beginfile2.sh \
binmode1.ok \
+ charasbytes.awk \
+ charasbytes.in \
+ charasbytes.ok \
childin.awk \
childin.in \
childin.ok \
@@ -155,10 +160,10 @@ EXTRA_DIST = \
defref.ok \
delargv.awk \
delargv.ok \
- delarprm.awk \
- delarprm.ok \
delarpm2.awk \
delarpm2.ok \
+ delarprm.awk \
+ delarprm.ok \
delfunc.awk \
delfunc.ok \
delsub.awk \
@@ -194,22 +199,24 @@ EXTRA_DIST = \
fcall_exit.awk \
fcall_exit.ok \
fcall_exit2.awk \
- fcall_exit2.ok \
fcall_exit2.in \
+ fcall_exit2.ok \
fflush.ok \
fflush.sh \
fieldwdth.awk \
fieldwdth.in \
fieldwdth.ok \
+ filefuncs.awk \
+ filefuncs.ok \
fldchg.awk \
fldchg.in \
fldchg.ok \
fldchgnf.awk \
fldchgnf.in \
fldchgnf.ok \
+ fmtspcl-mpfr.ok \
fmtspcl.awk \
fmtspcl.tok \
- fmtspcl-mpfr.ok \
fmttest.awk \
fmttest.ok \
fnamedat.awk \
@@ -220,19 +227,31 @@ EXTRA_DIST = \
fnarray2.awk \
fnarray2.in \
fnarray2.ok \
+ fnarydel-mpfr.ok \
fnarydel.awk \
fnarydel.ok \
- fnarydel-mpfr.ok \
fnaryscl.awk \
fnaryscl.ok \
fnasgnm.awk \
fnasgnm.in \
fnasgnm.ok \
+ fnmatch.awk \
+ fnmatch.ok \
fnmisc.awk \
fnmisc.ok \
+ fnparydl-mpfr.ok \
fnparydl.awk \
fnparydl.ok \
- fnparydl-mpfr.ok \
+ fordel.awk \
+ fordel.ok \
+ fork.awk \
+ fork.ok \
+ fork2.awk \
+ fork2.ok \
+ forref.awk \
+ forref.ok \
+ forsimp.awk \
+ forsimp.ok \
fpat1.awk \
fpat1.in \
fpat1.ok \
@@ -244,12 +263,6 @@ EXTRA_DIST = \
fpatnull.awk \
fpatnull.in \
fpatnull.ok \
- fordel.awk \
- fordel.ok \
- forref.awk \
- forref.ok \
- forsimp.awk \
- forsimp.ok \
fsbs.awk \
fsbs.in \
fsbs.ok \
@@ -265,6 +278,15 @@ EXTRA_DIST = \
fstabplus.awk \
fstabplus.in \
fstabplus.ok \
+ fts.awk \
+ functab1.awk \
+ functab1.ok \
+ functab2.awk \
+ functab2.ok \
+ functab3.awk \
+ functab3.ok \
+ functab4.awk \
+ functab4.ok \
funlen.awk \
funlen.in \
funlen.ok \
@@ -299,6 +321,8 @@ EXTRA_DIST = \
getline4.awk \
getline4.in \
getline4.ok \
+ getline5.awk \
+ getline5.ok \
getlnbuf.awk \
getlnbuf.in \
getlnbuf.ok \
@@ -341,6 +365,7 @@ EXTRA_DIST = \
gsubtst8.in \
gsubtst8.ok \
gtlnbufv.awk \
+ hello.awk \
hex.awk \
hex.ok \
hsprint.awk \
@@ -350,17 +375,31 @@ EXTRA_DIST = \
icasers.awk \
icasers.in \
icasers.ok \
+ id.awk \
+ id.ok \
igncdym.awk \
igncdym.in \
igncdym.ok \
igncfs.awk \
igncfs.in \
igncfs.ok \
+ ignrcas2.awk \
+ ignrcas2.ok \
ignrcase.awk \
ignrcase.in \
ignrcase.ok \
- ignrcas2.awk \
- ignrcas2.ok \
+ incdupe.ok \
+ incdupe2.ok \
+ incdupe3.ok \
+ incdupe4.ok \
+ incdupe5.ok \
+ incdupe6.ok \
+ incdupe7.ok \
+ inchello.awk \
+ inclib.awk \
+ include.awk \
+ include.ok \
+ include2.ok \
indirectcall.awk \
indirectcall.in \
indirectcall.ok \
@@ -376,6 +415,10 @@ EXTRA_DIST = \
intprec.ok \
iobug1.awk \
iobug1.ok \
+ jarebug.awk \
+ jarebug.in \
+ jarebug.ok \
+ jarebug.sh \
lc_num1.awk \
lc_num1.ok \
leaddig.awk \
@@ -401,8 +444,8 @@ EXTRA_DIST = \
longsub.in \
longsub.ok \
longwrds.awk \
- longwrds.ok \
longwrds.in \
+ longwrds.ok \
manglprm.awk \
manglprm.in \
manglprm.ok \
@@ -518,6 +561,9 @@ EXTRA_DIST = \
ofmts.awk \
ofmts.in \
ofmts.ok \
+ ofs1.awk \
+ ofs1.in \
+ ofs1.ok \
onlynl.awk \
onlynl.in \
onlynl.ok \
@@ -525,6 +571,9 @@ EXTRA_DIST = \
opasnidx.ok \
opasnslf.awk \
opasnslf.ok \
+ ordchr.awk \
+ ordchr.ok \
+ ordchr2.ok \
out1.ok \
out2.ok \
out3.ok \
@@ -563,9 +612,6 @@ EXTRA_DIST = \
prdupval.awk \
prdupval.in \
prdupval.ok \
- profile2.ok \
- profile3.awk \
- profile3.ok \
prec.awk \
prec.ok \
printf0.awk \
@@ -587,36 +633,43 @@ EXTRA_DIST = \
prmreuse.ok \
procinfs.awk \
procinfs.ok \
+ profile2.ok \
+ profile3.awk \
+ profile3.ok \
prt1eval.awk \
prt1eval.ok \
prtoeval.awk \
prtoeval.ok \
pty1.awk \
pty1.ok \
+ rand-mpfr.ok \
rand.awk \
rand.ok \
- rand-mpfr.ok \
range1.awk \
range1.in \
range1.ok \
+ readdir.awk \
+ readdir0.awk \
rebt8b1.awk \
rebt8b1.ok \
rebt8b2.awk \
rebt8b2.ok \
+ rebuf.awk \
+ rebuf.in \
+ rebuf.ok \
redfilnm.awk \
redfilnm.in \
redfilnm.ok \
regeq.awk \
regeq.in \
regeq.ok \
+ regexprange.awk \
+ regexprange.ok \
regrange.awk \
regrange.ok \
regtest.sh \
regx8bit.awk \
regx8bit.ok \
- rebuf.awk \
- rebuf.in \
- rebuf.ok \
reindops.awk \
reindops.in \
reindops.ok \
@@ -632,6 +685,10 @@ EXTRA_DIST = \
resplit.awk \
resplit.in \
resplit.ok \
+ revout.awk \
+ revout.ok \
+ revtwoway.awk \
+ revtwoway.ok \
rri1.awk \
rri1.in \
rri1.ok \
@@ -669,6 +726,9 @@ EXTRA_DIST = \
rtlen.sh \
rtlen01.ok \
rtlen01.sh \
+ rwarray.awk \
+ rwarray.in \
+ rwarray.ok \
scalar.awk \
scalar.ok \
sclforin.awk \
@@ -707,16 +767,16 @@ EXTRA_DIST = \
sprintfc.ok \
strcat1.awk \
strcat1.ok \
+ strftime.awk \
+ strftlng.awk \
+ strftlng.ok \
+ strnum1.awk \
+ strnum1.ok \
strtod.awk \
strtod.in \
strtod.ok \
- strnum1.awk \
- strnum1.ok \
strtonum.awk \
strtonum.ok \
- strftime.awk \
- strftlng.awk \
- strftlng.ok \
subamp.awk \
subamp.in \
subamp.ok \
@@ -733,10 +793,27 @@ EXTRA_DIST = \
swaplns.ok \
switch2.awk \
switch2.ok \
+ symtab1.awk \
+ symtab1.ok \
+ symtab2.awk \
+ symtab2.ok \
+ symtab3.awk \
+ symtab3.ok \
+ symtab4.awk \
+ symtab4.in \
+ symtab4.ok \
+ symtab5.awk \
+ symtab5.in \
+ symtab5.ok \
+ symtab6.awk \
+ symtab6.ok \
synerr1.awk \
synerr1.ok \
synerr2.awk \
synerr2.ok \
+ testext.ok \
+ time.awk \
+ time.ok \
tradanch.awk \
tradanch.in \
tradanch.ok \
@@ -784,6 +861,7 @@ EXTRA_DIST = \
zeroflag.awk \
zeroflag.ok
+
TESTS_WE_ARE_NOT_DOING_YET_FIXME_ONE_DAY = longdbl
# Get rid of core files when cleaning and generated .ok file
@@ -803,7 +881,7 @@ BASIC_TESTS = \
fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \
fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \
fstabplus funsemnl funsmnam funstack \
- getline getline2 getline3 getline4 getlnbuf getnr2tb getnr2tm \
+ getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
gsubtst7 gsubtst8 \
hex hsprint \
@@ -813,11 +891,12 @@ BASIC_TESTS = \
nasty nasty2 negexp negrange nested nfldstr nfneg nfset nlfldsep \
nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \
noparms nors nulrsend numindex numsubstr \
- octsub ofmt ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf \
+ octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofs1 onlynl opasnidx opasnslf \
paramdup paramres paramtyp parse1 parsefld parseme pcntplus \
posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq regrange reindops reparse \
+ rand range1 rebt8b1 redfilnm regeq regexprange regrange \
+ reindops reparse \
resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin sortempty splitargv splitarr splitdef \
@@ -833,12 +912,15 @@ UNIX_TESTS = \
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
- backw badargs beginfile1 beginfile2 binmode1 \
+ backw badargs beginfile1 beginfile2 binmode1 charasbytes \
clos1way delsub devfd devfd1 devfd2 dumpvars exit \
fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \
+ functab1 functab2 functab3 functab4 \
fwtest fwtest2 fwtest3 \
gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
- icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall \
+ icasefs icasers id igncdym igncfs ignrcas2 ignrcase \
+ incdupe incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 \
+ include include2 indirectcall \
lint lintold lintwarn \
manyfiles match1 match2 match3 mbstr1 \
nastyparm next nondec nondec2 \
@@ -846,7 +928,8 @@ GAWK_EXT_TESTS = \
profile1 profile2 profile3 pty1 \
rebuf regx8bit reint reint2 rsstart1 \
rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
- strtonum switch2
+ strtonum switch2 \
+ symtab1 symtab2 symtab3 symtab4 symtab5 symtab6
EXTRA_TESTS = inftest regtest
@@ -857,9 +940,13 @@ MACHINE_TESTS = double1 double2 fmtspcl intformat
MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint
LOCALE_CHARSET_TESTS = \
- asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
+ asort asorti fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
+SHLIB_TESTS = \
+ assignconst fnmatch filefuncs fork fork2 fts ordchr ordchr2 \
+ readdir readfile revout revtwoway rwarray testext time
+
# List of the tests which should be run with --lint option:
NEED_LINT = \
defref fmtspcl lintwarn noeffect nofmtch shadow \
@@ -877,18 +964,24 @@ CHECK_MPFR = \
rand fnarydel fnparydl
# List of the files that appear in manual tests or are for reserve testing:
-GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk
+GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk inclib.awk hello.awk
CMP = cmp
AWKPROG = ../gawk$(EXEEXT)
+# Default for VALGRIND is empty unless overridden by a command-line argument.
+# This protects against cruft in the environment.
+VALGRIND =
+
# This business forces the locale to be C for running the tests,
# unless we override it to something else for testing.
#
# This can also be done in individual tests where we wish to
# check things specifically not in the C locale.
-AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG) $(AWKFLAGS)
+#
+# And we set AWKLIBPATH to find the extension libraries we built.
+AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} AWKLIBPATH=../extension/.libs $(VALGRIND) $(AWKPROG)
# Message stuff is to make it a little easier to follow.
# Make the pass-fail last and dependent on others to avoid
@@ -899,7 +992,8 @@ check: msg \
unix-msg-start unix-tests unix-msg-end \
extend-msg-start gawk-extensions extend-msg-end \
machine-msg-start machine-tests machine-msg-end \
- charset-msg-start charset-tests charset-msg-end
+ charset-msg-start charset-tests charset-msg-end \
+ shlib-msg-start shlib-tests shlib-msg-end
@$(MAKE) pass-fail
basic: $(BASIC_TESTS)
@@ -918,6 +1012,14 @@ machine-tests: $(MACHINE_TESTS)
mpfr-tests: $(MPFR_TESTS)
+shlib-tests:
+ @if grep 'DYNAMIC 1' $(top_builddir)/config.h > /dev/null ; then \
+ $(MAKE) shlib-real-tests ; \
+ else echo shlib tests not supported on this system ; \
+ fi
+
+shlib-real-tests: $(SHLIB_TESTS)
+
msg::
@echo ''
@echo 'Any output from "cmp" is bad news, although some differences'
@@ -958,6 +1060,12 @@ charset-msg-start:
charset-msg-end:
@echo "======== Done with tests that can vary based on character set or locale support ========"
+shlib-msg-start:
+ @echo "======== Starting shared library tests ========"
+
+shlib-msg-end:
+ @echo "======== Done with shared library tests ========"
+
lc_num1:
@echo $@
@@ -986,8 +1094,8 @@ poundbang::
messages::
@echo $@
- @$(AWK) -f $(srcdir)/messages.awk >out2 2>out3
- @-$(CMP) $(srcdir)/out1.ok out1 && $(CMP) $(srcdir)/out2.ok out2 && $(CMP) $(srcdir)/out3.ok out3 && rm -f out1 out2 out3
+ @$(AWK) -f $(srcdir)/messages.awk >_out2 2>_out3
+ @-$(CMP) $(srcdir)/out1.ok _out1 && $(CMP) $(srcdir)/out2.ok _out2 && $(CMP) $(srcdir)/out3.ok _out3 && rm -f _out1 _out2 _out3
argarray::
@echo $@
@@ -1120,7 +1228,7 @@ fmtspcl.ok: fmtspcl.tok Makefile
fmtspcl: fmtspcl.ok
@echo $@
@$(AWK) -f $(srcdir)/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $@.ok _$@ && rm -f _$@ ; else \
$(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
@@ -1417,7 +1525,7 @@ beginfile1::
beginfile2:
@echo $@
- @-( cd $(srcdir) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1
+ @-( cd $(srcdir) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(abs_srcdir)/$@.sh $(abs_srcdir)/$@.in ) > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
dumpvars::
@@ -1502,6 +1610,100 @@ mpfrbigint:
@$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+jarebug::
+ @echo $@
+ @$(srcdir)/$@.sh "$(AWKPROG)" "$(srcdir)/$@.awk" "$(srcdir)/$@.in" "_$@"
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ordchr2::
+ @echo $@
+ @$(AWK) -l ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# N.B. If the test fails, create readfile.ok so that "make diffout" will work
+readfile::
+ @echo $@
+ @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile $@.ok
+
+include2::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -i inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe2::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe3::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe4::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe5::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -i hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe6::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -i inchello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe7::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i inchello >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+testext::
+ @echo $@
+ @$(AWK) '/^(@load|BEGIN)/,/^}/' $(top_srcdir)/extension/testext.c > testext.awk
+ @$(AWK) -f testext.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ testext.awk
+
+assignconst:
+ @echo $@
+ @for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; \
+ do AWKPATH=$(srcdir) $(AWK) -f $@.awk $$i ; \
+ done 2>&1 | grep -v at_exit > _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+readdir:
+ @echo This test can fail on some filesystems.
+ @echo $@
+ @ls -fli $(top_srcdir) | sed 1d | $(AWK) -f $(srcdir)/readdir0.awk > $@.ok
+ @$(AWK) -f $(srcdir)/readdir.awk $(top_srcdir) > _$@
+ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
+
+fts:
+ @echo $@
+ @$(AWK) -f $(srcdir)/fts.awk
+ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
+
+charasbytes:
+ @echo $@
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
+ AWKPATH=$(srcdir) $(AWK) -b -f $@.awk $(srcdir)/$@.in | \
+ od -c -t x1 | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab6:
+ @echo $@
+ @$(AWK) -d__$@ -f $(srcdir)/$@.awk
+ @grep -v '^ENVIRON' __$@ | grep -v '^PROCINFO' > _$@ ; rm __$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
# Targets generated for other tests:
include Maketests
@@ -1510,7 +1712,7 @@ $(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
$(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" $$files > $(srcdir)/Maketests
clean:
- rm -fr _* core core.* fmtspcl.ok junk out1 out2 out3 strftime.ok test1 test2 seq *~
+ rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok
# An attempt to print something that can be grepped for in build logs
pass-fail:
@@ -1541,8 +1743,8 @@ valgrind-scan:
function show() {if (cmd) {printf "%s: %s\n",FILENAME,cmd; cmd = ""}; \
printf "\t%s\n",$$0}; \
{$$1 = ""}; \
- /Prog and args are:/ {incmd = 1; cmd = ""; next}; \
- incmd {if (NF == 1) incmd = 0; else {cmd = (cmd $$0); next}}; \
+ $$2 == "Command:" {incmd = 1; $$2 = ""; cmd = $$0; next}; \
+ incmd {if (/Parent PID:/) incmd = 0; else {cmd = (cmd $$0); next}}; \
/ERROR SUMMARY:/ && !/: 0 errors from 0 contexts/ {show()}; \
/definitely lost:/ && !/: 0 bytes in 0 blocks/ {show()}; \
/possibly lost:/ && !/: 0 bytes in 0 blocks/ {show()}; \
diff --git a/test/Makefile.in b/test/Makefile.in
index 838eca85..040b49f2 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -38,6 +37,23 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -57,13 +73,12 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/Maketests ChangeLog
+ $(srcdir)/Maketests $(top_srcdir)/mkinstalldirs ChangeLog
subdir = test
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
$(top_srcdir)/m4/isc-posix.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libsigsegv.m4 \
@@ -71,7 +86,6 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/noreturn.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/readline.m4 $(top_srcdir)/m4/socket.m4 \
- $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/uintmax_t.m4 \
$(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -81,6 +95,11 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -93,7 +112,10 @@ AUTOMAKE = @AUTOMAKE@
#
# This can also be done in individual tests where we wish to
# check things specifically not in the C locale.
-AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG) $(AWKFLAGS)
+
+#
+# And we set AWKLIBPATH to find the extension libraries we built.
+AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} AWKLIBPATH=../extension/.libs $(VALGRIND) $(AWKPROG)
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -107,6 +129,7 @@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GAWKLIBEXT = @GAWKLIBEXT@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
@@ -164,6 +187,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+acl_shlibext = @acl_shlibext@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -198,12 +222,14 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgextensiondir = @pkgextensiondir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
+subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
@@ -233,8 +259,6 @@ EXTRA_DIST = \
anchgsub.awk \
anchgsub.in \
anchgsub.ok \
- arraysort.awk \
- arraysort.ok \
argarray.awk \
argarray.in \
argarray.ok \
@@ -248,6 +272,8 @@ EXTRA_DIST = \
arrayprm3.ok \
arrayref.awk \
arrayref.ok \
+ arraysort.awk \
+ arraysort.ok \
arrymem1.awk \
arrymem1.ok \
arryref2.awk \
@@ -288,6 +314,8 @@ EXTRA_DIST = \
asort.ok \
asorti.awk \
asorti.ok \
+ assignconst.awk \
+ assignconst.ok \
awkpath.ok \
back89.awk \
back89.in \
@@ -305,6 +333,9 @@ EXTRA_DIST = \
beginfile2.ok \
beginfile2.sh \
binmode1.ok \
+ charasbytes.awk \
+ charasbytes.in \
+ charasbytes.ok \
childin.awk \
childin.in \
childin.ok \
@@ -341,10 +372,10 @@ EXTRA_DIST = \
defref.ok \
delargv.awk \
delargv.ok \
- delarprm.awk \
- delarprm.ok \
delarpm2.awk \
delarpm2.ok \
+ delarprm.awk \
+ delarprm.ok \
delfunc.awk \
delfunc.ok \
delsub.awk \
@@ -380,22 +411,24 @@ EXTRA_DIST = \
fcall_exit.awk \
fcall_exit.ok \
fcall_exit2.awk \
- fcall_exit2.ok \
fcall_exit2.in \
+ fcall_exit2.ok \
fflush.ok \
fflush.sh \
fieldwdth.awk \
fieldwdth.in \
fieldwdth.ok \
+ filefuncs.awk \
+ filefuncs.ok \
fldchg.awk \
fldchg.in \
fldchg.ok \
fldchgnf.awk \
fldchgnf.in \
fldchgnf.ok \
+ fmtspcl-mpfr.ok \
fmtspcl.awk \
fmtspcl.tok \
- fmtspcl-mpfr.ok \
fmttest.awk \
fmttest.ok \
fnamedat.awk \
@@ -406,19 +439,31 @@ EXTRA_DIST = \
fnarray2.awk \
fnarray2.in \
fnarray2.ok \
+ fnarydel-mpfr.ok \
fnarydel.awk \
fnarydel.ok \
- fnarydel-mpfr.ok \
fnaryscl.awk \
fnaryscl.ok \
fnasgnm.awk \
fnasgnm.in \
fnasgnm.ok \
+ fnmatch.awk \
+ fnmatch.ok \
fnmisc.awk \
fnmisc.ok \
+ fnparydl-mpfr.ok \
fnparydl.awk \
fnparydl.ok \
- fnparydl-mpfr.ok \
+ fordel.awk \
+ fordel.ok \
+ fork.awk \
+ fork.ok \
+ fork2.awk \
+ fork2.ok \
+ forref.awk \
+ forref.ok \
+ forsimp.awk \
+ forsimp.ok \
fpat1.awk \
fpat1.in \
fpat1.ok \
@@ -430,12 +475,6 @@ EXTRA_DIST = \
fpatnull.awk \
fpatnull.in \
fpatnull.ok \
- fordel.awk \
- fordel.ok \
- forref.awk \
- forref.ok \
- forsimp.awk \
- forsimp.ok \
fsbs.awk \
fsbs.in \
fsbs.ok \
@@ -451,6 +490,15 @@ EXTRA_DIST = \
fstabplus.awk \
fstabplus.in \
fstabplus.ok \
+ fts.awk \
+ functab1.awk \
+ functab1.ok \
+ functab2.awk \
+ functab2.ok \
+ functab3.awk \
+ functab3.ok \
+ functab4.awk \
+ functab4.ok \
funlen.awk \
funlen.in \
funlen.ok \
@@ -485,6 +533,8 @@ EXTRA_DIST = \
getline4.awk \
getline4.in \
getline4.ok \
+ getline5.awk \
+ getline5.ok \
getlnbuf.awk \
getlnbuf.in \
getlnbuf.ok \
@@ -527,6 +577,7 @@ EXTRA_DIST = \
gsubtst8.in \
gsubtst8.ok \
gtlnbufv.awk \
+ hello.awk \
hex.awk \
hex.ok \
hsprint.awk \
@@ -536,17 +587,31 @@ EXTRA_DIST = \
icasers.awk \
icasers.in \
icasers.ok \
+ id.awk \
+ id.ok \
igncdym.awk \
igncdym.in \
igncdym.ok \
igncfs.awk \
igncfs.in \
igncfs.ok \
+ ignrcas2.awk \
+ ignrcas2.ok \
ignrcase.awk \
ignrcase.in \
ignrcase.ok \
- ignrcas2.awk \
- ignrcas2.ok \
+ incdupe.ok \
+ incdupe2.ok \
+ incdupe3.ok \
+ incdupe4.ok \
+ incdupe5.ok \
+ incdupe6.ok \
+ incdupe7.ok \
+ inchello.awk \
+ inclib.awk \
+ include.awk \
+ include.ok \
+ include2.ok \
indirectcall.awk \
indirectcall.in \
indirectcall.ok \
@@ -562,6 +627,10 @@ EXTRA_DIST = \
intprec.ok \
iobug1.awk \
iobug1.ok \
+ jarebug.awk \
+ jarebug.in \
+ jarebug.ok \
+ jarebug.sh \
lc_num1.awk \
lc_num1.ok \
leaddig.awk \
@@ -587,8 +656,8 @@ EXTRA_DIST = \
longsub.in \
longsub.ok \
longwrds.awk \
- longwrds.ok \
longwrds.in \
+ longwrds.ok \
manglprm.awk \
manglprm.in \
manglprm.ok \
@@ -704,6 +773,9 @@ EXTRA_DIST = \
ofmts.awk \
ofmts.in \
ofmts.ok \
+ ofs1.awk \
+ ofs1.in \
+ ofs1.ok \
onlynl.awk \
onlynl.in \
onlynl.ok \
@@ -711,6 +783,9 @@ EXTRA_DIST = \
opasnidx.ok \
opasnslf.awk \
opasnslf.ok \
+ ordchr.awk \
+ ordchr.ok \
+ ordchr2.ok \
out1.ok \
out2.ok \
out3.ok \
@@ -749,9 +824,6 @@ EXTRA_DIST = \
prdupval.awk \
prdupval.in \
prdupval.ok \
- profile2.ok \
- profile3.awk \
- profile3.ok \
prec.awk \
prec.ok \
printf0.awk \
@@ -773,36 +845,43 @@ EXTRA_DIST = \
prmreuse.ok \
procinfs.awk \
procinfs.ok \
+ profile2.ok \
+ profile3.awk \
+ profile3.ok \
prt1eval.awk \
prt1eval.ok \
prtoeval.awk \
prtoeval.ok \
pty1.awk \
pty1.ok \
+ rand-mpfr.ok \
rand.awk \
rand.ok \
- rand-mpfr.ok \
range1.awk \
range1.in \
range1.ok \
+ readdir.awk \
+ readdir0.awk \
rebt8b1.awk \
rebt8b1.ok \
rebt8b2.awk \
rebt8b2.ok \
+ rebuf.awk \
+ rebuf.in \
+ rebuf.ok \
redfilnm.awk \
redfilnm.in \
redfilnm.ok \
regeq.awk \
regeq.in \
regeq.ok \
+ regexprange.awk \
+ regexprange.ok \
regrange.awk \
regrange.ok \
regtest.sh \
regx8bit.awk \
regx8bit.ok \
- rebuf.awk \
- rebuf.in \
- rebuf.ok \
reindops.awk \
reindops.in \
reindops.ok \
@@ -818,6 +897,10 @@ EXTRA_DIST = \
resplit.awk \
resplit.in \
resplit.ok \
+ revout.awk \
+ revout.ok \
+ revtwoway.awk \
+ revtwoway.ok \
rri1.awk \
rri1.in \
rri1.ok \
@@ -855,6 +938,9 @@ EXTRA_DIST = \
rtlen.sh \
rtlen01.ok \
rtlen01.sh \
+ rwarray.awk \
+ rwarray.in \
+ rwarray.ok \
scalar.awk \
scalar.ok \
sclforin.awk \
@@ -893,16 +979,16 @@ EXTRA_DIST = \
sprintfc.ok \
strcat1.awk \
strcat1.ok \
+ strftime.awk \
+ strftlng.awk \
+ strftlng.ok \
+ strnum1.awk \
+ strnum1.ok \
strtod.awk \
strtod.in \
strtod.ok \
- strnum1.awk \
- strnum1.ok \
strtonum.awk \
strtonum.ok \
- strftime.awk \
- strftlng.awk \
- strftlng.ok \
subamp.awk \
subamp.in \
subamp.ok \
@@ -919,10 +1005,27 @@ EXTRA_DIST = \
swaplns.ok \
switch2.awk \
switch2.ok \
+ symtab1.awk \
+ symtab1.ok \
+ symtab2.awk \
+ symtab2.ok \
+ symtab3.awk \
+ symtab3.ok \
+ symtab4.awk \
+ symtab4.in \
+ symtab4.ok \
+ symtab5.awk \
+ symtab5.in \
+ symtab5.ok \
+ symtab6.awk \
+ symtab6.ok \
synerr1.awk \
synerr1.ok \
synerr2.awk \
synerr2.ok \
+ testext.ok \
+ time.awk \
+ time.ok \
tradanch.awk \
tradanch.in \
tradanch.ok \
@@ -989,7 +1092,7 @@ BASIC_TESTS = \
fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \
fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \
fstabplus funsemnl funsmnam funstack \
- getline getline2 getline3 getline4 getlnbuf getnr2tb getnr2tm \
+ getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \
gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \
gsubtst7 gsubtst8 \
hex hsprint \
@@ -999,11 +1102,12 @@ BASIC_TESTS = \
nasty nasty2 negexp negrange nested nfldstr nfneg nfset nlfldsep \
nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \
noparms nors nulrsend numindex numsubstr \
- octsub ofmt ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf \
+ octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofs1 onlynl opasnidx opasnslf \
paramdup paramres paramtyp parse1 parsefld parseme pcntplus \
posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \
prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq regrange reindops reparse \
+ rand range1 rebt8b1 redfilnm regeq regexprange regrange \
+ reindops reparse \
resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \
rstest3 rstest4 rstest5 rswhite \
scalar sclforin sclifin sortempty splitargv splitarr splitdef \
@@ -1019,12 +1123,15 @@ UNIX_TESTS = \
GAWK_EXT_TESTS = \
aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \
- backw badargs beginfile1 beginfile2 binmode1 \
+ backw badargs beginfile1 beginfile2 binmode1 charasbytes \
clos1way delsub devfd devfd1 devfd2 dumpvars exit \
fieldwdth fpat1 fpat2 fpat3 fpatnull fsfwfs funlen \
+ functab1 functab2 functab3 functab4 \
fwtest fwtest2 fwtest3 \
gensub gensub2 getlndir gnuops2 gnuops3 gnureops \
- icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall \
+ icasefs icasers id igncdym igncfs ignrcas2 ignrcase \
+ incdupe incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 \
+ include include2 indirectcall \
lint lintold lintwarn \
manyfiles match1 match2 match3 mbstr1 \
nastyparm next nondec nondec2 \
@@ -1032,16 +1139,21 @@ GAWK_EXT_TESTS = \
profile1 profile2 profile3 pty1 \
rebuf regx8bit reint reint2 rsstart1 \
rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
- strtonum switch2
+ strtonum switch2 \
+ symtab1 symtab2 symtab3 symtab4 symtab5 symtab6
EXTRA_TESTS = inftest regtest
INET_TESTS = inetdayu inetdayt inetechu inetecht
MACHINE_TESTS = double1 double2 fmtspcl intformat
MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint
LOCALE_CHARSET_TESTS = \
- asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
+ asort asorti fmttest fnarydel fnparydl jarebug lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
+SHLIB_TESTS = \
+ assignconst fnmatch filefuncs fork fork2 fts ordchr ordchr2 \
+ readdir readfile revout revtwoway rwarray testext time
+
# List of the tests which should be run with --lint option:
NEED_LINT = \
@@ -1063,9 +1175,13 @@ CHECK_MPFR = \
# List of the files that appear in manual tests or are for reserve testing:
-GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk
+GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk inclib.awk hello.awk
CMP = cmp
AWKPROG = ../gawk$(EXEEXT)
+
+# Default for VALGRIND is empty unless overridden by a command-line argument.
+# This protects against cruft in the environment.
+VALGRIND =
all: all-am
.SUFFIXES:
@@ -1105,6 +1221,8 @@ TAGS:
ctags: CTAGS
CTAGS:
+cscope cscopelist:
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1150,10 +1268,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -1252,7 +1375,8 @@ check: msg \
unix-msg-start unix-tests unix-msg-end \
extend-msg-start gawk-extensions extend-msg-end \
machine-msg-start machine-tests machine-msg-end \
- charset-msg-start charset-tests charset-msg-end
+ charset-msg-start charset-tests charset-msg-end \
+ shlib-msg-start shlib-tests shlib-msg-end
@$(MAKE) pass-fail
basic: $(BASIC_TESTS)
@@ -1271,6 +1395,14 @@ machine-tests: $(MACHINE_TESTS)
mpfr-tests: $(MPFR_TESTS)
+shlib-tests:
+ @if grep 'DYNAMIC 1' $(top_builddir)/config.h > /dev/null ; then \
+ $(MAKE) shlib-real-tests ; \
+ else echo shlib tests not supported on this system ; \
+ fi
+
+shlib-real-tests: $(SHLIB_TESTS)
+
msg::
@echo ''
@echo 'Any output from "cmp" is bad news, although some differences'
@@ -1311,6 +1443,12 @@ charset-msg-start:
charset-msg-end:
@echo "======== Done with tests that can vary based on character set or locale support ========"
+shlib-msg-start:
+ @echo "======== Starting shared library tests ========"
+
+shlib-msg-end:
+ @echo "======== Done with shared library tests ========"
+
lc_num1:
@echo $@
@[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
@@ -1337,8 +1475,8 @@ poundbang::
messages::
@echo $@
- @$(AWK) -f $(srcdir)/messages.awk >out2 2>out3
- @-$(CMP) $(srcdir)/out1.ok out1 && $(CMP) $(srcdir)/out2.ok out2 && $(CMP) $(srcdir)/out3.ok out3 && rm -f out1 out2 out3
+ @$(AWK) -f $(srcdir)/messages.awk >_out2 2>_out3
+ @-$(CMP) $(srcdir)/out1.ok _out1 && $(CMP) $(srcdir)/out2.ok _out2 && $(CMP) $(srcdir)/out3.ok _out3 && rm -f _out1 _out2 _out3
argarray::
@echo $@
@@ -1471,7 +1609,7 @@ fmtspcl.ok: fmtspcl.tok Makefile
fmtspcl: fmtspcl.ok
@echo $@
@$(AWK) -f $(srcdir)/fmtspcl.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-if test -z "$$AWKFLAGS" ; then $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ ; else \
+ @-if test -z "$$AWKFLAGS" ; then $(CMP) $@.ok _$@ && rm -f _$@ ; else \
$(CMP) $(srcdir)/$@-mpfr.ok _$@ && rm -f _$@ ; \
fi
@@ -1768,7 +1906,7 @@ beginfile1::
beginfile2:
@echo $@
- @-( cd $(srcdir) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in ) > _$@ 2>&1
+ @-( cd $(srcdir) && LC_ALL=C AWK="$(abs_builddir)/$(AWKPROG)" $(abs_srcdir)/$@.sh $(abs_srcdir)/$@.in ) > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
dumpvars::
@@ -1852,6 +1990,100 @@ mpfrbigint:
@echo $@
@$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+jarebug::
+ @echo $@
+ @$(srcdir)/$@.sh "$(AWKPROG)" "$(srcdir)/$@.awk" "$(srcdir)/$@.in" "_$@"
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ordchr2::
+ @echo $@
+ @$(AWK) -l ordchr 'BEGIN {print chr(ord("z"))}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# N.B. If the test fails, create readfile.ok so that "make diffout" will work
+readfile::
+ @echo $@
+ @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) Makefile _$@ && rm -f _$@ || cp -p Makefile $@.ok
+
+include2::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -i inclib 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -i inclib -i inclib.awk 'BEGIN {print sandwich("a", "b", "c")}' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe2::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -f inclib -f inclib.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe3::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -f hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe4::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe5::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -i hello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe6::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -i inchello -f hello.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+incdupe7::
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) --lint -f hello -i inchello >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+testext::
+ @echo $@
+ @$(AWK) '/^(@load|BEGIN)/,/^}/' $(top_srcdir)/extension/testext.c > testext.awk
+ @$(AWK) -f testext.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ testext.awk
+
+assignconst:
+ @echo $@
+ @for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; \
+ do AWKPATH=$(srcdir) $(AWK) -f $@.awk $$i ; \
+ done 2>&1 | grep -v at_exit > _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+readdir:
+ @echo This test can fail on some filesystems.
+ @echo $@
+ @ls -fli $(top_srcdir) | sed 1d | $(AWK) -f $(srcdir)/readdir0.awk > $@.ok
+ @$(AWK) -f $(srcdir)/readdir.awk $(top_srcdir) > _$@
+ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
+
+fts:
+ @echo $@
+ @$(AWK) -f $(srcdir)/fts.awk
+ @-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
+
+charasbytes:
+ @echo $@
+ @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \
+ AWKPATH=$(srcdir) $(AWK) -b -f $@.awk $(srcdir)/$@.in | \
+ od -c -t x1 | sed -e 's/ */ /g' -e 's/ *$$//' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab6:
+ @echo $@
+ @$(AWK) -d__$@ -f $(srcdir)/$@.awk
+ @grep -v '^ENVIRON' __$@ | grep -v '^PROCINFO' > _$@ ; rm __$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
@@ -2174,6 +2406,11 @@ getline4:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+getline5:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
getnr2tb:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2409,6 +2646,11 @@ ofmts:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ofs1:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
onlynl:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2509,6 +2751,11 @@ regeq:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+regexprange:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
regrange:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2799,6 +3046,26 @@ funlen:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+functab1:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+functab2:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+functab3:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+functab4:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
fwtest:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2854,6 +3121,11 @@ icasers:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+id:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
igncdym:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2869,6 +3141,11 @@ ignrcase:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+include:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
indirectcall:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2930,7 +3207,7 @@ printfbad1:
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
printfbad3:
- @echo printfbad3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -2989,6 +3266,31 @@ switch2:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+symtab1:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab2:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab3:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab4:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab5:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
double1:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -3048,6 +3350,51 @@ sprintfc:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fnmatch:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+filefuncs:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fork:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fork2:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ordchr:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+revout:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+revtwoway:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rwarray:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+time:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
# end of file Maketests
# Targets generated for other tests:
@@ -3057,7 +3404,7 @@ $(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
$(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" $$files > $(srcdir)/Maketests
clean:
- rm -fr _* core core.* fmtspcl.ok junk out1 out2 out3 strftime.ok test1 test2 seq *~
+ rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok
# An attempt to print something that can be grepped for in build logs
pass-fail:
@@ -3088,8 +3435,8 @@ valgrind-scan:
function show() {if (cmd) {printf "%s: %s\n",FILENAME,cmd; cmd = ""}; \
printf "\t%s\n",$$0}; \
{$$1 = ""}; \
- /Prog and args are:/ {incmd = 1; cmd = ""; next}; \
- incmd {if (NF == 1) incmd = 0; else {cmd = (cmd $$0); next}}; \
+ $$2 == "Command:" {incmd = 1; $$2 = ""; cmd = $$0; next}; \
+ incmd {if (/Parent PID:/) incmd = 0; else {cmd = (cmd $$0); next}}; \
/ERROR SUMMARY:/ && !/: 0 errors from 0 contexts/ {show()}; \
/definitely lost:/ && !/: 0 bytes in 0 blocks/ {show()}; \
/possibly lost:/ && !/: 0 bytes in 0 blocks/ {show()}; \
diff --git a/test/Maketests b/test/Maketests
index 96825721..6e9a1a77 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -320,6 +320,11 @@ getline4:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+getline5:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
getnr2tb:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -555,6 +560,11 @@ ofmts:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ofs1:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
onlynl:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -655,6 +665,11 @@ regeq:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+regexprange:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
regrange:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -945,6 +960,26 @@ funlen:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+functab1:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+functab2:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+functab3:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+functab4:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
fwtest:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1000,6 +1035,11 @@ icasers:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+id:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
igncdym:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1015,6 +1055,11 @@ ignrcase:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+include:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
indirectcall:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1076,7 +1121,7 @@ printfbad1:
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
printfbad3:
- @echo printfbad3
+ @echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1135,6 +1180,31 @@ switch2:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+symtab1:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab2:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab3:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab4:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+symtab5:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
double1:
@echo $@
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1194,4 +1264,49 @@ sprintfc:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fnmatch:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+filefuncs:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fork:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fork2:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ordchr:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+revout:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+revtwoway:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rwarray:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+time:
+ @echo $@
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
# end of file Maketests
diff --git a/test/assignconst.awk b/test/assignconst.awk
new file mode 100644
index 00000000..907987c7
--- /dev/null
+++ b/test/assignconst.awk
@@ -0,0 +1,58 @@
+@load "testext"
+
+BEGIN {
+ print ""
+ print "test:", ARGV[1]
+ switch (ARGV[1] + 0) {
+ case 1:
+ answer_num = 43
+ break
+ case 2:
+ ++answer_num
+ break
+ case 3:
+ --answer_num
+ break
+ case 4:
+ answer_num++
+ break
+ case 5:
+ answer_num--
+ break
+ case 6:
+ answer_num += 1
+ break
+ case 7:
+ answer_num -= 1
+ break
+ case 8:
+ answer_num *= 1
+ break
+ case 9:
+ answer_num /= 1
+ break
+ case 10:
+ answer_num ^= 1
+ break
+ case 11:
+ answer_num = answer_num "foo"
+ break
+ case 12:
+ sub(/2/, "3", answer_num)
+ break
+ case 13:
+ a[1] = 1
+ for (answer_num in a)
+ print answer_num, a[answer_num]
+ break
+ case 14:
+ test_func(answer_num)
+ break
+ }
+}
+
+function test_func(val)
+{
+ val++
+ print "in test_func, val now =", val
+}
diff --git a/test/assignconst.ok b/test/assignconst.ok
new file mode 100644
index 00000000..97698b27
--- /dev/null
+++ b/test/assignconst.ok
@@ -0,0 +1,42 @@
+
+test: 1
+gawk: assignconst.awk:8: fatal: cannot assign to defined constant
+
+test: 2
+gawk: assignconst.awk:11: fatal: cannot assign to defined constant
+
+test: 3
+gawk: assignconst.awk:14: fatal: cannot assign to defined constant
+
+test: 4
+gawk: assignconst.awk:17: fatal: cannot assign to defined constant
+
+test: 5
+gawk: assignconst.awk:20: fatal: cannot assign to defined constant
+
+test: 6
+gawk: assignconst.awk:23: fatal: cannot assign to defined constant
+
+test: 7
+gawk: assignconst.awk:26: fatal: cannot assign to defined constant
+
+test: 8
+gawk: assignconst.awk:29: fatal: cannot assign to defined constant
+
+test: 9
+gawk: assignconst.awk:32: fatal: cannot assign to defined constant
+
+test: 10
+gawk: assignconst.awk:35: fatal: cannot assign to defined constant
+
+test: 11
+gawk: assignconst.awk:38: fatal: cannot assign to defined constant
+
+test: 12
+gawk: assignconst.awk:41: fatal: cannot assign to defined constant
+
+test: 13
+gawk: assignconst.awk:45: fatal: cannot assign to defined constant
+
+test: 14
+in test_func, val now = 43
diff --git a/test/badargs.ok b/test/badargs.ok
index 35c7d027..1be81ec3 100644
--- a/test/badargs.ok
+++ b/test/badargs.ok
@@ -15,6 +15,7 @@ Short options: GNU long options: (extensions)
-E file --exec=file
-g --gen-pot
-h --help
+ -i includefile --include=includefile
-l library --load=library
-L [fatal] --lint[=fatal]
-n --non-decimal-data
diff --git a/test/charasbytes.awk b/test/charasbytes.awk
new file mode 100755
index 00000000..feb195c8
--- /dev/null
+++ b/test/charasbytes.awk
@@ -0,0 +1 @@
+{ print gensub(/\xE2\x80./, "ZZZ", "g", $0) }
diff --git a/test/charasbytes.in b/test/charasbytes.in
new file mode 100644
index 00000000..4a8d4a1e
--- /dev/null
+++ b/test/charasbytes.in
@@ -0,0 +1 @@
+–
diff --git a/test/charasbytes.ok b/test/charasbytes.ok
new file mode 100644
index 00000000..f60f2ab4
--- /dev/null
+++ b/test/charasbytes.ok
@@ -0,0 +1,3 @@
+0000000 Z Z Z \n
+ 5a 5a 5a 0a
+0000004
diff --git a/test/filefuncs.awk b/test/filefuncs.awk
new file mode 100644
index 00000000..aa532741
--- /dev/null
+++ b/test/filefuncs.awk
@@ -0,0 +1,25 @@
+@load "filefuncs"
+
+BEGIN {
+ if (chdir("..") < 0) {
+ printf "Error: chdir failed with ERRNO %s\n", ERRNO
+ exit 1
+ }
+
+ if (stat(ARGV[0], st) < 0) {
+ printf "Error: stat(%s) failed with ERRNO %s\n", ARGV[0], ERRNO
+ exit 1
+ }
+
+ nf = split("name dev ino mode nlink uid gid size blocks atime mtime ctime pmode type", f)
+
+ for (i = 1; i <= nf; i++) {
+ if (!(f[i] in st)) {
+ printf "stat value for %s is missing\n",f[i]
+ rc = 1
+ }
+ else
+ delete st[f[i]]
+ }
+ exit rc+0
+}
diff --git a/test/filefuncs.ok b/test/filefuncs.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/filefuncs.ok
diff --git a/test/fnmatch.awk b/test/fnmatch.awk
new file mode 100644
index 00000000..c0885074
--- /dev/null
+++ b/test/fnmatch.awk
@@ -0,0 +1,11 @@
+@load "fnmatch"
+
+BEGIN {
+ print "FNM_NOMATCH =", FNM_NOMATCH
+ # can't print the values; they vary from system to system
+ for (i in FNM)
+ printf("\"%s\" is an element in FNM\n", i)
+
+ printf("fnmatch(\"*.a\", \"foo.a\", 0) = %d\n", fnmatch("*.a", "foo.a", 0) )
+ printf("fnmatch(\"*.a\", \"foo.c\", 0) = %d\n", fnmatch("*.a", "foo.c", 0))
+}
diff --git a/test/fnmatch.ok b/test/fnmatch.ok
new file mode 100644
index 00000000..fd8a78ce
--- /dev/null
+++ b/test/fnmatch.ok
@@ -0,0 +1,9 @@
+FNM_NOMATCH = 1
+"LEADING_DIR" is an element in FNM
+"CASEFOLD" is an element in FNM
+"NOESCAPE" is an element in FNM
+"PERIOD" is an element in FNM
+"PATHNAME" is an element in FNM
+"FILE_NAME" is an element in FNM
+fnmatch("*.a", "foo.a", 0) = 0
+fnmatch("*.a", "foo.c", 0) = 1
diff --git a/test/fork.awk b/test/fork.awk
new file mode 100644
index 00000000..0b29f9ff
--- /dev/null
+++ b/test/fork.awk
@@ -0,0 +1,33 @@
+@load "fork"
+
+BEGIN {
+ fn = ("fork.tmp." PROCINFO["pid"])
+ switch (pid = fork()) {
+ case -1:
+ printf "Error: fork failed with ERRNO %s\n", ERRNO
+ exit 1
+ case 0:
+ # child
+ printf "pid %s ppid %s\n", PROCINFO["pid"], PROCINFO["ppid"] > fn
+ exit 0
+ default:
+ # parent
+ erc = 1
+ if ((rc = wait()) < 0)
+ printf "Error: wait failed with ERRNO %s\n", ERRNO
+ else if (rc != pid)
+ printf "Error: wait returned %s instead of child pid %s\n", rc, pid
+ else if ((getline x < fn) != 1)
+ printf "Error: getline failed on temp file %s\n", fn
+ else {
+ expected = ("pid " pid " ppid " PROCINFO["pid"])
+ if (x != expected)
+ printf "Error: child data (%s) != expected (%s)\n", x, expected
+ else if ((rc = system("rm " fn)) != 0)
+ printf "Error removing temp file %s with ERRNO %s\n", fn, ERRNO
+ else
+ erc = 0
+ }
+ exit erc
+ }
+}
diff --git a/test/fork.ok b/test/fork.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/fork.ok
diff --git a/test/fork2.awk b/test/fork2.awk
new file mode 100644
index 00000000..bd364286
--- /dev/null
+++ b/test/fork2.awk
@@ -0,0 +1,35 @@
+@load "fork"
+
+BEGIN {
+ # avoid instantiating PROCINFO prior to the fork
+ switch (pid = fork()) {
+ case -1:
+ printf "Error: fork failed with ERRNO %s\n", ERRNO
+ exit 1
+ case 0:
+ # child
+ fn = ("fork.tmp." PROCINFO["pid"])
+ printf "pid %s ppid %s\n", PROCINFO["pid"], PROCINFO["ppid"] > fn
+ exit 0
+ default:
+ # parent
+ erc = 1
+ fn = ("fork.tmp." pid)
+ if ((rc = wait()) < 0)
+ printf "Error: wait failed with ERRNO %s\n", ERRNO
+ else if (rc != pid)
+ printf "Error: wait returned %s instead of child pid %s\n", rc, pid
+ else if ((getline x < fn) != 1)
+ printf "Error: getline failed on temp file %s\n", fn
+ else {
+ expected = ("pid " pid " ppid " PROCINFO["pid"])
+ if (x != expected)
+ printf "Error: child data (%s) != expected (%s)\n", x, expected
+ else if ((rc = system("rm " fn)) != 0)
+ printf "Error removing temp file %s with ERRNO %s\n", fn, ERRNO
+ else
+ erc = 0
+ }
+ exit erc
+ }
+}
diff --git a/test/fork2.ok b/test/fork2.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/fork2.ok
diff --git a/test/fts.awk b/test/fts.awk
new file mode 100644
index 00000000..a1b49cbd
--- /dev/null
+++ b/test/fts.awk
@@ -0,0 +1,121 @@
+@load "filefuncs"
+
+BEGIN {
+ Level = 0
+
+ system("rm -fr d1 d2")
+ system("mkdir d1 d2 ; touch d1/f1 d1/f2 d2/f1 d2/f2")
+ pathlist[1] = "d1"
+ pathlist[2] = "d2"
+ flags = FTS_PHYSICAL
+ fts(pathlist, flags, data)
+
+ output = "fts.ok"
+ traverse(data)
+ close(output)
+
+ ftswalk(pathlist, data2)
+ output = "_fts"
+ traverse(data2)
+ close(output)
+
+ system("rm -fr d1 d2")
+}
+
+function indent( i)
+{
+ for (i = 1; i <= Level; i++)
+ printf("\t") > output
+}
+
+function sort_traverse(data, sorted, i)
+{
+ asorti(data, sorted)
+ for (i = 1; i in sorted; i++) {
+ indent()
+ printf("%s --> %s\n", sorted[i], data[sorted[i]]) > output
+ }
+}
+
+function traverse(data, i)
+{
+ for (i in data) {
+ if (isarray(data[i])) {
+ indent()
+ printf("%s:\n", i) > output
+
+ Level++
+ if (("mtime" in data[i]) && ! isarray(data[i][mtime])) {
+ sort_traverse(data[i])
+ } else {
+ traverse(data[i])
+ }
+ Level--
+ } else {
+ indent()
+ printf("%s --> %s\n", i, data[i]) > output
+ }
+ }
+}
+
+
+function ftswalk(pathlist, data, i, toppath)
+{
+ delete data
+ for (i = 1; i in pathlist; i++) {
+ toppath = pathlist[i]
+ data[toppath]["junk"]++ # create array
+ delete data[toppath]["junk"]
+ process(pathlist[i], data)
+ }
+}
+
+# enter process with pathname, array for that path already created but
+# empty
+
+function process(pathname, data_array,
+ stat_data, i, direntry, command, shortname) # locals
+{
+ stat(pathname, stat_data)
+ if (stat_data["type"] == "file") {
+ shortname = strrstr(pathname, "/")
+ data_array["path"] = pathname
+ for (i in stat_data) {
+ if (i == "name")
+ data_array["stat"][i] = shortname
+ else
+ data_array["stat"][i] = stat_data[i]
+ }
+
+ return
+ }
+
+ # stuff for a directory
+
+ data_array[pathname]["."]["path"] = pathname
+ for (i in stat_data)
+ data_array[pathname]["."]["stat"][i] = stat_data[i]
+
+ command = ("ls -f " pathname)
+ while ((command | getline direntry) > 0) {
+ if (direntry == "." || direntry == "..")
+ continue
+ data_array[pathname][direntry]["junk"]++
+ delete data_array[pathname][direntry]["junk"]
+ process(pathname "/" direntry,
+ data_array[pathname][direntry])
+ }
+ close(command)
+}
+
+function strrstr(string, delim, ind)
+{
+ if ((ind = index(string, delim)) == 0)
+ return string
+
+ do {
+ string = substr(string, ind + 1)
+ } while ((ind = index(string, delim)) > 0)
+
+ return string
+}
diff --git a/test/functab1.awk b/test/functab1.awk
new file mode 100644
index 00000000..05692684
--- /dev/null
+++ b/test/functab1.awk
@@ -0,0 +1,3 @@
+BEGIN {
+ delete FUNCTAB
+}
diff --git a/test/functab1.ok b/test/functab1.ok
new file mode 100644
index 00000000..2a60a4cb
--- /dev/null
+++ b/test/functab1.ok
@@ -0,0 +1,2 @@
+gawk: functab1.awk:3: fatal: `delete' is not allowed with FUNCTAB
+EXIT CODE: 2
diff --git a/test/functab2.awk b/test/functab2.awk
new file mode 100644
index 00000000..9a07dfc3
--- /dev/null
+++ b/test/functab2.awk
@@ -0,0 +1,8 @@
+function foo()
+{
+ print "foo!"
+}
+
+BEGIN {
+ FUNCTAB["a"] = "something"
+}
diff --git a/test/functab2.ok b/test/functab2.ok
new file mode 100644
index 00000000..32b07ad3
--- /dev/null
+++ b/test/functab2.ok
@@ -0,0 +1,2 @@
+gawk: functab2.awk:7: fatal: cannot assign to elements of FUNCTAB
+EXIT CODE: 2
diff --git a/test/functab3.awk b/test/functab3.awk
new file mode 100644
index 00000000..98fa49b1
--- /dev/null
+++ b/test/functab3.awk
@@ -0,0 +1,10 @@
+function foo()
+{
+ print "foo!"
+}
+
+BEGIN {
+ x = FUNCTAB["foo"]
+ print "x =", x
+ @x()
+}
diff --git a/test/functab3.ok b/test/functab3.ok
new file mode 100644
index 00000000..66f53d72
--- /dev/null
+++ b/test/functab3.ok
@@ -0,0 +1,2 @@
+x = foo
+foo!
diff --git a/test/functab4.awk b/test/functab4.awk
new file mode 100644
index 00000000..0d9d4267
--- /dev/null
+++ b/test/functab4.awk
@@ -0,0 +1,14 @@
+@load "filefuncs"
+
+function foo()
+{
+ print "foo!"
+}
+
+BEGIN {
+ x = FUNCTAB["chdir"]
+ print "x =", x
+ @x("/tmp")
+ printf "we are now in --> "
+ system("/bin/pwd || /usr/bin/pwd")
+}
diff --git a/test/functab4.ok b/test/functab4.ok
new file mode 100644
index 00000000..70a520b7
--- /dev/null
+++ b/test/functab4.ok
@@ -0,0 +1,3 @@
+x = chdir
+gawk: functab4.awk:11: fatal: cannot (yet) call extension functions indirectly
+EXIT CODE: 2
diff --git a/test/getline5.awk b/test/getline5.awk
new file mode 100644
index 00000000..4757bcfe
--- /dev/null
+++ b/test/getline5.awk
@@ -0,0 +1,35 @@
+# Message-ID: <4F7832BD.9030709@gmx.com>
+# Date: Sun, 01 Apr 2012 11:49:33 +0100
+# From: Duncan Moore <duncan.moore@gmx.com>
+# To: "bug-gawk@gnu.org" <bug-gawk@gnu.org>
+# Subject: [bug-gawk] getline difference from gawk versions >=4.0.0
+#
+# Hi
+#
+# b.awk:
+#
+# BEGIN {
+# system("echo 1 > f")
+# while ((getline a[++c] < "f") > 0) {}
+# print c
+# }
+#
+# gawk -f b.awk
+#
+# Prior to gawk 4.0.0 this outputs:
+#
+# 1
+#
+# For 4.0.0 and 4.0.1 it outputs:
+#
+# 2
+#
+# Regards
+# Duncan Moore
+
+BEGIN {
+ system("echo 1 > f")
+ while ((getline a[++c] < "f") > 0) {}
+ print c
+ system("rm -f f")
+}
diff --git a/test/getline5.ok b/test/getline5.ok
new file mode 100644
index 00000000..0cfbf088
--- /dev/null
+++ b/test/getline5.ok
@@ -0,0 +1 @@
+2
diff --git a/test/hello.awk b/test/hello.awk
new file mode 100644
index 00000000..9e6d569d
--- /dev/null
+++ b/test/hello.awk
@@ -0,0 +1,3 @@
+BEGIN {
+ print "Hello"
+}
diff --git a/test/id.awk b/test/id.awk
new file mode 100644
index 00000000..2a35e42c
--- /dev/null
+++ b/test/id.awk
@@ -0,0 +1,11 @@
+function function1()
+{
+ print "function1"
+}
+
+BEGIN {
+ an_array[1] = 1
+
+ for (i in PROCINFO["identifiers"])
+ printf("%s -> %s\n", i, PROCINFO["identifiers"][i])
+}
diff --git a/test/id.ok b/test/id.ok
new file mode 100644
index 00000000..d31573de
--- /dev/null
+++ b/test/id.ok
@@ -0,0 +1,32 @@
+FUNCTAB -> array
+ARGV -> array
+SYMTAB -> array
+ORS -> scalar
+ROUNDMODE -> scalar
+i -> untyped
+OFS -> scalar
+ERRNO -> scalar
+FNR -> scalar
+LINT -> scalar
+IGNORECASE -> scalar
+NR -> scalar
+function1 -> user
+ARGIND -> scalar
+NF -> scalar
+TEXTDOMAIN -> scalar
+CONVFMT -> scalar
+FIELDWIDTHS -> scalar
+ARGC -> scalar
+an_array -> untyped
+PROCINFO -> array
+PREC -> scalar
+SUBSEP -> scalar
+FPAT -> scalar
+RS -> scalar
+FS -> scalar
+OFMT -> scalar
+RLENGTH -> scalar
+RT -> scalar
+BINMODE -> scalar
+FILENAME -> scalar
+RSTART -> scalar
diff --git a/test/incdupe.ok b/test/incdupe.ok
new file mode 100644
index 00000000..63c85e41
--- /dev/null
+++ b/test/incdupe.ok
@@ -0,0 +1,3 @@
+gawk: warning: already included source file `inclib.awk'
+Include library loaded.
+abc
diff --git a/test/incdupe2.ok b/test/incdupe2.ok
new file mode 100644
index 00000000..11787238
--- /dev/null
+++ b/test/incdupe2.ok
@@ -0,0 +1,2 @@
+gawk: inclib.awk:5: error: function name `sandwich' previously defined
+EXIT CODE: 1
diff --git a/test/incdupe3.ok b/test/incdupe3.ok
new file mode 100644
index 00000000..af17d2f8
--- /dev/null
+++ b/test/incdupe3.ok
@@ -0,0 +1,2 @@
+Hello
+Hello
diff --git a/test/incdupe4.ok b/test/incdupe4.ok
new file mode 100644
index 00000000..a6fc26e2
--- /dev/null
+++ b/test/incdupe4.ok
@@ -0,0 +1,2 @@
+gawk: fatal: can't include `hello.awk' and use it as a program file
+EXIT CODE: 2
diff --git a/test/incdupe5.ok b/test/incdupe5.ok
new file mode 100644
index 00000000..a6fc26e2
--- /dev/null
+++ b/test/incdupe5.ok
@@ -0,0 +1,2 @@
+gawk: fatal: can't include `hello.awk' and use it as a program file
+EXIT CODE: 2
diff --git a/test/incdupe6.ok b/test/incdupe6.ok
new file mode 100644
index 00000000..42a4f9fd
--- /dev/null
+++ b/test/incdupe6.ok
@@ -0,0 +1,3 @@
+gawk: inchello:1: warning: `include' is a gawk extension
+gawk: inchello:2: fatal: can't include `hello' and use it as a program file
+EXIT CODE: 2
diff --git a/test/incdupe7.ok b/test/incdupe7.ok
new file mode 100644
index 00000000..42a4f9fd
--- /dev/null
+++ b/test/incdupe7.ok
@@ -0,0 +1,3 @@
+gawk: inchello:1: warning: `include' is a gawk extension
+gawk: inchello:2: fatal: can't include `hello' and use it as a program file
+EXIT CODE: 2
diff --git a/test/inchello.awk b/test/inchello.awk
new file mode 100644
index 00000000..148d4bef
--- /dev/null
+++ b/test/inchello.awk
@@ -0,0 +1 @@
+@include "hello"
diff --git a/test/inclib.awk b/test/inclib.awk
new file mode 100644
index 00000000..51785283
--- /dev/null
+++ b/test/inclib.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ print "Include library loaded."
+}
+
+function sandwich(pfx,x,sfx) {
+ return (pfx x sfx)
+}
diff --git a/test/include.awk b/test/include.awk
new file mode 100644
index 00000000..8fc7837d
--- /dev/null
+++ b/test/include.awk
@@ -0,0 +1,5 @@
+@include "inclib.awk"
+
+BEGIN {
+ print sandwich("a", "b", "c")
+}
diff --git a/test/include.ok b/test/include.ok
new file mode 100644
index 00000000..a720efca
--- /dev/null
+++ b/test/include.ok
@@ -0,0 +1,2 @@
+Include library loaded.
+abc
diff --git a/test/include2.ok b/test/include2.ok
new file mode 100644
index 00000000..a720efca
--- /dev/null
+++ b/test/include2.ok
@@ -0,0 +1,2 @@
+Include library loaded.
+abc
diff --git a/test/jarebug.awk b/test/jarebug.awk
new file mode 100644
index 00000000..906d1846
--- /dev/null
+++ b/test/jarebug.awk
@@ -0,0 +1 @@
+/.*/ { gsub ("·½", "ERROR"); print; }
diff --git a/test/jarebug.in b/test/jarebug.in
new file mode 100644
index 00000000..6ce66826
--- /dev/null
+++ b/test/jarebug.in
@@ -0,0 +1,4 @@
+aa·ïa¿·½è
+aaa·ïa¿·½è
+aaaa·ïa¿·½è
+aaaaa·ïa¿·½è
diff --git a/test/jarebug.ok b/test/jarebug.ok
new file mode 100644
index 00000000..6ce66826
--- /dev/null
+++ b/test/jarebug.ok
@@ -0,0 +1,4 @@
+aa·ïa¿·½è
+aaa·ïa¿·½è
+aaaa·ïa¿·½è
+aaaaa·ïa¿·½è
diff --git a/test/jarebug.sh b/test/jarebug.sh
new file mode 100755
index 00000000..dcc73e6c
--- /dev/null
+++ b/test/jarebug.sh
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+awk=$1
+prog=$2
+infile=$3
+out=$4
+
+# GLIBC gives us ja_JP.EUC-JP but Mac OS X uses ja_JP.eucJP
+
+cp $infile $out # set up default
+
+for locale in ja_JP.EUC-JP ja_JP.eucJP
+do
+ if locale -a | grep $locale > /dev/null
+ then
+ LANG=$locale
+ LC_ALL=$locale
+ export LANG LC_ALL
+ $awk -f $prog $infile >$out 2>&1 || echo EXIT CODE: $? >> $out
+ fi
+done
diff --git a/test/lintwarn.ok b/test/lintwarn.ok
index 169b0020..ec87612f 100644
--- a/test/lintwarn.ok
+++ b/test/lintwarn.ok
@@ -3,9 +3,7 @@ gawk: lintwarn.awk:3: error: `getline var' invalid inside `BEGINFILE' rule
gawk: lintwarn.awk:4: error: `getline' invalid inside `BEGINFILE' rule
gawk: lintwarn.awk:8: warning: statement may have no effect
gawk: lintwarn.awk:9: warning: plain `print' in BEGIN or END rule should probably be `print ""'
-gawk: lintwarn.awk:10: warning: `nextfile' is a gawk extension
gawk: lintwarn.awk:10: error: `nextfile' used in BEGIN action
-gawk: lintwarn.awk:11: warning: `delete array' is a gawk extension
gawk: lintwarn.awk:12: warning: `delete(array)' is a non-portable tawk extension
gawk: lintwarn.awk:13: warning: regular expression on right of assignment
gawk: lintwarn.awk:14: warning: regular expression on right of comparison
@@ -18,6 +16,7 @@ gawk: lintwarn.awk:18: warning: `case' is a gawk extension
gawk: lintwarn.awk:19: warning: `default' is a gawk extension
gawk: lintwarn.awk:19: error: duplicate `default' detected in switch body
gawk: lintwarn.awk:18: error: duplicate case values in switch body: 1
+gawk: lintwarn.awk:24: error: `continue' is not allowed outside a loop
gawk: lintwarn.awk:23: error: `break' is not allowed outside a loop or switch
gawk: lintwarn.awk:24: error: `continue' is not allowed outside a loop
gawk: lintwarn.awk:25: error: `next' used in BEGIN action
diff --git a/test/messages.awk b/test/messages.awk
index 555f6e38..50f7d91f 100644
--- a/test/messages.awk
+++ b/test/messages.awk
@@ -2,7 +2,7 @@
# with and without -c (compatibility) flag, redirecting output
# from gawk to a file or not. Some results can be quite unexpected.
BEGIN {
- print "Goes to a file out1" > "out1"
+ print "Goes to a file out1" > "_out1"
print "Normal print statement"
print "This printed on stdout" > "/dev/stdout"
print "You blew it!" > "/dev/stderr"
diff --git a/test/ofs1.awk b/test/ofs1.awk
new file mode 100755
index 00000000..83b3c2a5
--- /dev/null
+++ b/test/ofs1.awk
@@ -0,0 +1,23 @@
+# Translate this shell script into gawk:
+#
+#! /bin/sh -
+#
+# awktest()
+# {
+# echo a:b:c | $AWK -F":" '{$2="x"; OFS=FS; print}'
+# echo a:b:c | $AWK -F":" '{$2="x"; print; OFS=FS; print}'
+# echo a:b:c | $AWK -F":" '{$2="x"; print $1; OFS=FS; print}'
+# echo a:b:c | $AWK -F":" '{$2="x"; print; $2=$2; OFS=FS; print}'
+# }
+#
+# AWK=./gawk
+# awktest > foo.gawk
+
+BEGIN { FS = ":" }
+
+# Have to reset OFS at end since not running separate invocations
+
+FNR == 1 { $2 = "x"; OFS = FS; print ; OFS = " "}
+FNR == 2 { $2 = "x"; print; OFS = FS; print ; OFS = " "}
+FNR == 3 { $2 = "x"; print $1; OFS = FS; print ; OFS = " "}
+FNR == 4 { $2 = "x"; print; $2 = $2; OFS = FS; print }
diff --git a/test/ofs1.in b/test/ofs1.in
new file mode 100644
index 00000000..0582b9b1
--- /dev/null
+++ b/test/ofs1.in
@@ -0,0 +1,4 @@
+a:b:c
+a:b:c
+a:b:c
+a:b:c
diff --git a/test/ofs1.ok b/test/ofs1.ok
new file mode 100644
index 00000000..a3a8ca7b
--- /dev/null
+++ b/test/ofs1.ok
@@ -0,0 +1,7 @@
+a:x:c
+a x c
+a x c
+a
+a:x:c
+a x c
+a:x:c
diff --git a/test/ordchr.awk b/test/ordchr.awk
new file mode 100644
index 00000000..0295105e
--- /dev/null
+++ b/test/ordchr.awk
@@ -0,0 +1,10 @@
+@load "ordchr"
+
+BEGIN {
+ print chr(ord("A"))
+ print chr(ord("0"))
+ print ord(chr(65))
+ # test if type conversion between strings and numbers is working properly
+ print chr(ord(0))
+ print ord(chr("65"))
+}
diff --git a/test/ordchr.ok b/test/ordchr.ok
new file mode 100644
index 00000000..86d901e9
--- /dev/null
+++ b/test/ordchr.ok
@@ -0,0 +1,5 @@
+A
+0
+65
+0
+65
diff --git a/test/ordchr2.ok b/test/ordchr2.ok
new file mode 100644
index 00000000..b6802534
--- /dev/null
+++ b/test/ordchr2.ok
@@ -0,0 +1 @@
+z
diff --git a/test/readdir.awk b/test/readdir.awk
new file mode 100644
index 00000000..d407bbce
--- /dev/null
+++ b/test/readdir.awk
@@ -0,0 +1,3 @@
+@load "readdir"
+
+{ print }
diff --git a/test/readdir0.awk b/test/readdir0.awk
new file mode 100644
index 00000000..54306f10
--- /dev/null
+++ b/test/readdir0.awk
@@ -0,0 +1,9 @@
+{
+ ino = $1
+ name = $NF
+ type = substr($2, 1, 1)
+ if (type == "-")
+ type = "f"
+
+ printf "%s/%s/%s\n", ino, name, type
+}
diff --git a/test/regexprange.awk b/test/regexprange.awk
new file mode 100644
index 00000000..861e5ee5
--- /dev/null
+++ b/test/regexprange.awk
@@ -0,0 +1,14 @@
+BEGIN {
+ range = "[a-dx-z]"
+
+ split("ABCDEFGHIJKLMNOPQRSTUVWXYZ", upper, "")
+ split("abcdefghijklmnopqrstuvwxyz", lower, "")
+
+ for (i = 1; i in upper; i++)
+ printf("%s ~ %s ---> %s\n",
+ upper[i], range, (upper[i] ~ range) ? "true" : "false")
+
+ for (i = 1; i in lower; i++)
+ printf("%s ~ %s ---> %s\n",
+ lower[i], range, (lower[i] ~ range) ? "true" : "false")
+}
diff --git a/test/regexprange.ok b/test/regexprange.ok
new file mode 100644
index 00000000..dbf5d35a
--- /dev/null
+++ b/test/regexprange.ok
@@ -0,0 +1,52 @@
+A ~ [a-dx-z] ---> false
+B ~ [a-dx-z] ---> false
+C ~ [a-dx-z] ---> false
+D ~ [a-dx-z] ---> false
+E ~ [a-dx-z] ---> false
+F ~ [a-dx-z] ---> false
+G ~ [a-dx-z] ---> false
+H ~ [a-dx-z] ---> false
+I ~ [a-dx-z] ---> false
+J ~ [a-dx-z] ---> false
+K ~ [a-dx-z] ---> false
+L ~ [a-dx-z] ---> false
+M ~ [a-dx-z] ---> false
+N ~ [a-dx-z] ---> false
+O ~ [a-dx-z] ---> false
+P ~ [a-dx-z] ---> false
+Q ~ [a-dx-z] ---> false
+R ~ [a-dx-z] ---> false
+S ~ [a-dx-z] ---> false
+T ~ [a-dx-z] ---> false
+U ~ [a-dx-z] ---> false
+V ~ [a-dx-z] ---> false
+W ~ [a-dx-z] ---> false
+X ~ [a-dx-z] ---> false
+Y ~ [a-dx-z] ---> false
+Z ~ [a-dx-z] ---> false
+a ~ [a-dx-z] ---> true
+b ~ [a-dx-z] ---> true
+c ~ [a-dx-z] ---> true
+d ~ [a-dx-z] ---> true
+e ~ [a-dx-z] ---> false
+f ~ [a-dx-z] ---> false
+g ~ [a-dx-z] ---> false
+h ~ [a-dx-z] ---> false
+i ~ [a-dx-z] ---> false
+j ~ [a-dx-z] ---> false
+k ~ [a-dx-z] ---> false
+l ~ [a-dx-z] ---> false
+m ~ [a-dx-z] ---> false
+n ~ [a-dx-z] ---> false
+o ~ [a-dx-z] ---> false
+p ~ [a-dx-z] ---> false
+q ~ [a-dx-z] ---> false
+r ~ [a-dx-z] ---> false
+s ~ [a-dx-z] ---> false
+t ~ [a-dx-z] ---> false
+u ~ [a-dx-z] ---> false
+v ~ [a-dx-z] ---> false
+w ~ [a-dx-z] ---> false
+x ~ [a-dx-z] ---> true
+y ~ [a-dx-z] ---> true
+z ~ [a-dx-z] ---> true
diff --git a/test/revout.awk b/test/revout.awk
new file mode 100644
index 00000000..25f62fc7
--- /dev/null
+++ b/test/revout.awk
@@ -0,0 +1,6 @@
+@load "revoutput"
+
+BEGIN {
+ REVOUT = 1
+ print "hello, world" > "/dev/stdout"
+}
diff --git a/test/revout.ok b/test/revout.ok
new file mode 100644
index 00000000..8101cb93
--- /dev/null
+++ b/test/revout.ok
@@ -0,0 +1 @@
+dlrow ,olleh
diff --git a/test/revtwoway.awk b/test/revtwoway.awk
new file mode 100644
index 00000000..05bded5a
--- /dev/null
+++ b/test/revtwoway.awk
@@ -0,0 +1,11 @@
+@load "revtwoway"
+
+BEGIN {
+ cmd = "/magic/mirror"
+
+ print "hello, world" |& cmd
+ cmd |& getline line
+
+ printf("got back: <%s>, RT = <%s>\n", line, RT)
+ close(cmd)
+}
diff --git a/test/revtwoway.ok b/test/revtwoway.ok
new file mode 100644
index 00000000..b8a5ff31
--- /dev/null
+++ b/test/revtwoway.ok
@@ -0,0 +1,2 @@
+got back: <dlrow ,olleh>, RT = <
+>
diff --git a/test/rwarray.awk b/test/rwarray.awk
new file mode 100644
index 00000000..5d1b7e9d
--- /dev/null
+++ b/test/rwarray.awk
@@ -0,0 +1,33 @@
+@load "rwarray"
+
+BEGIN {
+ while ((getline word) > 0)
+ dict[word] = word word
+
+ n = asorti(dict, dictindices)
+ for (i = 1; i <= n; i++)
+ printf("dict[%s] = %s\n", dictindices[i], dict[dictindices[i]]) > "orig.out"
+ close("orig.out");
+
+ ret = writea("orig.bin", dict)
+ printf "writea() returned %d, expecting 1\n", ret
+
+
+ ret = reada("orig.bin", dict)
+ printf "reada() returned %d, expecting 1\n", ret
+
+ n = asorti(dict, dictindices)
+ for (i = 1; i <= n; i++)
+ printf("dict[%s] = %s\n", dictindices[i], dict[dictindices[i]]) > "new.out"
+ close("new.out");
+
+ ret = system("cmp orig.out new.out")
+
+ if (ret == 0)
+ print "old and new are equal - GOOD"
+ else
+ print "old and new are not equal - BAD"
+
+ if (ret == 0 && !("KEEPIT" in ENVIRON))
+ system("rm -f orig.bin orig.out new.out")
+}
diff --git a/test/rwarray.in b/test/rwarray.in
new file mode 100644
index 00000000..aff88306
--- /dev/null
+++ b/test/rwarray.in
@@ -0,0 +1,780 @@
+a
+aardvark
+aardvark's
+aardvarks
+abaci
+aback
+abacus
+abacus's
+abacuses
+abaft
+abalone
+abalone's
+abalones
+abandon
+abandoned
+abandoning
+abandonment
+abandonment's
+abandons
+abase
+abased
+abasement
+abases
+abash
+abashed
+abashes
+abashing
+abasing
+abate
+abated
+b
+baa
+baaed
+baaing
+baas
+babble
+babbled
+babbler
+babbler's
+babblers
+babbles
+babbling
+babe
+babe's
+babel
+babels
+babes
+babied
+babier
+babies
+babiest
+baboon
+baboon's
+baboons
+babushka
+babushka's
+babushkas
+baby
+baby's
+babyhood
+c
+cab
+cab's
+cabal
+cabal's
+cabals
+cabana
+cabana's
+cabanas
+cabaret
+cabaret's
+cabarets
+cabbage
+cabbage's
+cabbages
+cabbed
+cabbie
+cabbies
+cabbing
+cabby
+cabby's
+cabin
+cabin's
+cabinet
+cabinet's
+cabinetmaker
+cabinetmaker's
+cabinetmakers
+cabinets
+cabins
+d
+d'arezzo
+d'estaing
+dab
+dabbed
+dabbing
+dabble
+dabbled
+dabbler
+dabbler's
+dabblers
+dabbles
+dabbling
+dabs
+dacha
+dacha's
+dachas
+dachshund
+dachshund's
+dachshunds
+dactyl
+dactyl's
+dactylic
+dactylics
+dactyls
+dad
+dad's
+daddies
+db
+db's
+e
+e'er
+each
+eager
+eager's
+eagerer
+eagerest
+eagerly
+eagerness
+eagerness's
+eagle
+eagle's
+eagles
+eaglet
+eaglet's
+eaglets
+ear
+ear's
+earache
+earache's
+earaches
+eardrum
+eardrum's
+eardrums
+earful
+earful's
+earfuls
+earl
+ebay
+ebay's
+f
+fa
+fa's
+fable
+fable's
+fabled
+fables
+fabric
+fabric's
+fabricate
+fabricated
+fabricates
+fabricating
+fabrication
+fabrication's
+fabrications
+fabrics
+fabulous
+fabulously
+facade
+facade's
+facades
+face
+face's
+faced
+faceless
+facelift
+facelifts
+faces
+facet
+g
+gab
+gabardine
+gabardine's
+gabardines
+gabbed
+gabbier
+gabbiest
+gabbing
+gabble
+gabbled
+gabbles
+gabbling
+gabby
+gaberdine
+gaberdine's
+gaberdines
+gable
+gable's
+gabled
+gables
+gabling
+gabs
+gad
+gadabout
+gadabout's
+gadabouts
+gadded
+gadding
+gadflies
+h
+h'm
+ha
+haberdasher
+haberdasher's
+haberdasheries
+haberdashers
+haberdashery
+haberdashery's
+habit
+habit's
+habitability
+habitability's
+habitable
+habitat
+habitat's
+habitation
+habitation's
+habitations
+habitats
+habits
+habitual
+habitually
+habituals
+habituate
+habituated
+habituates
+habituating
+habituation
+habituation's
+i
+iamb
+iamb's
+iambic
+iambics
+iambs
+ibex
+ibex's
+ibexes
+ibices
+ibis
+ibis's
+ibises
+ibuprofen
+ice
+ice's
+iceberg
+iceberg's
+icebergs
+icebound
+icebox
+icebox's
+iceboxes
+icebreaker
+icebreaker's
+icebreakers
+icecap
+icecap's
+icecaps
+iced
+j
+jab
+jabbed
+jabber
+jabbered
+jabberer
+jabberer's
+jabberers
+jabbering
+jabbers
+jabbing
+jabot
+jabot's
+jabots
+jabs
+jack
+jack's
+jackal
+jackal's
+jackals
+jackass
+jackass's
+jackasses
+jackboot
+jackboot's
+jackboots
+jackdaw
+jackdaw's
+jackdaws
+jacked
+k
+kabob
+kabob's
+kabobs
+kaboom
+kale
+kale's
+kaleidoscope
+kaleidoscope's
+kaleidoscopes
+kaleidoscopic
+kamikaze
+kamikaze's
+kamikazes
+kangaroo
+kangaroo's
+kangarooed
+kangarooing
+kangaroos
+kaolin
+kaolin's
+kapok
+kapok's
+kaput
+kaput's
+karakul
+karakul's
+khz
+khz's
+kw
+l
+la
+la's
+lab
+lab's
+label
+label's
+labeled
+labeling
+labelled
+labelling
+labels
+labia
+labia's
+labial
+labials
+labium
+labor
+labor's
+laboratories
+laboratory
+laboratory's
+labored
+laborer
+laborer's
+laborers
+laboring
+laborious
+laboriously
+labors
+m
+ma
+ma'am
+ma's
+macabre
+macadam
+macadam's
+macaroni
+macaroni's
+macaroon
+macaroon's
+macaroons
+macaw
+macaw's
+macaws
+mace
+mace's
+maced
+macerate
+macerated
+macerates
+macerating
+maceration
+maceration's
+maces
+machete
+machete's
+machetes
+machination
+machination's
+n
+nab
+nabbed
+nabbing
+nabob
+nabob's
+nabobs
+nabs
+nacho
+nachos
+nacre
+nacre's
+nadir
+nadir's
+nadirs
+nag
+nagged
+nagging
+nags
+naiad
+naiad's
+naiades
+naiads
+nail
+nail's
+nailbrush
+nailbrush's
+nailbrushes
+nailed
+nailing
+o
+o'clock
+o'er
+oaf
+oaf's
+oafish
+oafs
+oak
+oak's
+oaken
+oaks
+oakum
+oakum's
+oar
+oar's
+oared
+oaring
+oarlock
+oarlock's
+oarlocks
+oars
+oarsman
+oarsman's
+oarsmen
+oases
+oasis
+oasis's
+oat
+oat's
+oaten
+p
+pa
+pa's
+pace
+pace's
+paced
+pacemaker
+pacemaker's
+pacemakers
+paces
+pacesetter
+pacesetter's
+pacesetters
+pachyderm
+pachyderm's
+pachyderms
+pacific
+pacifically
+pacification
+pacification's
+pacified
+pacifier
+pacifier's
+pacifiers
+pacifies
+pacifism
+pacifism's
+pacifist
+ph
+ph's
+q
+qua
+quack
+quacked
+quackery
+quackery's
+quacking
+quacks
+quad
+quad's
+quadrangle
+quadrangle's
+quadrangles
+quadrangular
+quadrangular's
+quadrant
+quadrant's
+quadrants
+quadraphonic
+quadraphonics
+quadratic
+quadratic's
+quadrature
+quadrature's
+quadrennial
+quadriceps
+quadriceps's
+quadricepses
+quadrilateral
+quadrilaterals
+r
+rabbi
+rabbi's
+rabbies
+rabbinate
+rabbinate's
+rabbinical
+rabbis
+rabbit
+rabbit's
+rabbited
+rabbiting
+rabbits
+rabble
+rabble's
+rabbles
+rabid
+rabies
+raccoon
+raccoon's
+raccoons
+race
+race's
+racecourse
+racecourse's
+racecourses
+raced
+racehorse
+racehorse's
+racehorses
+s
+sabbatical
+sabbaticals
+saber
+saber's
+sabers
+sable
+sable's
+sabled
+sables
+sabling
+sabotage
+sabotage's
+sabotaged
+sabotages
+sabotaging
+saboteur
+saboteur's
+saboteurs
+sabre
+sabres
+sac
+sac's
+saccharin
+saccharin's
+saccharine
+sacerdotal
+sachem
+sachem's
+sachems
+t
+tab
+tab's
+tabbed
+tabbies
+tabbing
+tabby
+tabernacle
+tabernacle's
+tabernacles
+table
+table's
+tableau
+tableau's
+tableaus
+tableaux
+tablecloth
+tablecloth's
+tablecloths
+tabled
+tableland
+tableland's
+tablelands
+tables
+tablespoon
+tablespoon's
+tablespoonful
+tablespoonful's
+tablespoonfuls
+tablespoons
+u
+ubiquitous
+ubiquitously
+ubiquity
+udder
+udder's
+udders
+ugh
+uglied
+uglier
+uglies
+ugliest
+ugliness
+ugliness's
+ugly
+uglying
+uh
+ukulele
+ukulele's
+ukuleles
+ulcer
+ulcer's
+ulcerate
+ulcerated
+ulcerates
+ulcerating
+ulceration
+ulceration's
+ulcered
+ulcering
+v
+vacancies
+vacancy
+vacancy's
+vacant
+vacantly
+vacate
+vacated
+vacates
+vacating
+vacation
+vacation's
+vacationed
+vacationer
+vacationers
+vacationing
+vacations
+vaccinate
+vaccinated
+vaccinates
+vaccinating
+vaccination
+vaccination's
+vaccinations
+vaccine
+vaccine's
+vaccines
+vacillate
+vacillated
+vacillates
+w
+wackes
+wackier
+wackiest
+wackiness
+wackiness's
+wacko
+wackos
+wacky
+wad
+wad's
+wadded
+wadding
+wadding's
+waddle
+waddled
+waddles
+waddling
+wade
+waded
+wader
+wader's
+waders
+wades
+wadi
+wadi's
+wadies
+wading
+wadis
+wads
+x
+xenon
+xenon's
+xenophobia
+xenophobia's
+xenophobic
+xenophon's
+xerographic
+xerography
+xerography's
+xerox
+xerox's
+xeroxed
+xeroxes
+xeroxing
+xerxes
+xerxes's
+xhosa
+xhosa's
+xi'an
+xiaoping
+xiaoping's
+xingu
+xylem
+xylem's
+xylophone
+xylophone's
+xylophones
+xylophonist
+xylophonists
+y
+y'all
+ya
+yacht
+yacht's
+yachted
+yachting
+yachting's
+yachts
+yachtsman
+yachtsmen
+yahoo
+yahoo's
+yahoos
+yak
+yak's
+yakked
+yakking
+yaks
+yam
+yam's
+yammer
+yammered
+yammering
+yammers
+yams
+yank
+yanked
+yanking
+yanks
+z
+zanied
+zanier
+zanies
+zaniest
+zaniness
+zaniness's
+zany
+zanying
+zap
+zapped
+zapping
+zaps
+zeal
+zeal's
+zealot
+zealot's
+zealots
+zealous
+zealously
+zealousness
+zealousness's
+zebra
+zebra's
+zebras
+zebu
+zebu's
+zebus
+zed
+zed's
diff --git a/test/rwarray.ok b/test/rwarray.ok
new file mode 100644
index 00000000..8392135e
--- /dev/null
+++ b/test/rwarray.ok
@@ -0,0 +1,3 @@
+writea() returned 1, expecting 1
+reada() returned 1, expecting 1
+old and new are equal - GOOD
diff --git a/test/symtab1.awk b/test/symtab1.awk
new file mode 100644
index 00000000..eeb01437
--- /dev/null
+++ b/test/symtab1.awk
@@ -0,0 +1,21 @@
+function dumparray(name, array, i)
+{
+ if (name == "ENVIRON" || name == "PROCINFO")
+ return
+
+ for (i in array)
+ if (isarray(array[i]))
+ dumparray(name "[" i "]", array[i])
+ else
+ printf("%s[%s] = %s\n", name, i, array[i])
+}
+
+BEGIN {
+ a[1] = 1
+ a[2][1] = 21
+ for (i in SYMTAB)
+ if (isarray(SYMTAB[i]))
+ dumparray(i, SYMTAB[i])
+ else
+ printf("SYMTAB[\"%s\"] = \"%s\"\n", i, SYMTAB[i])
+}
diff --git a/test/symtab1.ok b/test/symtab1.ok
new file mode 100644
index 00000000..3e435dd2
--- /dev/null
+++ b/test/symtab1.ok
@@ -0,0 +1,31 @@
+ARGV[0] = gawk
+SYMTAB["i"] = "i"
+SYMTAB["ROUNDMODE"] = "N"
+SYMTAB["ORS"] = "
+"
+SYMTAB["OFS"] = " "
+SYMTAB["LINT"] = "0"
+SYMTAB["FNR"] = "0"
+SYMTAB["ERRNO"] = ""
+SYMTAB["NR"] = "0"
+SYMTAB["IGNORECASE"] = "0"
+SYMTAB["TEXTDOMAIN"] = "messages"
+SYMTAB["NF"] = "-1"
+SYMTAB["ARGIND"] = "0"
+a[1] = 1
+a[2][1] = 21
+SYMTAB["ARGC"] = "1"
+SYMTAB["FIELDWIDTHS"] = ""
+SYMTAB["CONVFMT"] = "%.6g"
+SYMTAB["SUBSEP"] = ""
+SYMTAB["PREC"] = "53"
+SYMTAB["RS"] = "
+"
+SYMTAB["FPAT"] = "[^[:space:]]+"
+SYMTAB["RT"] = ""
+SYMTAB["RLENGTH"] = "0"
+SYMTAB["OFMT"] = "%.6g"
+SYMTAB["FS"] = " "
+SYMTAB["RSTART"] = "0"
+SYMTAB["FILENAME"] = ""
+SYMTAB["BINMODE"] = "0"
diff --git a/test/symtab2.awk b/test/symtab2.awk
new file mode 100644
index 00000000..bb26f75d
--- /dev/null
+++ b/test/symtab2.awk
@@ -0,0 +1,6 @@
+BEGIN {
+ a = 5
+ printf "a = %d, SYMTAB[\"a\"] = %d\n", a, SYMTAB["a"]
+ SYMTAB["a"] = 4
+ printf "a = %d, SYMTAB[\"a\"] = %d\n", a, SYMTAB["a"]
+}
diff --git a/test/symtab2.ok b/test/symtab2.ok
new file mode 100644
index 00000000..23d2bf69
--- /dev/null
+++ b/test/symtab2.ok
@@ -0,0 +1,2 @@
+a = 5, SYMTAB["a"] = 5
+a = 4, SYMTAB["a"] = 4
diff --git a/test/symtab3.awk b/test/symtab3.awk
new file mode 100644
index 00000000..4c2026dc
--- /dev/null
+++ b/test/symtab3.awk
@@ -0,0 +1 @@
+BEGIN { a = 5 ; delete SYMTAB["a"] }
diff --git a/test/symtab3.ok b/test/symtab3.ok
new file mode 100644
index 00000000..5b283583
--- /dev/null
+++ b/test/symtab3.ok
@@ -0,0 +1,2 @@
+gawk: symtab3.awk:1: fatal: `delete' is not allowed with SYMTAB
+EXIT CODE: 2
diff --git a/test/symtab4.awk b/test/symtab4.awk
new file mode 100644
index 00000000..4eed7e99
--- /dev/null
+++ b/test/symtab4.awk
@@ -0,0 +1 @@
+{SYMTAB["POS"]=1 ; print $POS }
diff --git a/test/symtab4.in b/test/symtab4.in
new file mode 100644
index 00000000..d35e1920
--- /dev/null
+++ b/test/symtab4.in
@@ -0,0 +1,2 @@
+1 a
+2 b
diff --git a/test/symtab4.ok b/test/symtab4.ok
new file mode 100644
index 00000000..1191247b
--- /dev/null
+++ b/test/symtab4.ok
@@ -0,0 +1,2 @@
+1
+2
diff --git a/test/symtab5.awk b/test/symtab5.awk
new file mode 100644
index 00000000..e4fbc85f
--- /dev/null
+++ b/test/symtab5.awk
@@ -0,0 +1 @@
+BEGIN {SYMTAB["POS"]=1} {print $POS}
diff --git a/test/symtab5.in b/test/symtab5.in
new file mode 100644
index 00000000..d35e1920
--- /dev/null
+++ b/test/symtab5.in
@@ -0,0 +1,2 @@
+1 a
+2 b
diff --git a/test/symtab5.ok b/test/symtab5.ok
new file mode 100644
index 00000000..1191247b
--- /dev/null
+++ b/test/symtab5.ok
@@ -0,0 +1,2 @@
+1
+2
diff --git a/test/symtab6.awk b/test/symtab6.awk
new file mode 100644
index 00000000..d8f4cb1d
--- /dev/null
+++ b/test/symtab6.awk
@@ -0,0 +1 @@
+BEGIN {SYMTAB["POS"]=1}
diff --git a/test/symtab6.ok b/test/symtab6.ok
new file mode 100644
index 00000000..91f27e75
--- /dev/null
+++ b/test/symtab6.ok
@@ -0,0 +1,26 @@
+ARGC: 1
+ARGIND: 0
+ARGV: array, 1 elements
+BINMODE: 0
+CONVFMT: "%.6g"
+ERRNO: ""
+FIELDWIDTHS: ""
+FILENAME: ""
+FNR: 0
+FPAT: "[^[:space:]]+"
+FS: " "
+IGNORECASE: 0
+LINT: 0
+NF: 0
+NR: 0
+OFMT: "%.6g"
+OFS: " "
+ORS: "\n"
+PREC: 53
+RLENGTH: 0
+ROUNDMODE: "N"
+RS: "\n"
+RSTART: 0
+RT: ""
+SUBSEP: "\034"
+TEXTDOMAIN: "messages"
diff --git a/test/testext.ok b/test/testext.ok
new file mode 100644
index 00000000..f6066352
--- /dev/null
+++ b/test/testext.ok
@@ -0,0 +1,75 @@
+pets has 5 elements
+dump_array_and_delete: sym_lookup of pets passed
+dump_array_and_delete: incoming size is 5
+ pets["1"] = "blacky"
+ pets["2"] = "rusty"
+ pets["3"] = "sophie"
+dump_array_and_delete: marking element "3" for deletion
+ pets["4"] = "raincloud"
+ pets["5"] = "lucky"
+dump_array_and_delete(pets) returned 1
+dump_array_and_delete() did remove index "3"!
+
+try_modify_environ: sym_lookup of ENVIRON passed
+try_modify_environ: set_array_element of ENVIRON failed
+try_modify_environ: marking element "testext" for deletion
+try_del_environ() could not delete element - pass
+try_del_environ() could not add an element - pass
+var_test: sym_lookup of ARGC passed - got a value!
+var_test: sym_update of ARGC failed - correctly
+var_test: sym_update("testvar") succeeded
+var_test() returned 1, test_var = 42
+
+test_errno() returned 1, ERRNO = No child processes
+
+length of test_array is 10, should be 10
+test_array_size: incoming size is 10
+test_array_size() returned 1, length is now 0
+
+test_array_elem: a["3"] = "three"
+test_array_elem() returned 1, test_array2[3] = 42
+test_array_elem() did remove element "5"
+test_array_elem() added element "7" --> seven
+test_array2["subarray"]["hello"] = world
+test_array2["subarray"]["answer"] = 42
+
+test_array_param() returned 1
+isarray(a_new_array) = 1
+a_new_array["hello"] = world
+a_new_array["answer"] = 42
+test_array_param: argument is not undefined (1)
+test_array_param() returned 0
+isarray(a_scalar) = 0
+
+Initial value of LINT is 0
+print_do_lint: lint = 0
+print_do_lint() returned 1
+Changed value of LINT is 1
+print_do_lint: lint = 1
+print_do_lint() returned 1
+
+test_scalar(1) returned 1, the_scalar is 1
+test_scalar(3) returned 1, the_scalar is 3
+test_scalar(5) returned 1, the_scalar is 5
+test_scalar(7) returned 1, the_scalar is 7
+test_scalar(9) returned 1, the_scalar is 9
+test_scalar(11) returned 1, the_scalar is 11
+test_scalar(the) returned 1, the_scalar is the
+test_scalar(quick) returned 1, the_scalar is quick
+test_scalar(brown) returned 1, the_scalar is brown
+test_scalar(fox) returned 1, the_scalar is fox
+test_scalar(jumps) returned 1, the_scalar is jumps
+test_scalar(over) returned 1, the_scalar is over
+test_scalar(the) returned 1, the_scalar is the
+test_scalar(lazy) returned 1, the_scalar is lazy
+test_scalar(dog) returned 1, the_scalar is dog
+test_scalar_reserved: sym_lookup of ARGC passed - got a value!
+test_scalar_reserved: could not update new_value2 for ARGC - pass
+answer_num = 42
+message_string = hello, world
+new_array["hello"] = "world"
+new_array["answer"] = "42"
+
+at_exit2 called (should be first): data = NULL, exit_status = 0
+at_exit1 called (should be second): (data is & data_for_1), data value = 0xdeadbeef, exit_status = 0
+at_exit0 called (should be third): data = NULL, exit_status = 0
diff --git a/test/time.awk b/test/time.awk
new file mode 100644
index 00000000..517377e2
--- /dev/null
+++ b/test/time.awk
@@ -0,0 +1,22 @@
+@load "time"
+
+# make sure gettimeofday() is consistent with systime(). We must call
+# gettimeofday() before systime() to make sure the subtraction gives 0
+# without risk of rolling over to the next second.
+function timecheck(st,res) {
+ res = gettimeofday()
+ st = systime()
+ printf "gettimeofday - systime = %d\n", res-st
+ return res
+}
+
+BEGIN {
+ delta = 1.3
+ t0 = timecheck()
+ printf "sleep(%s) = %s\n",delta,sleep(delta)
+ t1 = timecheck()
+ slept = t1-t0
+ if ((slept < 0.9*delta) || (slept > 1.3*delta))
+ printf "Warning: tried to sleep %.2f secs, but slept for %.2f secs\n",
+ delta,slept
+}
diff --git a/test/time.ok b/test/time.ok
new file mode 100644
index 00000000..46606bfe
--- /dev/null
+++ b/test/time.ok
@@ -0,0 +1,3 @@
+gettimeofday - systime = 0
+sleep(1.3) = 0
+gettimeofday - systime = 0