diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/ChangeLog | 43 | ||||
-rw-r--r-- | test/Makefile.am | 83 | ||||
-rw-r--r-- | test/Makefile.in | 118 | ||||
-rw-r--r-- | test/Maketests | 35 | ||||
-rw-r--r-- | test/backgsub.ok | 2 | ||||
-rw-r--r-- | test/beginfile2.in | 242 | ||||
-rw-r--r-- | test/beginfile2.ok | 90 | ||||
-rwxr-xr-x | test/beginfile2.sh | 82 | ||||
-rw-r--r-- | test/fpat3.awk | 10 | ||||
-rw-r--r-- | test/fpat3.in | 1 | ||||
-rw-r--r-- | test/fpat3.ok | 4 | ||||
-rw-r--r-- | test/fwtest3.awk | 1 | ||||
-rw-r--r-- | test/fwtest3.in | 1 | ||||
-rw-r--r-- | test/fwtest3.ok | 1 | ||||
-rw-r--r-- | test/getline4.awk | 1 | ||||
-rw-r--r-- | test/getline4.in | 1 | ||||
-rw-r--r-- | test/getline4.ok | 1 | ||||
-rw-r--r-- | test/gsubtst7.awk | 92 | ||||
-rw-r--r-- | test/gsubtst7.in | 1 | ||||
-rw-r--r-- | test/gsubtst7.ok | 1 | ||||
-rw-r--r-- | test/gsubtst8.awk | 5 | ||||
-rw-r--r-- | test/gsubtst8.in | 2 | ||||
-rw-r--r-- | test/gsubtst8.ok | 2 | ||||
-rw-r--r-- | test/pty1.awk | 54 | ||||
-rw-r--r-- | test/pty1.ok | 2 | ||||
-rw-r--r-- | test/rtlen.ok | 3 | ||||
-rwxr-xr-x | test/rtlen.sh | 5 | ||||
-rw-r--r-- | test/rtlen01.ok | 3 | ||||
-rwxr-xr-x | test/rtlen01.sh | 8 | ||||
-rw-r--r-- | test/sortu.awk | 6 | ||||
-rw-r--r-- | test/sortu.ok | 6 |
31 files changed, 865 insertions, 41 deletions
diff --git a/test/ChangeLog b/test/ChangeLog index 2ae225be..21224fd7 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,46 @@ +2011-10-02 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (rtlen, rtlen01, rtlenmb): New tests. + * rtlen.ok, rtlen.sh, rtlen01.ok, rtlen01.sh: New files. + Thanks to Rogier <rogier777@gmail.com> as forwarded by + Jeroen Schot <schot@A-Eskwadraat.nl>. + +2011-08-10 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (beginfile2, fpat3, fwtest3): New tests. + * beginfile2.awk, beginfile2.in, beginfile2.ok: New files. + * fpat3.awk, fpat3.in, fpat3.ok: New files. + * fwtest3.awk, fwtest3.in, fwtest3.ok: New files. + +2011-08-09 Arnold D. Robbins <arnold@skeeve.com> + + * pty1.awk, pty1.ok: New files. + * Makefile.am (pty1): New test. + (profile1, profile2, profile3): Use unique names for the profile + files to avoid problems with parallel 'make check' + +2011-07-29 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (next): Redirect output to output file! + +2011-07-28 Arnold D. Robbins <arnold@skeeve.com> + + * sortu.awk, sortu.ok: Modified to make numeric comparison do + a stable sort. Thanks to Peter Fales <Peter.Fales@alcatel-lucent.com>. + * backgsub.ok: Update for change in code. + * Makefile.am (posix2008sub): Add --posix to invocation. + +2011-07-26 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (getline4, gsubtst8): New tests. + * getline4.awk, getline4.in, getline4.ok: New files. + * gsubtst8.awk, gsubtst8.in, gsubtst8.ok: New files. + +2011-07-15 Arnold D. Robbins <arnold@skeeve.com> + + * Makefile.am (gsubtst7): New test. + * gsubtst7.awk, gsubtst7.in, gsubtst7.ok: New files. + 2011-06-24 Arnold D. Robbins <arnold@skeeve.com> * Makefile.am (EXTRA_DIST): Add ChangeLog.0. diff --git a/test/Makefile.am b/test/Makefile.am index 2d7bf34f..57d4d464 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -115,6 +115,9 @@ EXTRA_DIST = \ badargs.ok \ beginfile1.awk \ beginfile1.ok \ + beginfile2.in \ + beginfile2.ok \ + beginfile2.sh \ binmode1.ok \ childin.awk \ childin.in \ @@ -231,6 +234,9 @@ EXTRA_DIST = \ fpat1.ok \ fpat2.awk \ fpat2.ok \ + fpat3.awk \ + fpat3.in \ + fpat3.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -271,6 +277,9 @@ EXTRA_DIST = \ fwtest2.awk \ fwtest2.in \ fwtest2.ok \ + fwtest3.awk \ + fwtest3.in \ + fwtest3.ok \ gensub.awk \ gensub.in \ gensub.ok \ @@ -283,6 +292,9 @@ EXTRA_DIST = \ getline2.ok \ getline3.awk \ getline3.ok \ + getline4.awk \ + getline4.in \ + getline4.ok \ getlnbuf.awk \ getlnbuf.in \ getlnbuf.ok \ @@ -318,6 +330,12 @@ EXTRA_DIST = \ gsubtst5.ok \ gsubtst6.awk \ gsubtst6.ok \ + gsubtst7.awk \ + gsubtst7.in \ + gsubtst7.ok \ + gsubtst8.awk \ + gsubtst8.in \ + gsubtst8.ok \ gtlnbufv.awk \ hex.awk \ hex.ok \ @@ -567,6 +585,8 @@ EXTRA_DIST = \ prt1eval.ok \ prtoeval.awk \ prtoeval.ok \ + pty1.awk \ + pty1.ok \ rand.awk \ rand.ok \ range1.awk \ @@ -635,6 +655,10 @@ EXTRA_DIST = \ rswhite.awk \ rswhite.in \ rswhite.ok \ + rtlen.ok \ + rtlen.sh \ + rtlen01.ok \ + rtlen01.sh \ scalar.awk \ scalar.ok \ sclforin.awk \ @@ -766,8 +790,10 @@ BASIC_TESTS = \ dfastress dynlj eofsplit exitval1 exitval2 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 getlnbuf getnr2tb getnr2tm \ + funstack getline getline2 getline3 getline4 \ + getlnbuf getnr2tb getnr2tm \ gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \ + gsubtst7 gsubtst8 \ hex hsprint inputred intest intprec iobug1 leaddig leadnl litoct \ longsub longwrds manglprm math membug1 messages minusstr mmap8k \ mtchi18n nasty nasty2 negexp negrange nested nfldstr nfneg \ @@ -786,17 +812,22 @@ BASIC_TESTS = \ wjposer1 zero2 zeroe0 zeroflag UNIX_TESTS = \ - fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng + fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \ + space strftlng GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ - backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \ - devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \ - fwtest fwtest2 gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ + backw badargs beginfile1 beginfile2 \ + binmode1 clos1way delsub devfd devfd1 \ + devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpat3 \ + fpatnull fsfwfs funlen \ + fwtest fwtest2 fwtest3 \ + gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall lint \ lintold lintwarn manyfiles match1 match2 match3 mbstr1 nastyparm \ next nondec nondec2 patsplit posix printfbad1 printfbad2 procinfs \ - profile1 profile2 profile3 rebuf regx8bit reint reint2 rsstart1 \ + profile1 profile2 profile3 pty1 \ + rebuf regx8bit reint reint2 rsstart1 \ rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \ strtonum switch2 @@ -808,7 +839,7 @@ MACHINE_TESTS = double1 double2 fmtspcl intformat LOCALE_CHARSET_TESTS = \ asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \ - mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc + mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc # List of the tests which should be run with --lint option: NEED_LINT = \ @@ -1238,6 +1269,22 @@ rsstart3:: @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +rtlen:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlen01:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlenmb:: + @echo $@ + @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \ + $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@ + nondec2:: @echo $@ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@ @@ -1341,6 +1388,11 @@ beginfile1:: @AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +beginfile2: + @echo $@ + @-AWK="$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + dumpvars:: @echo $@ @AWKPATH=$(srcdir) $(AWK) --dump-variables 1 < $(srcdir)/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1349,20 +1401,25 @@ dumpvars:: profile1: @echo $@ - @$(AWK) --profile -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 - @$(AWK) -f awkprof.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm awkprof.out + @$(AWK) --profile=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 + @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out @cmp _$@.out1 _$@.out2 && rm _$@.out[12] || echo EXIT CODE: $$? >>_$@ profile2: @echo $@ - @$(PGAWK) -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ profile3: @echo $@ - @$(PGAWK) -f $(srcdir)/$@.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +posix2008sub: + @echo $@ + @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1 @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ next: diff --git a/test/Makefile.in b/test/Makefile.in index 04ea041c..e5ff2005 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -300,6 +300,9 @@ EXTRA_DIST = \ badargs.ok \ beginfile1.awk \ beginfile1.ok \ + beginfile2.in \ + beginfile2.ok \ + beginfile2.sh \ binmode1.ok \ childin.awk \ childin.in \ @@ -416,6 +419,9 @@ EXTRA_DIST = \ fpat1.ok \ fpat2.awk \ fpat2.ok \ + fpat3.awk \ + fpat3.in \ + fpat3.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -456,6 +462,9 @@ EXTRA_DIST = \ fwtest2.awk \ fwtest2.in \ fwtest2.ok \ + fwtest3.awk \ + fwtest3.in \ + fwtest3.ok \ gensub.awk \ gensub.in \ gensub.ok \ @@ -468,6 +477,9 @@ EXTRA_DIST = \ getline2.ok \ getline3.awk \ getline3.ok \ + getline4.awk \ + getline4.in \ + getline4.ok \ getlnbuf.awk \ getlnbuf.in \ getlnbuf.ok \ @@ -503,6 +515,12 @@ EXTRA_DIST = \ gsubtst5.ok \ gsubtst6.awk \ gsubtst6.ok \ + gsubtst7.awk \ + gsubtst7.in \ + gsubtst7.ok \ + gsubtst8.awk \ + gsubtst8.in \ + gsubtst8.ok \ gtlnbufv.awk \ hex.awk \ hex.ok \ @@ -752,6 +770,8 @@ EXTRA_DIST = \ prt1eval.ok \ prtoeval.awk \ prtoeval.ok \ + pty1.awk \ + pty1.ok \ rand.awk \ rand.ok \ range1.awk \ @@ -820,6 +840,10 @@ EXTRA_DIST = \ rswhite.awk \ rswhite.in \ rswhite.ok \ + rtlen.ok \ + rtlen.sh \ + rtlen01.ok \ + rtlen01.sh \ scalar.awk \ scalar.ok \ sclforin.awk \ @@ -951,8 +975,10 @@ BASIC_TESTS = \ dfastress dynlj eofsplit exitval1 exitval2 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 getlnbuf getnr2tb getnr2tm \ + funstack getline getline2 getline3 getline4 \ + getlnbuf getnr2tb getnr2tm \ gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \ + gsubtst7 gsubtst8 \ hex hsprint inputred intest intprec iobug1 leaddig leadnl litoct \ longsub longwrds manglprm math membug1 messages minusstr mmap8k \ mtchi18n nasty nasty2 negexp negrange nested nfldstr nfneg \ @@ -971,17 +997,22 @@ BASIC_TESTS = \ wjposer1 zero2 zeroe0 zeroflag UNIX_TESTS = \ - fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng + fflush getlnhd localenl pid pipeio1 pipeio2 poundbang rtlen rtlen01 \ + space strftlng GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ - backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \ - devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \ - fwtest fwtest2 gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ + backw badargs beginfile1 beginfile2 \ + binmode1 clos1way delsub devfd devfd1 \ + devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpat3 \ + fpatnull fsfwfs funlen \ + fwtest fwtest2 fwtest3 \ + gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall lint \ lintold lintwarn manyfiles match1 match2 match3 mbstr1 nastyparm \ next nondec nondec2 patsplit posix printfbad1 printfbad2 procinfs \ - profile1 profile2 profile3 rebuf regx8bit reint reint2 rsstart1 \ + profile1 profile2 profile3 pty1 \ + rebuf regx8bit reint reint2 rsstart1 \ rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \ strtonum switch2 @@ -990,7 +1021,7 @@ INET_TESTS = inetdayu inetdayt inetechu inetecht MACHINE_TESTS = double1 double2 fmtspcl intformat LOCALE_CHARSET_TESTS = \ asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \ - mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc + mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc # List of the tests which should be run with --lint option: @@ -1589,6 +1620,22 @@ rsstart3:: @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +rtlen:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlen01:: + @echo $@ + @$(srcdir)/$@.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +rtlenmb:: + @echo $@ + @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \ + $(srcdir)/rtlen.sh >_$@ || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/rtlen.ok _$@ && rm -f _$@ + nondec2:: @echo $@ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@ @@ -1692,6 +1739,11 @@ beginfile1:: @AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +beginfile2: + @echo $@ + @-AWK="$(AWKPROG)" $(srcdir)/$@.sh $(srcdir)/$@.in > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + dumpvars:: @echo $@ @AWKPATH=$(srcdir) $(AWK) --dump-variables 1 < $(srcdir)/$@.in >/dev/null 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1700,20 +1752,25 @@ dumpvars:: profile1: @echo $@ - @$(AWK) --profile -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 - @$(AWK) -f awkprof.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm awkprof.out + @$(AWK) --profile=ap-$@.out -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > _$@.out1 + @$(AWK) -f ap-$@.out $(srcdir)/dtdgport.awk > _$@.out2 ; rm ap-$@.out @cmp _$@.out1 _$@.out2 && rm _$@.out[12] || echo EXIT CODE: $$? >>_$@ profile2: @echo $@ - @$(PGAWK) -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -v sortcmd=sort -f $(srcdir)/xref.awk $(srcdir)/dtdgport.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ profile3: @echo $@ - @$(PGAWK) -f $(srcdir)/$@.awk > /dev/null - @sed 1,2d < awkprof.out > _$@; rm awkprof.out + @$(PGAWK) --profile=ap-$@.out -f $(srcdir)/$@.awk > /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +posix2008sub: + @echo $@ + @$(AWK) --posix -f $(srcdir)/$@.awk > _$@ 2>&1 @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ next: @@ -2042,6 +2099,11 @@ getline3: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +getline4: + @echo getline4 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + getnr2tb: @echo getnr2tb @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2077,6 +2139,16 @@ gsubtst5: @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +gsubtst7: + @echo gsubtst7 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +gsubtst8: + @echo gsubtst8 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + hex: @echo hex @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2317,11 +2389,6 @@ pcntplus: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ -posix2008sub: - @echo posix2008sub - @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ - prdupval: @echo prdupval @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2647,6 +2714,11 @@ fpat2: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fpat3: + @echo fpat3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + fpatnull: @echo fpatnull @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2672,6 +2744,11 @@ fwtest2: @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fwtest3: + @echo fwtest3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + gensub: @echo gensub @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2792,6 +2869,11 @@ procinfs: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +pty1: + @echo pty1 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + rebuf: @echo rebuf @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index 9a16eb7c..c76769f4 100644 --- a/test/Maketests +++ b/test/Maketests @@ -315,6 +315,11 @@ getline3: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +getline4: + @echo getline4 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + getnr2tb: @echo getnr2tb @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -350,6 +355,16 @@ gsubtst5: @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +gsubtst7: + @echo gsubtst7 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +gsubtst8: + @echo gsubtst8 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + hex: @echo hex @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -590,11 +605,6 @@ pcntplus: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ -posix2008sub: - @echo posix2008sub - @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ - prdupval: @echo prdupval @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -920,6 +930,11 @@ fpat2: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fpat3: + @echo fpat3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + fpatnull: @echo fpatnull @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -945,6 +960,11 @@ fwtest2: @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fwtest3: + @echo fwtest3 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + gensub: @echo gensub @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1065,6 +1085,11 @@ procinfs: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +pty1: + @echo pty1 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + rebuf: @echo rebuf @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/backgsub.ok b/test/backgsub.ok index 2d3f17f0..e2e265fa 100644 --- a/test/backgsub.ok +++ b/test/backgsub.ok @@ -1 +1 @@ -\x\y\z +\\x\\y\\z diff --git a/test/beginfile2.in b/test/beginfile2.in new file mode 100644 index 00000000..5b7cc833 --- /dev/null +++ b/test/beginfile2.in @@ -0,0 +1,242 @@ +#TEST1# +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +BEGIN { + count = 0 + print "In BEGIN" + while (getline > 0) + count++; + print count == NR +} + +#TEST2# +BEGINFILE { + print "In BEGINFILE:", FILENAME + nextfile +} +ENDFILE{ + print "In ENDFILE:", FILENAME +} + + +#TEST3# +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +END { + print "executing END rule" + ARGV[ARGC++] = "beginfile.sh"; + count = 0 + while (getline> 0) + count++; + print count == FNR + print "Done executing END rule" +} +ENDFILE { + print "In ENDFILE:", FILENAME +} + +#TEST4# +BEGINFILE { + print "In BEGINFILE:", FILENAME + nextfile +} +END { + print "executing END rule" + ARGV[ARGC++] = "beginfile.sh"; + getline + print $0 + print "Done executing END rule" +} +ENDFILE { + print "ENDFILE:", FILENAME +} + + +#TEST5# +BEGIN { + getline + count++ + print NR, count +} +{ + count++ +} +END { + print NR == count +} + +#TEST6# +BEGINFILE { + print "In BEGINFILE:", FILENAME + count = 0 +} +BEGIN { + getline + count++ + print FNR, count +} +{ + count++ +} +ENDFILE { + print "In ENDFILE:", FILENAME + print count == FNR +} + +#TEST7# +BEGINFILE { + print "In BEGINFILE:", FILENAME + count = 0 + if (ARGIND == 1) + nextfile +} +BEGIN { + getline + print "In BEGIN:", FILENAME +} +{ count++ } +ENDFILE { + print "In ENDFILE:", FILENAME + print (FNR - count) +} + +#TEST8# +function f(a, b) { + getline + print FILENAME + print a, b +} +function g(x, y) { + return x +} +BEGINFILE { nextfile } +BEGIN { g(3, f(1, 2)) } + +#TEST9# +function f(a, b) { + b = b ":" a; + if (skip || ERRNO != "") { + print "Skipping:", b + nextfile + } + return b +} +BEGINFILE { print "In BEGINFILE:", f(FILENAME, ++i)} +FNR == 1 { print "In Rule:", FILENAME } +ENDFILE { print "In ENDFILE:", FILENAME } + +#TEST10# +function f() { + nextfile +} +function g( cnt) { + cnt = 0 + while (getline > 0) + cnt++; + return cnt +} +BEGINFILE { if (ARGIND == 1) f(); } +BEGIN { + print g(), NR +} + +#TEST11# +function f(a, b) { + print a + nextfile + print b +} +function g(x, y) { + print x + getline + return y +} +BEGINFILE { ARGIND == 1 ? g(3, f(FILENAME, 2)) : f(3, g(FILENAME, 2)) } + +#TEST12# +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +function g() { + nextfile +} +function f( cnt) { + print cnt + 0 + while (getline > 0) { + if (++cnt == 2) { + g() + print "shouldn't see this line" + } + } +} +{ + print FNR + f() +} +ENDFILE { + print "In ENDFILE:", FILENAME +} + +#TEST13# +# exit in BEGINFILE +BEGINFILE { + print "In BEGINFILE:", FILENAME + exit(0) +} +ENDFILE { + print "In ENDFILE:", FILENAME +} +END { + print "In END:", FILENAME + while (getline > 0) + ; + print "shouldn't see this line" +} + +#TEST14# +# exit in ENDFILE +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +ENDFILE { + print "In ENDFILE:", FILENAME + exit(0) +} +END { + print "In END:", FILENAME + while (getline > 0) + ; + print "shouldn't see this line" +} + +#TEST15# +BEGINFILE { + print "BEGINFILE:", FILENAME +} +{ nextfile } +END { + print NR +} + +#TEST16# +BEGINFILE { + print "In BEGINFILE:", FILENAME +} +BEGIN { + getline + print "In BEGIN:", FILENAME +} +{ + if (NR == FNR) { + print "In Rule:", FILENAME + nextfile + } + exit(0) +} + +ENDFILE { + print "In ENDFILE: ", FILENAME +} + diff --git a/test/beginfile2.ok b/test/beginfile2.ok new file mode 100644 index 00000000..c3029c7c --- /dev/null +++ b/test/beginfile2.ok @@ -0,0 +1,90 @@ +--Test 1a-- +In BEGIN +In BEGINFILE: beginfile2.in +1 +--Test 1b-- +In BEGIN +In BEGINFILE: beginfile2.in +In BEGINFILE: /file/does/not/exist +gawk: cmd. line:3: fatal: cannot open file `/file/does/not/exist' for reading (No such file or directory) +--Test 2-- +In BEGINFILE: beginfile2.in +In ENDFILE: beginfile2.in +In BEGINFILE: /file/does/not/exist +--Test 3-- +In BEGINFILE: beginfile2.in +In ENDFILE: beginfile2.in +executing END rule +In BEGINFILE: beginfile.sh +gawk: cmd. line:3: fatal: cannot open file `beginfile.sh' for reading (No such file or directory) +--Test 4-- +In BEGINFILE: beginfile2.in +ENDFILE: beginfile2.in +executing END rule +In BEGINFILE: beginfile.sh + +Done executing END rule +--Test 5-- +1 1 +1 +--Test 6-- +In BEGINFILE: beginfile2.in +1 1 +In ENDFILE: beginfile2.in +1 +--Test 7-- +In BEGINFILE: beginfile2.in +In ENDFILE: beginfile2.in +0 +In BEGINFILE: beginfile2.sh +In BEGIN: beginfile2.sh +In ENDFILE: beginfile2.sh +1 +--Test 8-- +beginfile2.in +1 2 +--Test 9a-- +Skipping: 1:/file/does/not/exist +In BEGINFILE: 2:beginfile2.in +In Rule: beginfile2.in +In ENDFILE: beginfile2.in +--Test 9b-- +Skipping: 1:/file/does/not/exist +Skipping: 2:beginfile2.in +In ENDFILE: beginfile2.in +--Test 10-- +82 82 +--Test 11-- +beginfile2.in +beginfile2.sh +gawk: cmd. line:9: fatal: non-redirected `getline' invalid inside `BEGINFILE' rule +--Test 12-- +In BEGINFILE: beginfile2.in +1 +0 +In ENDFILE: beginfile2.in +In BEGINFILE: beginfile2.sh +1 +0 +In ENDFILE: beginfile2.sh +--Test 13-- +In BEGINFILE: beginfile2.in +In END: beginfile2.in +In ENDFILE: beginfile2.in +In BEGINFILE: beginfile2.sh +--Test 14-- +In BEGINFILE: beginfile2.in +In ENDFILE: beginfile2.in +In END: beginfile2.in +In BEGINFILE: beginfile2.sh +In ENDFILE: beginfile2.sh +--Test 15-- +BEGINFILE: beginfile2.in +BEGINFILE: beginfile2.sh +2 +--Test 16-- +In BEGINFILE: beginfile2.in +In BEGIN: beginfile2.in +In Rule: beginfile2.in +In ENDFILE: beginfile2.in +In BEGINFILE: beginfile2.sh diff --git a/test/beginfile2.sh b/test/beginfile2.sh new file mode 100755 index 00000000..19deef62 --- /dev/null +++ b/test/beginfile2.sh @@ -0,0 +1,82 @@ +#!/bin/sh + +# beginfile2.sh --- test BEGINFILE/ENDFILE/getline/nextfile/exit combinations + +AWK="../gawk" +AWKPROG="beginfile2.in" +SCRIPT=`basename $0` + +if [ "$AWK" = "" ] +then + echo $0: You must set AWK >&2 + exit 1 +fi + +echo "--Test 1a--" +prog=$($AWK '/#TEST1#/, /#TEST2#/' $AWKPROG) +$AWK "$prog" $AWKPROG +echo "--Test 1b--" +$AWK "$prog" $AWKPROG /file/does/not/exist + +echo "--Test 2--" +prog=$($AWK '/#TEST2#/, /#TEST3#/' $AWKPROG) +$AWK "$prog" $AWKPROG /file/does/not/exist + +echo "--Test 3--" +prog=$($AWK '/#TEST3#/, /#TEST4#/' $AWKPROG) +$AWK "$prog" $AWKPROG + +echo "--Test 4--" +prog=$($AWK '/#TEST4#/, /#TEST5#/' $AWKPROG) +$AWK "$prog" $AWKPROG + +echo "--Test 5--" +prog=$($AWK '/#TEST5#/, /#TEST6#/' $AWKPROG) +$AWK "$prog" $AWKPROG + +echo "--Test 6--" +prog=$($AWK '/#TEST6#/, /#TEST7#/' $AWKPROG) +$AWK "$prog" $AWKPROG + +echo "--Test 7--" +prog=$($AWK '/#TEST7#/, /#TEST8#/' $AWKPROG) +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 8--" +prog=$($AWK '/#TEST8#/, /#TEST9#/' $AWKPROG) +$AWK "$prog" $AWKPROG + +echo "--Test 9a--" +prog=$($AWK '/#TEST9#/, /#TEST10#/' $AWKPROG) +$AWK "$prog" /file/does/not/exist $AWKPROG +echo "--Test 9b--" +$AWK -vskip=1 "$prog" /file/does/not/exist $AWKPROG + +echo "--Test 10--" +prog=$($AWK '/#TEST10#/, /#TEST11#/' $AWKPROG) +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 11--" +prog=$($AWK '/#TEST11#/, /#TEST12#/' $AWKPROG) +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 12--" +prog=$($AWK '/#TEST12#/, /#TEST13#/' $AWKPROG) +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 13--" +prog=$($AWK '/#TEST13#/, /#TEST14#/' $AWKPROG) +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 14--" +prog=$($AWK '/#TEST14#/, /#TEST15#/' $AWKPROG) +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 15--" +prog=$($AWK '/#TEST15#/, /#TEST16#/' $AWKPROG) +$AWK "$prog" $AWKPROG $SCRIPT + +echo "--Test 16--" +prog=$($AWK '/#TEST16#/, /#TEST17#/' $AWKPROG) +$AWK "$prog" $AWKPROG $SCRIPT + diff --git a/test/fpat3.awk b/test/fpat3.awk new file mode 100644 index 00000000..801bb58e --- /dev/null +++ b/test/fpat3.awk @@ -0,0 +1,10 @@ +BEGIN { + FPAT = "[^,]*" + +} + +{ + if (x) NF + for (i = 1; i <= 4; ++i) + print i, $i +} diff --git a/test/fpat3.in b/test/fpat3.in new file mode 100644 index 00000000..28416a42 --- /dev/null +++ b/test/fpat3.in @@ -0,0 +1 @@ +a,b,,c diff --git a/test/fpat3.ok b/test/fpat3.ok new file mode 100644 index 00000000..543bb429 --- /dev/null +++ b/test/fpat3.ok @@ -0,0 +1,4 @@ +1 a +2 b +3 +4 c diff --git a/test/fwtest3.awk b/test/fwtest3.awk new file mode 100644 index 00000000..d1384eaf --- /dev/null +++ b/test/fwtest3.awk @@ -0,0 +1 @@ +BEGIN { FIELDWIDTHS="5" } { print $1 } diff --git a/test/fwtest3.in b/test/fwtest3.in new file mode 100644 index 00000000..a32a4347 --- /dev/null +++ b/test/fwtest3.in @@ -0,0 +1 @@ +1234567890 diff --git a/test/fwtest3.ok b/test/fwtest3.ok new file mode 100644 index 00000000..e56e15bb --- /dev/null +++ b/test/fwtest3.ok @@ -0,0 +1 @@ +12345 diff --git a/test/getline4.awk b/test/getline4.awk new file mode 100644 index 00000000..275faaab --- /dev/null +++ b/test/getline4.awk @@ -0,0 +1 @@ +END { getline $2; print} diff --git a/test/getline4.in b/test/getline4.in new file mode 100644 index 00000000..42771a3c --- /dev/null +++ b/test/getline4.in @@ -0,0 +1 @@ + aaa bbb diff --git a/test/getline4.ok b/test/getline4.ok new file mode 100644 index 00000000..42771a3c --- /dev/null +++ b/test/getline4.ok @@ -0,0 +1 @@ + aaa bbb diff --git a/test/gsubtst7.awk b/test/gsubtst7.awk new file mode 100644 index 00000000..e649f46e --- /dev/null +++ b/test/gsubtst7.awk @@ -0,0 +1,92 @@ +# From bug-gawk-bounces+arnold=skeeve.com@gnu.org Tue Jul 12 08:18:24 2011 +# Return-Path: <bug-gawk-bounces+arnold=skeeve.com@gnu.org> +# Received: from localhost (localhost [127.0.0.1]) +# by skeeve.com (8.14.3/8.14.3) with ESMTP id p6C5HArm002260 +# for <arnold@localhost>; Tue, 12 Jul 2011 08:18:23 +0300 +# X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sls-af11p1 +# X-Spam-Level: +# X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DNS_FROM_OPENWHOIS, +# RCVD_IN_DNSWL_MED autolearn=ham version=3.2.5 +# X-Envelope-From: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Received: from server1.f7.net [66.148.120.132] +# by localhost with IMAP (fetchmail-6.3.11) +# for <arnold@localhost> (single-drop); Tue, 12 Jul 2011 08:18:23 +0300 (IDT) +# Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) +# by freefriends.org (8.14.4/8.14.4) with ESMTP id p6BIYi4t032040; +# Mon, 11 Jul 2011 14:34:48 -0400 +# Received: from localhost ([::1]:38787 helo=lists.gnu.org) +# by lists.gnu.org with esmtp (Exim 4.71) +# (envelope-from <bug-gawk-bounces+arnold=skeeve.com@gnu.org>) +# id 1QgLJb-0004tM-Eg +# for arnold@skeeve.com; Mon, 11 Jul 2011 14:34:43 -0400 +# Received: from eggs.gnu.org ([140.186.70.92]:54022) +# by lists.gnu.org with esmtp (Exim 4.71) +# (envelope-from <kornet@camk.edu.pl>) id 1QgD0R-0004Vi-HZ +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:24 -0400 +# Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) +# (envelope-from <kornet@camk.edu.pl>) id 1QgD0Q-0000SE-8u +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:23 -0400 +# Received: from moat.camk.edu.pl ([148.81.175.50]:34696) +# by eggs.gnu.org with esmtp (Exim 4.71) +# (envelope-from <kornet@camk.edu.pl>) id 1QgD0P-0000Px-V3 +# for bug-gawk@gnu.org; Mon, 11 Jul 2011 05:42:22 -0400 +# Received: from localhost (localhost.localdomain [127.0.0.1]) +# by moat.camk.edu.pl (Postfix) with ESMTP id 72C1D5F004C +# for <bug-gawk@gnu.org>; Mon, 11 Jul 2011 11:42:13 +0200 (CEST) +# X-Virus-Scanned: amavisd-new at camk.edu.pl +# Received: from moat.camk.edu.pl ([127.0.0.1]) +# by localhost (liam.camk.edu.pl [127.0.0.1]) (amavisd-new, port 10024) +# with LMTP id oh+-Yw+zHhK6 for <bug-gawk@gnu.org>; +# Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Received: from gatekeeper.camk.edu.pl (gatekeeper.camk.edu.pl [192.168.1.23]) +# by moat.camk.edu.pl (Postfix) with ESMTP id 89AA55F0046 +# for <bug-gawk@gnu.org>; Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Received: by gatekeeper.camk.edu.pl (Postfix, from userid 1293) +# id 796C8809FB; Mon, 11 Jul 2011 11:42:07 +0200 (CEST) +# Date: Mon, 11 Jul 2011 11:42:07 +0200 +# From: Kacper Kornet <draenog@pld-linux.org> +# To: bug-gawk@gnu.org +# Message-ID: <20110711094207.GA2616@camk.edu.pl> +# MIME-Version: 1.0 +# Content-Type: text/plain; charset=iso-8859-2 +# Content-Disposition: inline +# User-Agent: Mutt/1.5.20 (2009-06-14) +# X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) +# X-Received-From: 148.81.175.50 +# X-Mailman-Approved-At: Mon, 11 Jul 2011 14:34:26 -0400 +# Subject: [bug-gawk] Change in behavior of gsub inside loop +# X-BeenThere: bug-gawk@gnu.org +# X-Mailman-Version: 2.1.14 +# Precedence: list +# List-Id: "Bug reports and all discussion about gawk." <bug-gawk.gnu.org> +# List-Unsubscribe: <https://lists.gnu.org/mailman/options/bug-gawk>, +# <mailto:bug-gawk-request@gnu.org?subject=unsubscribe> +# List-Archive: </archive/html/bug-gawk> +# List-Post: <mailto:bug-gawk@gnu.org> +# List-Help: <mailto:bug-gawk-request@gnu.org?subject=help> +# List-Subscribe: <https://lists.gnu.org/mailman/listinfo/bug-gawk>, +# <mailto:bug-gawk-request@gnu.org?subject=subscribe> +# Errors-To: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Sender: bug-gawk-bounces+arnold=skeeve.com@gnu.org +# Status: R +# +# Hi, +# +# I have observed the following changed behavior between gawk-3.8.1 and +# gakw-4.0.0. While in the former +# +# echo -ne ' aaa' | gawk '{for (c = 1; c <= NF; c++) {gsub("foo", "bar", $c); print}}' +# +# prints: +# +# aaa +# +# the gawk-4.0.0 does not preserve the leading spaces and prints: +# +# aaa +# +# Best regards, +# -- +# Kacper +# +{for (c = 1; c <= NF; c++) {gsub("foo", "bar", $c); print}} diff --git a/test/gsubtst7.in b/test/gsubtst7.in new file mode 100644 index 00000000..88069bf7 --- /dev/null +++ b/test/gsubtst7.in @@ -0,0 +1 @@ + aaa
\ No newline at end of file diff --git a/test/gsubtst7.ok b/test/gsubtst7.ok new file mode 100644 index 00000000..88f42c8c --- /dev/null +++ b/test/gsubtst7.ok @@ -0,0 +1 @@ + aaa diff --git a/test/gsubtst8.awk b/test/gsubtst8.awk new file mode 100644 index 00000000..818b0ea3 --- /dev/null +++ b/test/gsubtst8.awk @@ -0,0 +1,5 @@ +{ + OFS = " " $2 " " + gsub("foo", "_", OFS) + print $1, $2 +} diff --git a/test/gsubtst8.in b/test/gsubtst8.in new file mode 100644 index 00000000..f2b45c7d --- /dev/null +++ b/test/gsubtst8.in @@ -0,0 +1,2 @@ +a bar b +c foo d diff --git a/test/gsubtst8.ok b/test/gsubtst8.ok new file mode 100644 index 00000000..d3b28cc0 --- /dev/null +++ b/test/gsubtst8.ok @@ -0,0 +1,2 @@ +a bar bar +c _ foo diff --git a/test/pty1.awk b/test/pty1.awk new file mode 100644 index 00000000..77178d61 --- /dev/null +++ b/test/pty1.awk @@ -0,0 +1,54 @@ +# Message-ID: <1312419482.36133.YahooMailNeo@web110416.mail.gq1.yahoo.com> +# Date: Wed, 3 Aug 2011 17:58:02 -0700 (PDT) +# From: "T. X. G." <leopardie333@yahoo.com> +# To: "bug-gawk@gnu.org" <bug-gawk@gnu.org> +# Subject: [bug-gawk] two bugs in gawk 4.0.0 with FPAT and pty +# +# $ gawk --version +# GNU Awk 4.0.0 +# Copyright (C) 1989, 1991-2011 Free Software Foundation. +# +# # bug due to trying to make field splitting more efficient by not parse all fields +# $ echo a,b,,c |gawk '{for(i=1;i<=4;++i)print i, $i}' FPAT='[^,]*' +# 1 a +# 2 +# 3 b +# 4 +# +# # work around +# $ echo a,b,,c |gawk '{NF;for(i=1;i<=4;++i)print i, $i}' FPAT='[^,]*' +# 1 a +# 2 b +# 3 +# 4 c +# +# This bug, as you commented in function fpat_parse_field, is subtle. The null matches of previous call should be remembered across calls. You could make the auto variable non_empty static, but then any calls to patsplit between references of fields will cause it to be wrong. I guess you can either forgo the field splitting optimization by always parse all field in the case of FPAT or make a separate function for splitting $0 only (or pass an extra arg to it?) I am sure you will find the best fix. +# +# +# The next bug is with pty: +# +# $ gawk 'BEGIN{ +# c = "echo 123 > /dev/tty; read x < /dev/tty; echo \"x is $x\"" +# PROCINFO[c, "pty"] = 1 +# c |& getline;print +# print "abc" |& c +# c |& getline;print +# }' +# 123 +# ^C +# +# Adding a call to setsid() in the function two_way_open right after fork in the child process seems to fix it. +# +# One request for feature: +# Currently the format for mktime is not configurable. Could you please make it configurable just like strftime through PROCINFO["mktime"]? In fact I have already done it myself. But I don't think you would like my style. It should be pretty simple for you to implement. +# +# Thank you, Arnold. Again as I have said before, I enjoy your writings and appreciate your contributions to the FSF. +# W. G. +# +BEGIN { + c = "echo 123 > /dev/tty; read x < /dev/tty; echo \"x is $x\"" + PROCINFO[c, "pty"] = 1 + c |& getline; print + print "abc" |& c + c |& getline; print +} diff --git a/test/pty1.ok b/test/pty1.ok new file mode 100644 index 00000000..f06833f5 --- /dev/null +++ b/test/pty1.ok @@ -0,0 +1,2 @@ +123 +x is abc diff --git a/test/rtlen.ok b/test/rtlen.ok new file mode 100644 index 00000000..b8a484df --- /dev/null +++ b/test/rtlen.ok @@ -0,0 +1,3 @@ +3 +5 +2 diff --git a/test/rtlen.sh b/test/rtlen.sh new file mode 100755 index 00000000..4a740451 --- /dev/null +++ b/test/rtlen.sh @@ -0,0 +1,5 @@ +#! /bin/sh + +AWK=${AWK:-../gawk} + +$AWK 'BEGIN {printf "0\n\n\n1\n\n\n\n\n2\n\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}' diff --git a/test/rtlen01.ok b/test/rtlen01.ok new file mode 100644 index 00000000..4539bbf2 --- /dev/null +++ b/test/rtlen01.ok @@ -0,0 +1,3 @@ +0 +1 +2 diff --git a/test/rtlen01.sh b/test/rtlen01.sh new file mode 100755 index 00000000..72156d9b --- /dev/null +++ b/test/rtlen01.sh @@ -0,0 +1,8 @@ +#! /bin/sh + +AWK=${AWK:-../gawk} + +$AWK 'BEGIN {printf "0"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}' +$AWK 'BEGIN {printf "0\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}' +$AWK 'BEGIN {printf "0\n\n"; exit}' | $AWK 'BEGIN {RS=""}; {print length(RT)}' + diff --git a/test/sortu.awk b/test/sortu.awk index b4d30138..508dc07f 100644 --- a/test/sortu.awk +++ b/test/sortu.awk @@ -16,8 +16,12 @@ function comp_idx_num(s1, v1, s2, v2) } # ascending value number -function comp_val_num(s1, v1, s2, v2) +function comp_val_num(s1, v1, s2, v2, num) { + num = "^[-+]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][-+]?[0-9]+)?$" + # force stable sort, compare as strings if not numeric + if ((v1 - v2) == 0 && (v1 !~ num || v2 !~ num)) + return comp_val_str(s1, v1, s2, v2) return (v1 - v2) } diff --git a/test/sortu.ok b/test/sortu.ok index ba9ac997..06dcd94d 100644 --- a/test/sortu.ok +++ b/test/sortu.ok @@ -13,9 +13,9 @@ rat tar 100 5 4 1 --- asort(a, b, "comp_val_num"), IGNORECASE = 0--- -[1] :barz barz -[2] :blattt blattt -[3] :Zebra Zebra +[1] :barz Zebra +[2] :blattt barz +[3] :Zebra blattt [4] :1234 234 [5] :234 1234 --- asort(a, b, "comp_val_str"), IGNORECASE = 0--- |