mte/unikernel/duniverse/dune_/test/expect-tests/module_tests.ml
2025-11-11 02:07:51 +01:00

31 lines
1 KiB
OCaml

open Stdune
module Kind = Dune_rules.Module.Kind
(* See #10264 *)
let%expect_test "Module.Kind encoding round trip" =
let module_name s = Dune_rules.Module_name.of_string s in
let test k =
let ast = Kind.encode k in
let sexp = Dune_sexp.Ast.add_loc ~loc:Loc.none ast in
let decoded =
match Dune_lang.Decoder.parse Kind.decode Univ_map.empty sexp with
| r -> Ok r
| exception e -> Error e
in
let dyn =
Dyn.record
[ "ast", Dyn.string (Dune_sexp.to_string ast)
; "decoded", Or_exn.to_dyn Kind.to_dyn decoded
]
in
Dune_tests_common.print_dyn dyn
in
test Impl;
[%expect {| { ast = "impl"; decoded = Ok "impl" } |}];
test (Alias []);
[%expect {| { ast = "alias"; decoded = Ok "alias" } |}];
test (Alias [ module_name "A" ]);
[%expect {| { ast = "(alias (A))"; decoded = Ok [ "alias"; [ "A" ] ] } |}];
test (Alias [ module_name "A"; module_name "B" ]);
[%expect {| { ast = "(alias (A B))"; decoded = Ok [ "alias"; [ "A"; "B" ] ] } |}]
;;