diff options
Diffstat (limited to 'test')
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 |