Skip to content

Commit

Permalink
Convert signal tests to cram
Browse files Browse the repository at this point in the history
  • Loading branch information
aantron committed Jan 19, 2024
1 parent ebdfac0 commit 2c5c1ea
Show file tree
Hide file tree
Showing 16 changed files with 130 additions and 0 deletions.
1 change: 1 addition & 0 deletions test/unit/async/dune
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(cram
(alias runtest-windows)
(deps
trivial.exe
send.exe
Expand Down
1 change: 1 addition & 0 deletions test/unit/idle/dune
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(cram
(alias runtest-windows)
(deps
idle_trivial.exe
idle_loop.exe
Expand Down
1 change: 1 addition & 0 deletions test/unit/loop/dune
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(cram
(alias runtest-windows)
(deps
trivial.exe
configure.exe
Expand Down
1 change: 1 addition & 0 deletions test/unit/poll/dune
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(cram
(alias runtest-windows)
(deps
trivial.exe
writable.exe
Expand Down
1 change: 1 addition & 0 deletions test/unit/pure/dune
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(cram
(alias runtest-windows)
(deps
version.exe
error.exe
Expand Down
27 changes: 27 additions & 0 deletions test/unit/signal/dune
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
; Have not found a programmatic way to send signals to the process under test
; that are received by libuv code on Windows, neither from OCaml nor from the
; shell.

(cram
(deps
trivial.exe
start.exe
stop.exe
oneshot.exe
signum.exe
start_exception.exe
oneshot_exception.exe
))

(executables
(names
trivial
start
stop
oneshot
signum
start_exception
oneshot_exception
)
(libraries luv unit_helpers)
(flags -open Unit_helpers))
7 changes: 7 additions & 0 deletions test/unit/signal/helpers.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
let with_signal f =
Luv.Signal.init () |> ok "init" @@ fun signal ->
f signal;
Luv.Handle.close signal ignore

let send_signal () =
Unix.kill (Unix.getpid ()) Sys.sighup
11 changes: 11 additions & 0 deletions test/unit/signal/oneshot.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
let () =
Helpers.with_signal @@ fun signal ->

Luv.Signal.start_oneshot signal Luv.Signal.sighup (fun () ->
print_endline "Signal")
|> ok "start" @@ fun () ->

Helpers.send_signal ();

Luv.Loop.run () |> ignore;
print_endline "Ok"
13 changes: 13 additions & 0 deletions test/unit/signal/oneshot_exception.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
let () =
Helpers.with_signal @@ fun signal ->

Luv.Error.set_on_unhandled_exception (function
| Exit -> print_endline "Ok"
| _ -> ());

Luv.Signal.start_oneshot signal Luv.Signal.sighup (fun () -> raise Exit)
|> ok "start" @@ fun () ->

Helpers.send_signal ();

Luv.Loop.run () |> ignore
21 changes: 21 additions & 0 deletions test/unit/signal/signal.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
$ dune exec ./trivial.exe
Ok

$ dune exec ./start.exe
Ok

$ dune exec ./stop.exe
Ok

$ dune exec ./oneshot.exe
Signal
Ok

$ dune exec ./signum.exe
true

$ dune exec ./start_exception.exe
Ok

$ dune exec ./oneshot_exception.exe
Ok
7 changes: 7 additions & 0 deletions test/unit/signal/signum.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
let () =
Helpers.with_signal @@ fun signal ->

Luv.Signal.start signal Luv.Signal.sighup ignore
|> ok "start" @@ fun () ->

Printf.printf "%b\n" (Luv.Signal.signum signal = Luv.Signal.sighup)
11 changes: 11 additions & 0 deletions test/unit/signal/start.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
let () =
Helpers.with_signal @@ fun signal ->

Luv.Signal.start signal Luv.Signal.sighup (fun () ->
print_endline "Ok";
exit 0)
|> ok "start" @@ fun () ->

Helpers.send_signal ();

Luv.Loop.run () |> ignore
13 changes: 13 additions & 0 deletions test/unit/signal/start_exception.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
let () =
Helpers.with_signal @@ fun signal ->

Luv.Error.set_on_unhandled_exception (function
| Exit -> print_endline "Ok"; exit 0
| _ -> ());

Luv.Signal.start signal Luv.Signal.sighup (fun () -> raise Exit)
|> ok "start" @@ fun () ->

Helpers.send_signal ();

Luv.Loop.run () |> ignore
11 changes: 11 additions & 0 deletions test/unit/signal/stop.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
let () =
Helpers.with_signal @@ fun signal ->

Luv.Signal.start signal Luv.Signal.sighup (fun () ->
Luv.Signal.stop signal |> ok "stop" ignore)
|> ok "start" @@ fun () ->

Helpers.send_signal ();

Luv.Loop.run () |> ignore;
print_endline "Ok"
3 changes: 3 additions & 0 deletions test/unit/signal/trivial.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
let () =
Helpers.with_signal ignore;
print_endline "Ok"
1 change: 1 addition & 0 deletions test/unit/timer/dune
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(cram
(alias runtest-windows)
(deps
trivial.exe
loop.exe
Expand Down

0 comments on commit 2c5c1ea

Please sign in to comment.