dune/test/common/test_common.ml

31 lines
753 B
OCaml

open! StdLabels
let read_file file =
let ic = open_in_bin file in
let len = in_channel_length ic in
let file_contents = really_input_string ic len in
close_in ic;
file_contents
let run_expect_test file ~f =
let file_contents = read_file file in
let lexbuf = Lexing.from_string file_contents in
lexbuf.lex_curr_p <-
{ pos_fname = file
; pos_cnum = 0
; pos_lnum = 1
; pos_bol = 0
};
let expected = f file_contents lexbuf in
let corrected_file = file ^ ".corrected" in
if file_contents <> expected then begin
let oc = open_out_bin corrected_file in
output_string oc expected;
close_out oc;
end else begin
if Sys.file_exists corrected_file then Sys.remove corrected_file;
exit 0
end