authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-10-28 18:43:47-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-10-29 06:20:52-07:00
logb863f2548b95cdc8b2e2818ac3a26e553be155dc
treeaff027ede0c9c7b35e6704c29a42b445031d5526
parent1c0a8b8fe4a979b0ba9e6cd790c33a6dc12f0f05

std.Io.Threaded: handle -fsingle-threaded in unit tests


2 files changed, 20 insertions(+), 3 deletions(-)

lib/std/Io/Threaded/test.zig+14-2
...@@ -1,3 +1,5 @@...@@ -1,3 +1,5 @@
1const builtin = @import("builtin");
2
1const std = @import("std");3const std = @import("std");
2const Io = std.Io;4const Io = std.Io;
3const testing = std.testing;5const testing = std.testing;
...@@ -12,7 +14,12 @@ test "concurrent vs main prevents deadlock via oversubscription" {...@@ -12,7 +14,12 @@ test "concurrent vs main prevents deadlock via oversubscription" {
1214
13 var queue: Io.Queue(u8) = .init(&.{});15 var queue: Io.Queue(u8) = .init(&.{});
1416
15 var putter = try io.concurrent(put, .{ io, &queue });17 var putter = io.concurrent(put, .{ io, &queue }) catch |err| switch (err) {
18 error.ConcurrencyUnavailable => {
19 try testing.expect(builtin.single_threaded);
20 return;
21 },
22 };
16 defer putter.cancel(io);23 defer putter.cancel(io);
1724
18 try testing.expectEqual(42, queue.getOneUncancelable(io));25 try testing.expectEqual(42, queue.getOneUncancelable(io));
...@@ -35,7 +42,12 @@ test "concurrent vs concurrent prevents deadlock via oversubscription" {...@@ -35,7 +42,12 @@ test "concurrent vs concurrent prevents deadlock via oversubscription" {
3542
36 var queue: Io.Queue(u8) = .init(&.{});43 var queue: Io.Queue(u8) = .init(&.{});
3744
38 var putter = try io.concurrent(put, .{ io, &queue });45 var putter = io.concurrent(put, .{ io, &queue }) catch |err| switch (err) {
46 error.ConcurrencyUnavailable => {
47 try testing.expect(builtin.single_threaded);
48 return;
49 },
50 };
39 defer putter.cancel(io);51 defer putter.cancel(io);
4052
41 var getter = try io.concurrent(get, .{ io, &queue });53 var getter = try io.concurrent(get, .{ io, &queue });
lib/std/Io/test.zig+6-1
...@@ -177,7 +177,12 @@ test "select" {...@@ -177,7 +177,12 @@ test "select" {
177177
178 var queue: Io.Queue(u8) = .init(&.{});178 var queue: Io.Queue(u8) = .init(&.{});
179179
180 var get_a = try io.concurrent(Io.Queue(u8).getOne, .{ &queue, io });180 var get_a = io.concurrent(Io.Queue(u8).getOne, .{ &queue, io }) catch |err| switch (err) {
181 error.ConcurrencyUnavailable => {
182 try testing.expect(builtin.single_threaded);
183 return;
184 },
185 };
181 defer if (get_a.cancel(io)) |_| @panic("fail") else |err| assert(err == error.Canceled);186 defer if (get_a.cancel(io)) |_| @panic("fail") else |err| assert(err == error.Canceled);
182187
183 var get_b = try io.concurrent(Io.Queue(u8).getOne, .{ &queue, io });188 var get_b = try io.concurrent(Io.Queue(u8).getOne, .{ &queue, io });