31 lines
753 B
OCaml
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
|