Skip to content

Commit ce81799

Browse files
committed
Do not reuse fiber scheduler between tests
Signed-off-by: Rudi Grinberg <me@rgrinberg.com>
1 parent 47d0169 commit ce81799

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

fiber-test/fiber_test.ml

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,33 @@ let print pp = Format.printf "%a@." Pp.render_ignore_tags pp
77
let print_dyn dyn = print (Dyn.pp dyn)
88

99
module Scheduler : sig
10+
type t
11+
1012
exception Never
1113

1214
val yield : unit -> unit Fiber.t
1315

14-
val run : 'a Fiber.t -> 'a
16+
val create : unit -> t
17+
18+
val run : t -> 'a Fiber.t -> 'a
1519
end = struct
16-
let suspended = Queue.create ()
20+
type t = unit Fiber.Ivar.t Queue.t
21+
22+
let t_var = Fiber.Var.create ()
23+
24+
let create () = Queue.create ()
1725

1826
let yield () =
1927
let ivar = Fiber.Ivar.create () in
20-
Queue.push suspended ivar;
28+
let t = Fiber.Var.get_exn t_var in
29+
Queue.push t ivar;
2130
Fiber.Ivar.read ivar
2231

2332
exception Never
2433

25-
let run t =
26-
Fiber.run t ~iter:(fun () ->
27-
match Queue.pop suspended with
34+
let run t fiber =
35+
Fiber.run fiber ~iter:(fun () ->
36+
match Queue.pop t with
2837
| None -> raise Never
2938
| Some e -> Fiber.Fill (e, ()))
3039
end
@@ -37,7 +46,7 @@ let test ?(expect_never = false) to_dyn f =
3746
in
3847
Fiber.with_error_handler (fun () -> f) ~on_error
3948
in
40-
( try Scheduler.run f |> to_dyn |> print_dyn
49+
( try Scheduler.run (Scheduler.create ()) f |> to_dyn |> print_dyn
4150
with Scheduler.Never -> never_raised := true );
4251
match (!never_raised, expect_never) with
4352
| false, false ->

0 commit comments

Comments
 (0)