From 0c1e4a09ecd7e97381ac98cb3d73902300fa9ee1 Mon Sep 17 00:00:00 2001 From: John Starks Date: Mon, 14 Mar 2016 16:33:35 -0700 Subject: [PATCH] Add tests that check for EOF on pipe close --- pipe_test.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/pipe_test.go b/pipe_test.go index 67c86ce..da0e708 100644 --- a/pipe_test.go +++ b/pipe_test.go @@ -2,6 +2,7 @@ package winio import ( "bufio" + "io" "net" "os" "syscall" @@ -174,6 +175,38 @@ func TestCloseAbortsListen(t *testing.T) { } } +func ensureEOFOnClose(t *testing.T, r io.Reader, w io.Closer) { + b := make([]byte, 10) + w.Close() + n, err := r.Read(b) + if n > 0 { + t.Errorf("unexpected byte count %d", n) + } + if err != io.EOF { + t.Errorf("expected EOF: %v", err) + } +} + +func TestCloseClientEOFServer(t *testing.T) { + c, s, err := getConnection() + if err != nil { + t.Fatal(err) + } + defer c.Close() + defer s.Close() + ensureEOFOnClose(t, c, s) +} + +func TestCloseServerEOFClient(t *testing.T) { + c, s, err := getConnection() + if err != nil { + t.Fatal(err) + } + defer c.Close() + defer s.Close() + ensureEOFOnClose(t, s, c) +} + func TestAcceptAfterCloseFails(t *testing.T) { l, err := ListenPipe(testPipeName, "") if err != nil {