| ... | @@ -1139,13 +1139,26 @@ fn createTestServer(io: Io, S: type) !*TestServer { | ... | @@ -1139,13 +1139,26 @@ fn createTestServer(io: Io, S: type) !*TestServer { |
| 1139 | } | 1139 | } |
| 1140 | | 1140 | |
| 1141 | const address = try net.IpAddress.parse("127.0.0.1", 0); | 1141 | const address = try net.IpAddress.parse("127.0.0.1", 0); |
| 1142 | const test_server = try std.testing.allocator.create(TestServer); | 1142 | |
| | 1143 | const gpa = std.testing.allocator; |
| | 1144 | |
| | 1145 | const test_server = try gpa.create(TestServer); |
| | 1146 | errdefer gpa.destroy(test_server); |
| | 1147 | |
| | 1148 | var net_server = try address.listen(io, .{ .reuse_address = true }); |
| | 1149 | errdefer net_server.deinit(io); |
| | 1150 | |
| | 1151 | // populate `test_server` first so `S.run` can use it |
| 1143 | test_server.* = .{ | 1152 | test_server.* = .{ |
| 1144 | .io = io, | 1153 | .io = io, |
| 1145 | .net_server = try address.listen(io, .{ .reuse_address = true }), | 1154 | .net_server = net_server, |
| 1146 | .shutting_down = false, | 1155 | .shutting_down = false, |
| 1147 | .server_thread = try std.Thread.spawn(.{}, S.run, .{test_server}), | 1156 | .server_thread = undefined, // set below |
| 1148 | }; | 1157 | }; |
| | 1158 | |
| | 1159 | test_server.server_thread = try .spawn(.{}, S.run, .{test_server}); |
| | 1160 | errdefer comptime unreachable; |
| | 1161 | |
| 1149 | return test_server; | 1162 | return test_server; |
| 1150 | } | 1163 | } |
| 1151 | | 1164 | |