@@ -165,6 +165,7 @@ test "listen on a port, send bytes, receive bytes" {
165
165
defer t .wait ();
166
166
167
167
var client = try server .accept ();
168
+ defer client .stream .close ();
168
169
var buf : [16 ]u8 = undefined ;
169
170
const n = try client .stream .reader ().read (& buf );
170
171
@@ -252,3 +253,37 @@ fn testServer(server: *net.StreamServer) anyerror!void {
252
253
const stream = client .stream .writer ();
253
254
try stream .print ("hello from server\n " , .{});
254
255
}
256
+
257
+ test "listen on a unix socket, send bytes, receive bytes" {
258
+ if (builtin .single_threaded ) return error .SkipZigTest ;
259
+ if (! net .has_unix_sockets ) return error .SkipZigTest ;
260
+
261
+ var server = net .StreamServer .init (.{});
262
+ defer server .deinit ();
263
+
264
+ const socket_path = "socket.unix" ;
265
+
266
+ var socket_addr = try net .Address .initUnix (socket_path );
267
+ defer std .fs .cwd ().deleteFile (socket_path ) catch {};
268
+ try server .listen (socket_addr );
269
+
270
+ const S = struct {
271
+ fn clientFn (_ : void ) ! void {
272
+ const socket = try net .connectUnixSocket (socket_path );
273
+ defer socket .close ();
274
+
275
+ _ = try socket .writer ().writeAll ("Hello world!" );
276
+ }
277
+ };
278
+
279
+ const t = try std .Thread .spawn ({}, S .clientFn );
280
+ defer t .wait ();
281
+
282
+ var client = try server .accept ();
283
+ defer client .stream .close ();
284
+ var buf : [16 ]u8 = undefined ;
285
+ const n = try client .stream .reader ().read (& buf );
286
+
287
+ testing .expectEqual (@as (usize , 12 ), n );
288
+ testing .expectEqualSlices (u8 , "Hello world!" , buf [0.. n ]);
289
+ }
0 commit comments