diff --git a/libname/ppx_inline_test_libname.ml b/libname/ppx_inline_test_libname.ml index c7b4baf..d7f6104 100644 --- a/libname/ppx_inline_test_libname.ml +++ b/libname/ppx_inline_test_libname.ml @@ -20,4 +20,11 @@ let () = | Some lib -> libname := Some lib) ;; -let get () = !libname;; +let get () = + match !libname with + | None -> None + | Some lib -> + (match String.index lib ':' with + | exception Not_found -> Some (lib, None) + | i -> Some (String.sub lib 0 i, (Some (String.sub lib (i + 1) (String.length lib - i - 1))))) +;; diff --git a/libname/ppx_inline_test_libname.mli b/libname/ppx_inline_test_libname.mli index ae24eb9..aa5de6e 100644 --- a/libname/ppx_inline_test_libname.mli +++ b/libname/ppx_inline_test_libname.mli @@ -1,3 +1,3 @@ (** This library defines the command line argument -libname, shared by both ppx_bench and ppx_inline_test. *) -val get : unit -> string option +val get : unit -> (string * string option) option diff --git a/src/ppx_inline_test.ml b/src/ppx_inline_test.ml index b6e6b6e..9613f0e 100644 --- a/src/ppx_inline_test.ml +++ b/src/ppx_inline_test.ml @@ -309,10 +309,17 @@ let tags = E.tags let () = Driver.V2.register_transformation "inline-test" ~extensions:E.all ~enclose_impl:(fun ctxt loc -> - let partition = Stdlib.Filename.basename (Expansion_context.Base.input_name ctxt) in - match loc, Ppx_inline_test_libname.get () with + let libname_and_partition = + match Ppx_inline_test_libname.get () with + | None -> None + | Some (libname, Some partition) -> Some (libname, partition) + | Some (libname, None) -> + let partition = Stdlib.Filename.basename (Expansion_context.Base.input_name ctxt) in + Some (libname, partition) + in + match loc, libname_and_partition with | None, _ | _, None -> [], [] - | Some loc, Some libname -> + | Some loc, Some (libname, partition) -> let loc = { loc with loc_ghost = true } in (* See comment in benchmark_accumulator.ml *) let header =