Persistent store with Git semantics: lazy reads, delayed writes, content-addressing
at main 43 lines 1.6 kB view raw
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 ] )