Commit b863f2548b

Andrew Kelley <andrew@ziglang.org>
2025-10-29 02:43:47
std.Io.Threaded: handle -fsingle-threaded in unit tests
1 parent 1c0a8b8
Changed files (2)
lib
std
Io
lib/std/Io/Threaded/test.zig
@@ -1,3 +1,5 @@
+const builtin = @import("builtin");
+
 const std = @import("std");
 const Io = std.Io;
 const testing = std.testing;
@@ -12,7 +14,12 @@ test "concurrent vs main prevents deadlock via oversubscription" {
 
     var queue: Io.Queue(u8) = .init(&.{});
 
-    var putter = try io.concurrent(put, .{ io, &queue });
+    var putter = io.concurrent(put, .{ io, &queue }) catch |err| switch (err) {
+        error.ConcurrencyUnavailable => {
+            try testing.expect(builtin.single_threaded);
+            return;
+        },
+    };
     defer putter.cancel(io);
 
     try testing.expectEqual(42, queue.getOneUncancelable(io));
@@ -35,7 +42,12 @@ test "concurrent vs concurrent prevents deadlock via oversubscription" {
 
     var queue: Io.Queue(u8) = .init(&.{});
 
-    var putter = try io.concurrent(put, .{ io, &queue });
+    var putter = io.concurrent(put, .{ io, &queue }) catch |err| switch (err) {
+        error.ConcurrencyUnavailable => {
+            try testing.expect(builtin.single_threaded);
+            return;
+        },
+    };
     defer putter.cancel(io);
 
     var getter = try io.concurrent(get, .{ io, &queue });
lib/std/Io/test.zig
@@ -177,7 +177,12 @@ test "select" {
 
     var queue: Io.Queue(u8) = .init(&.{});
 
-    var get_a = try io.concurrent(Io.Queue(u8).getOne, .{ &queue, io });
+    var get_a = io.concurrent(Io.Queue(u8).getOne, .{ &queue, io }) catch |err| switch (err) {
+        error.ConcurrencyUnavailable => {
+            try testing.expect(builtin.single_threaded);
+            return;
+        },
+    };
     defer if (get_a.cancel(io)) |_| @panic("fail") else |err| assert(err == error.Canceled);
 
     var get_b = try io.concurrent(Io.Queue(u8).getOne, .{ &queue, io });