mte/unikernel/duniverse/lwt/test/unix/dummy.ml
2025-11-11 02:07:51 +01:00

31 lines
951 B
OCaml

(* This file is part of Lwt, released under the MIT license. See LICENSE.md for
details, or visit https://github.com/ocsigen/lwt/blob/master/LICENSE.md. *)
let test_input_str = "the quick brown fox jumps over the lazy dog"
let test_input = Bytes.of_string test_input_str
let test_input_len = Bytes.length test_input
let read () =
let buf = Bytes.create test_input_len in
let rec aux n =
let i = Unix.read Unix.stdin buf n (Bytes.length buf - n) in
if i = 0 || n + i = test_input_len then
Bytes.equal buf test_input
else aux (n + i)
in
if aux 0 then
(* make sure there's nothing more to read *)
0 = Unix.read Unix.stdin buf 0 1
else false
let write fd =
assert (test_input_len = Unix.write fd test_input 0 test_input_len)
let () =
match Sys.argv.(1) with
| "read" -> exit @@ if read () then 0 else 1
| "write" -> write Unix.stdout
| "errwrite" -> write Unix.stderr
| _ -> invalid_arg "Sys.argv"