diff --git a/src/lib_micheline/test/assert.ml b/src/lib_micheline/test/assert.ml index d979059a5..37b67089b 100644 --- a/src/lib_micheline/test/assert.ml +++ b/src/lib_micheline/test/assert.ml @@ -23,6 +23,32 @@ (* *) (*****************************************************************************) +(* Mini compatibility layer to avoid circular dependency *) +module Compat = struct + let failwith fmt = Format.kasprintf (fun s -> Lwt.return (Error s)) fmt + let return_unit = Lwt.return (Ok ()) + let (>>=) = Lwt.bind + let (>>=?) v f = + v >>= function + | Error _ as err -> Lwt.return err + | Ok v -> f v + let rec iter2_p f l1 l2 = + match l1, l2 with + | [], [] -> return_unit + | [], _ | _, [] -> invalid_arg "Error_monad.iter2_p" + | x1 :: l1 , x2 :: l2 -> + let tx = f x1 x2 and tl = iter2_p f l1 l2 in + tx >>= fun tx_res -> + tl >>= fun tl_res -> + match tx_res, tl_res with + | Ok (), Ok () -> Lwt.return (Ok ()) + | Error exn1, Error exn2 -> failwith "%s -- %s" exn1 exn2 + | Ok (), Error exn + | Error exn, Ok () -> Lwt.return (Error exn) +end + +open Compat + let fail loc printer given expected msg = failwith "@[ On %s : %s@ @[Given:\t%a@]@ @[Expected:\t%a@]@]" diff --git a/src/lib_micheline/test/dune b/src/lib_micheline/test/dune index e4fc415a9..ee87647d5 100644 --- a/src/lib_micheline/test/dune +++ b/src/lib_micheline/test/dune @@ -1,12 +1,9 @@ (executables (names test_parser) - (libraries tezos-stdlib-unix - tezos-micheline + (libraries tezos-micheline alcotest-lwt) (flags (:standard -w -9-32 -safe-string - -open Tezos_base__TzPervasives - -open Tezos_micheline - -open Tezos_stdlib_unix))) + -open Tezos_micheline))) (alias (name buildtest) diff --git a/src/lib_micheline/test/test_parser.ml b/src/lib_micheline/test/test_parser.ml index 097359d76..278bf9d74 100644 --- a/src/lib_micheline/test/test_parser.ml +++ b/src/lib_micheline/test/test_parser.ml @@ -27,6 +27,8 @@ (* Token value *) (****************************************************************************) +open Assert.Compat + let assert_tokenize ~loc given expected = match Micheline_parser.tokenize given with | tokens, [] -> @@ -454,9 +456,7 @@ let wrap (n, f) = Alcotest_lwt.test_case n `Quick begin fun _ () -> f () >>= function | Ok () -> Lwt.return_unit - | Error err -> - Tezos_stdlib_unix.Logging_unix.close () >>= fun () -> - Lwt.fail_with (Format.asprintf "%a" pp_print_error err) + | Error err -> Lwt.fail_with err end let () = diff --git a/src/lib_micheline/tezos-micheline.opam b/src/lib_micheline/tezos-micheline.opam index 2dfbb7711..1d21a91e4 100644 --- a/src/lib_micheline/tezos-micheline.opam +++ b/src/lib_micheline/tezos-micheline.opam @@ -11,6 +11,7 @@ depends: [ "tezos-data-encoding" "tezos-error-monad" "uutf" + "alcotest-lwt" { with-test } ] build: [ [ "dune" "build" "-p" name "-j" jobs ]