aboutsummaryrefslogtreecommitdiffstats
path: root/test/Helpers.ml
diff options
context:
space:
mode:
Diffstat (limited to 'test/Helpers.ml')
-rw-r--r--test/Helpers.ml25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/Helpers.ml b/test/Helpers.ml
index bf34b82..784170c 100644
--- a/test/Helpers.ml
+++ b/test/Helpers.ml
@@ -17,3 +17,28 @@ let condition_as_failure = function
let pp_value ppf v = Format.pp_print_string ppf (Concepts.Value.to_string v)
let value = Alcotest.testable pp_value Concepts.Value.equal
+
+module Storage = struct
+ module type CONFIGURATOR = sig
+ val configure : string -> Rnt.Concepts.Configuration.term
+ end
+
+ module LMDB_Configurator : CONFIGURATOR = struct
+ let configure base =
+ let open Sexplib.Sexp in
+ List [Atom "lmdb"; List [Atom "path"; Atom base]; List [Atom "mode"; Atom "420"]]
+ |> Rnt.Concepts.Configuration.term_of_sexp
+ end
+
+ module Make (S : Abstract.Storage.STORAGE) (C : CONFIGURATOR) = struct
+ let with_connection f dir () =
+ with_temporary_directory dir begin fun dir ->
+ begin
+ let open Utilities.Result in
+ let* conn = S.connect (C.configure dir) in
+ Ok (f conn)
+ end
+ |> condition_as_failure
+ end
+ end
+end