aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog3
-rw-r--r--test/Makefile.am14
-rw-r--r--test/Makefile.in22
-rw-r--r--test/Maketests5
-rw-r--r--test/beginfile2.in242
-rw-r--r--test/beginfile2.ok90
-rwxr-xr-xtest/beginfile2.sh82
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
+