@@ -6,6 +6,8 @@ package net
6
6
7
7
import (
8
8
"io"
9
+ "io/ioutil"
10
+ "os"
9
11
"runtime"
10
12
"testing"
11
13
"time"
@@ -58,6 +60,59 @@ func TestShutdown(t *testing.T) {
58
60
}
59
61
}
60
62
63
+ func TestShutdownUnix (t * testing.T ) {
64
+ if runtime .GOOS == "plan9" {
65
+ t .Logf ("skipping test on %q" , runtime .GOOS )
66
+ return
67
+ }
68
+ f , err := ioutil .TempFile ("" , "go_net_unixtest" )
69
+ if err != nil {
70
+ t .Fatalf ("TempFile: %s" , err )
71
+ }
72
+ f .Close ()
73
+ tmpname := f .Name ()
74
+ os .Remove (tmpname )
75
+ ln , err := Listen ("unix" , tmpname )
76
+ if err != nil {
77
+ t .Fatalf ("ListenUnix on %s: %s" , tmpname , err )
78
+ }
79
+ defer os .Remove (tmpname )
80
+
81
+ go func () {
82
+ c , err := ln .Accept ()
83
+ if err != nil {
84
+ t .Fatalf ("Accept: %v" , err )
85
+ }
86
+ var buf [10 ]byte
87
+ n , err := c .Read (buf [:])
88
+ if n != 0 || err != io .EOF {
89
+ t .Fatalf ("server Read = %d, %v; want 0, io.EOF" , n , err )
90
+ }
91
+ c .Write ([]byte ("response" ))
92
+ c .Close ()
93
+ }()
94
+
95
+ c , err := Dial ("unix" , tmpname )
96
+ if err != nil {
97
+ t .Fatalf ("Dial: %v" , err )
98
+ }
99
+ defer c .Close ()
100
+
101
+ err = c .(* UnixConn ).CloseWrite ()
102
+ if err != nil {
103
+ t .Fatalf ("CloseWrite: %v" , err )
104
+ }
105
+ var buf [10 ]byte
106
+ n , err := c .Read (buf [:])
107
+ if err != nil {
108
+ t .Fatalf ("client Read: %d, %v" , n , err )
109
+ }
110
+ got := string (buf [:n ])
111
+ if got != "response" {
112
+ t .Errorf ("read = %q, want \" response\" " , got )
113
+ }
114
+ }
115
+
61
116
func TestTCPListenClose (t * testing.T ) {
62
117
ln , err := Listen ("tcp" , "127.0.0.1:0" )
63
118
if err != nil {
0 commit comments