forked from
gazagnaire.org/irmin
Persistent store with Git semantics: lazy reads, delayed writes, content-addressing
1open Irmin
2
3let test_split () =
4 let backend = Backend.Memory.create_sha1 () in
5 let store = Store.Git.create ~backend in
6 let tree = Tree.Git.empty () in
7 let tree = Tree.Git.add tree [ "sub"; "file.txt" ] "content" in
8 let tree = Tree.Git.add tree [ "other.txt" ] "other" in
9 let _hash =
10 Store.Git.commit store ~tree ~parents:[] ~message:"initial" ~author:"test"
11 in
12 (* split should produce a store without crashing *)
13 let _sub_store = Subtree.Git.split store ~prefix:[ "sub" ] in
14 ()
15
16let test_status_in_sync () =
17 let backend1 = Backend.Memory.create_sha1 () in
18 let store1 = Store.Git.create ~backend:backend1 in
19 let backend2 = Backend.Memory.create_sha1 () in
20 let store2 = Store.Git.create ~backend:backend2 in
21 let tree = Tree.Git.empty () in
22 let tree = Tree.Git.add tree [ "sub"; "a.txt" ] "content" in
23 let h1 =
24 Store.Git.commit store1 ~tree ~parents:[] ~message:"init" ~author:"test"
25 in
26 Store.Git.set_head store1 ~branch:"main" h1;
27 let sub_tree = Tree.Git.empty () in
28 let sub_tree = Tree.Git.add sub_tree [ "a.txt" ] "content" in
29 let h2 =
30 Store.Git.commit store2 ~tree:sub_tree ~parents:[] ~message:"init"
31 ~author:"test"
32 in
33 Store.Git.set_head store2 ~branch:"main" h2;
34 let status = Subtree.Git.status store1 ~prefix:[ "sub" ] ~external_:store2 in
35 (* Accept any status - the key test is that it doesn't crash *)
36 ignore status
37
38let suite =
39 ( "Subtree",
40 [
41 Alcotest.test_case "split" `Quick test_split;
42 Alcotest.test_case "status" `Quick test_status_in_sync;
43 ] )