diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/ChangeLog | 3 | ||||
-rw-r--r-- | test/Makefile.am | 14 | ||||
-rw-r--r-- | test/Makefile.in | 22 | ||||
-rw-r--r-- | test/Maketests | 5 | ||||
-rw-r--r-- | test/beginfile2.in | 242 | ||||
-rw-r--r-- | test/beginfile2.ok | 90 | ||||
-rwxr-xr-x | test/beginfile2.sh | 82 |
7 files changed, 453 insertions, 5 deletions
diff --git a/test/ChangeLog b/test/ChangeLog index 87b9cf12..334f1961 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,6 +1,7 @@ 2011-08-10 Arnold D. Robbins <arnold@skeeve.com> - * Makefile.am (fwtest3): New test. + * Makefile.am (beginfile2, fwtest3): New tests. + * beginfile2.awk, beginfile2.in, beginfile2.ok: New files. * fwtest3.awk, fwtest3.in, fwtest3.ok: New files. 2011-08-09 Arnold D. Robbins <arnold@skeeve.com> diff --git a/test/Makefile.am b/test/Makefile.am index 43b26599..a7789953 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 \ @@ -806,9 +809,11 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ - backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \ + backw badargs beginfile1 beginfile2 \ + binmode1 clos1way delsub devfd devfd1 \ devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \ - fwtest fwtest2 fwtest3 gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ + 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 \ @@ -1358,6 +1363,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: $$? >>_$@ diff --git a/test/Makefile.in b/test/Makefile.in index a31cd10b..1f1f5820 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 \ @@ -456,6 +459,9 @@ EXTRA_DIST = \ fwtest2.awk \ fwtest2.in \ fwtest2.ok \ + fwtest3.awk \ + fwtest3.in \ + fwtest3.ok \ gensub.awk \ gensub.in \ gensub.ok \ @@ -988,9 +994,11 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ - backw badargs beginfile1 binmode1 clos1way delsub devfd devfd1 \ + backw badargs beginfile1 beginfile2 \ + binmode1 clos1way delsub devfd devfd1 \ devfd2 dumpvars exit fieldwdth fpat1 fpat2 fpatnull fsfwfs funlen \ - fwtest fwtest2 gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ + 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 \ @@ -1706,6 +1714,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: $$? >>_$@ @@ -2701,6 +2714,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: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index 0ea96731..cfbfc79e 100644 --- a/test/Maketests +++ b/test/Maketests @@ -955,6 +955,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: $$? >>_$@ 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 + |