Skip to content

Commit 3815a60

Browse files
committed
std: Add a small test for i/o on unix sockets
1 parent 5d08f2f commit 3815a60

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

lib/std/net/test.zig

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ test "listen on a port, send bytes, receive bytes" {
165165
defer t.wait();
166166

167167
var client = try server.accept();
168+
defer client.stream.close();
168169
var buf: [16]u8 = undefined;
169170
const n = try client.stream.reader().read(&buf);
170171

@@ -252,3 +253,37 @@ fn testServer(server: *net.StreamServer) anyerror!void {
252253
const stream = client.stream.writer();
253254
try stream.print("hello from server\n", .{});
254255
}
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

Comments
 (0)