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