From e2dda4896b5c3ba62c56280d1924db654a44257c Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Wed, 5 Feb 2025 18:33:41 +0800 Subject: [PATCH 1/2] On MacOS, tests hangs. Seems that you can't cancel on MacOS: https://github.com/lightpanda-io/tigerbeetle-io/blob/main/io/darwin.zig#L580 --- src/loop.zig | 7 +++++++ src/tests/cbk_test.zig | 28 +++++++++++++++------------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/loop.zig b/src/loop.zig index c9d0490..77a3524 100644 --- a/src/loop.zig +++ b/src/loop.zig @@ -291,4 +291,11 @@ pub const SingleThreaded = struct { report("recv done, remaining events: {d}", .{old_events_nb - 1}); } } + + pub fn canCancel() bool { + return switch (@import("builtin").target.os.tag) { + .macos, .tvos, .watchos, .ios => false, + else => true, + }; + } }; diff --git a/src/tests/cbk_test.zig b/src/tests/cbk_test.zig index 83d685f..9ba9c5b 100644 --- a/src/tests/cbk_test.zig +++ b/src/tests/cbk_test.zig @@ -260,17 +260,19 @@ pub fn exec( }; try tests.checkCases(js_env, &cases_cbk_setter_arg); - // cancel cbk - var cases_cbk_cancel = [_]tests.Case{ - .{ - .src = - \\let vv = 0; - \\const id = window.cbkAsync(() => {vv += 1}, 100); - \\window.cancel(id); - , - .ex = "undefined", - }, - .{ .src = "vv", .ex = "0" }, - }; - try tests.checkCases(js_env, &cases_cbk_cancel); + if (jsruntime.Loop.canCancel()) { + // cancel cbk + var cases_cbk_cancel = [_]tests.Case{ + .{ + .src = + \\let vv = 0; + \\const id = window.cbkAsync(() => {vv += 1}, 100); + \\window.cancel(id); + , + .ex = "undefined", + }, + .{ .src = "vv", .ex = "0" }, + }; + try tests.checkCases(js_env, &cases_cbk_cancel); + } } From 06ab6b3aa922f86feb671424104ee6273c0e109e Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Thu, 6 Feb 2025 07:58:28 +0800 Subject: [PATCH 2/2] Move canCancel to test_utils Rename canCancel to isCancelAvailable which seems more descriptive. --- src/loop.zig | 7 ------- src/tests/cbk_test.zig | 2 +- src/tests/test_utils.zig | 7 +++++++ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/loop.zig b/src/loop.zig index 77a3524..c9d0490 100644 --- a/src/loop.zig +++ b/src/loop.zig @@ -291,11 +291,4 @@ pub const SingleThreaded = struct { report("recv done, remaining events: {d}", .{old_events_nb - 1}); } } - - pub fn canCancel() bool { - return switch (@import("builtin").target.os.tag) { - .macos, .tvos, .watchos, .ios => false, - else => true, - }; - } }; diff --git a/src/tests/cbk_test.zig b/src/tests/cbk_test.zig index 9ba9c5b..443e84c 100644 --- a/src/tests/cbk_test.zig +++ b/src/tests/cbk_test.zig @@ -260,7 +260,7 @@ pub fn exec( }; try tests.checkCases(js_env, &cases_cbk_setter_arg); - if (jsruntime.Loop.canCancel()) { + if (tests.isCancelAvailable()) { // cancel cbk var cases_cbk_cancel = [_]tests.Case{ .{ diff --git a/src/tests/test_utils.zig b/src/tests/test_utils.zig index eb3601c..3e5aacb 100644 --- a/src/tests/test_utils.zig +++ b/src/tests/test_utils.zig @@ -144,6 +144,13 @@ pub fn checkCasesAlloc(allocator: std.mem.Allocator, js_env: *public.Env, cases: } } +pub fn isCancelAvailable() bool { + return switch (@import("builtin").target.os.tag) { + .macos, .tvos, .watchos, .ios => false, + else => true, + }; +} + pub const Case = struct { src: []const u8, ex: []const u8,