From 02e319635b2323361a5898e868e91058768bd39c Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Mon, 4 Apr 2016 06:49:59 +0300 Subject: Add new tests for read/write closed end of 2 way pipe. --- test/ChangeLog | 8 ++++++++ test/Makefile.am | 12 +++++++++++- test/Makefile.in | 32 +++++++++++++++++++++++++++++++- test/Maketests | 20 ++++++++++++++++++++ test/clos1way2.awk | 5 +++++ test/clos1way2.in | 1 + test/clos1way2.ok | 3 +++ test/clos1way3.awk | 7 +++++++ test/clos1way3.ok | 3 +++ test/clos1way4.awk | 7 +++++++ test/clos1way4.ok | 3 +++ test/clos1way5.awk | 9 +++++++++ test/clos1way5.ok | 3 +++ 13 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 test/clos1way2.awk create mode 100644 test/clos1way2.in create mode 100644 test/clos1way2.ok create mode 100644 test/clos1way3.awk create mode 100644 test/clos1way3.ok create mode 100644 test/clos1way4.awk create mode 100644 test/clos1way4.ok create mode 100644 test/clos1way5.awk create mode 100644 test/clos1way5.ok (limited to 'test') diff --git a/test/ChangeLog b/test/ChangeLog index 05f8e937..80b2c233 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,11 @@ +2016-04-04 Arnold D. Robbins + + * Makefile.am (clos1way2, clos1way3, clos1way4, clos1way5): + New tests. + * clos1way2.awk, clos1way2.in, clos1way2.ok, clos1way3.awk, + clos1way3.ok, clos1way4.awk, clos1way4.ok, clos1way5.awk, + clos1way5.ok: New files. + 2016-02-18 Arnold D. Robbins * profile2.ok, profile5.ok: Adjust after code changes. diff --git a/test/Makefile.am b/test/Makefile.am index 540e8d99..7be8d971 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -147,6 +147,15 @@ EXTRA_DIST = \ clobber.ok \ clos1way.awk \ clos1way.ok \ + clos1way2.awk \ + clos1way2.in \ + clos1way2.ok \ + clos1way3.awk \ + clos1way3.ok \ + clos1way4.awk \ + clos1way4.ok \ + clos1way5.awk \ + clos1way5.ok \ closebad.awk \ closebad.ok \ clsflnam.awk \ @@ -1075,7 +1084,8 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ + colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \ + crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ fieldwdth fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ diff --git a/test/Makefile.in b/test/Makefile.in index 723c39e1..b9b97de5 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -404,6 +404,15 @@ EXTRA_DIST = \ clobber.ok \ clos1way.awk \ clos1way.ok \ + clos1way2.awk \ + clos1way2.in \ + clos1way2.ok \ + clos1way3.awk \ + clos1way3.ok \ + clos1way4.awk \ + clos1way4.ok \ + clos1way5.awk \ + clos1way5.ok \ closebad.awk \ closebad.ok \ clsflnam.awk \ @@ -1331,7 +1340,8 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ + colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \ + crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ fieldwdth fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ @@ -3559,6 +3569,26 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +clos1way2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way3: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way4: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + crlf: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/Maketests b/test/Maketests index 214f5ddb..08d05952 100644 --- a/test/Maketests +++ b/test/Maketests @@ -997,6 +997,26 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +clos1way2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way3: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way4: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + crlf: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/clos1way2.awk b/test/clos1way2.awk new file mode 100644 index 00000000..7dab6a67 --- /dev/null +++ b/test/clos1way2.awk @@ -0,0 +1,5 @@ +{ + cmd = "cat - 1>&2; sleep 2" + print |& cmd; close(cmd, "to") + print |& cmd; print ERRNO +} diff --git a/test/clos1way2.in b/test/clos1way2.in new file mode 100644 index 00000000..9daeafb9 --- /dev/null +++ b/test/clos1way2.in @@ -0,0 +1 @@ +test diff --git a/test/clos1way2.ok b/test/clos1way2.ok new file mode 100644 index 00000000..22bd3e17 --- /dev/null +++ b/test/clos1way2.ok @@ -0,0 +1,3 @@ +gawk: clos1way2.awk:4: (FILENAME=- FNR=1) fatal: print: attempt to write to closed write end of two-way pipe +test +CODE: 2 diff --git a/test/clos1way3.awk b/test/clos1way3.awk new file mode 100644 index 00000000..f69f6675 --- /dev/null +++ b/test/clos1way3.awk @@ -0,0 +1,7 @@ +BEGIN { + cmd = "cat - 1>&2; sleep 2" + print "test1" |& cmd + close(cmd, "to") + print "test2" |& cmd + print ERRNO +} diff --git a/test/clos1way3.ok b/test/clos1way3.ok new file mode 100644 index 00000000..74f67738 --- /dev/null +++ b/test/clos1way3.ok @@ -0,0 +1,3 @@ +gawk: clos1way3.awk:5: fatal: print: attempt to write to closed write end of two-way pipe +test1 +ODE: 2 diff --git a/test/clos1way4.awk b/test/clos1way4.awk new file mode 100644 index 00000000..6c68c5c8 --- /dev/null +++ b/test/clos1way4.awk @@ -0,0 +1,7 @@ +BEGIN { + cmd = "cat - 1>&2; sleep 2" + printf "%s\n", "test1" |& cmd + close(cmd, "to") + printf "%s\n", "test2" |& cmd + print ERRNO +} diff --git a/test/clos1way4.ok b/test/clos1way4.ok new file mode 100644 index 00000000..707f9813 --- /dev/null +++ b/test/clos1way4.ok @@ -0,0 +1,3 @@ +gawk: clos1way4.awk:5: fatal: printf: attempt to write to closed write end of two-way pipe +test1 +ODE: 2 diff --git a/test/clos1way5.awk b/test/clos1way5.awk new file mode 100644 index 00000000..ca1bd94c --- /dev/null +++ b/test/clos1way5.awk @@ -0,0 +1,9 @@ +BEGIN { + cmd = "echo test1; echo test2; sleep 2" + cmd |& getline x + print x + close(cmd, "from") + cmd |& getline x + print x + print ERRNO +} diff --git a/test/clos1way5.ok b/test/clos1way5.ok new file mode 100644 index 00000000..1ff15402 --- /dev/null +++ b/test/clos1way5.ok @@ -0,0 +1,3 @@ +test1 +gawk: clos1way5.awk:6: fatal: getline: attempt to read from closed read end of two-way pipe +EXIT CODE: 2 -- cgit v1.2.3 From 1b5d1b8870cb0ac1c4b99f6cf67e3277427df864 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Mon, 4 Apr 2016 23:11:19 +0300 Subject: Add warning for fflush of closed write end on 2-way pipe. --- test/ChangeLog | 2 ++ test/clos1way2.awk | 1 + test/clos1way2.ok | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/ChangeLog b/test/ChangeLog index 80b2c233..2867f6cb 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -5,6 +5,8 @@ * clos1way2.awk, clos1way2.in, clos1way2.ok, clos1way3.awk, clos1way3.ok, clos1way4.awk, clos1way4.ok, clos1way5.awk, clos1way5.ok: New files. + * clos1way2.awk: Add call to fflush() to test it too. + * clos1way2.ok: Updated after code change. 2016-02-18 Arnold D. Robbins diff --git a/test/clos1way2.awk b/test/clos1way2.awk index 7dab6a67..5794bec5 100644 --- a/test/clos1way2.awk +++ b/test/clos1way2.awk @@ -1,5 +1,6 @@ { cmd = "cat - 1>&2; sleep 2" print |& cmd; close(cmd, "to") + fflush(cmd) print |& cmd; print ERRNO } diff --git a/test/clos1way2.ok b/test/clos1way2.ok index 22bd3e17..063c4213 100644 --- a/test/clos1way2.ok +++ b/test/clos1way2.ok @@ -1,3 +1,4 @@ -gawk: clos1way2.awk:4: (FILENAME=- FNR=1) fatal: print: attempt to write to closed write end of two-way pipe +gawk: clos1way2.awk:4: (FILENAME=- FNR=1) warning: fflush: cannot flush: two-way pipe `cat - 1>&2; sleep 2' has closed write end +gawk: clos1way2.awk:5: (FILENAME=- FNR=1) fatal: print: attempt to write to closed write end of two-way pipe test CODE: 2 -- cgit v1.2.3