1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
open! Base
let current = ref None
let set ~filename_rel_to_project_root =
match !current with
| None -> current := Some filename_rel_to_project_root
| Some current ->
raise_s
(Sexp.message
"Expect_test_collector.set: there is already an active file"
[ "old_file", sexp_of_string current
; "new_file", sexp_of_string filename_rel_to_project_root
])
;;
let unset () =
match !current with
| Some _ -> current := None
| None ->
raise_s (Sexp.message "Expect_test_collector.unset: there is no active file" [])
;;
let get () =
match !current with
| Some fn -> fn
| None -> raise_s (Sexp.message "Expect_test_collector.get: there is no active file" [])
;;
let initial_dir =
let dir_or_error = Or_error.try_with ~backtrace:true Stdlib.Sys.getcwd in
lazy (Or_error.ok_exn dir_or_error)
;;
let absolute_path file =
if Stdlib.Filename.is_relative file
then Stdlib.Filename.concat (Lazy.force initial_dir) file
else file
;;
let verify_that_file_is_current_exn ~line_number ~filename_rel_to_project_root =
let registering_tests_for = get () in
if not (String.equal filename_rel_to_project_root registering_tests_for)
then
Printf.ksprintf
failwith
"Trying to run an expect test from the wrong file.\n\
- test declared at %s:%d\n\
- trying to run it from %s\n"
filename_rel_to_project_root
line_number
registering_tests_for
else ()
;;
|