]> git.proxmox.com Git - libgit2.git/blobdiff - tests/libgit2/index/read_tree.c
Merge https://salsa.debian.org/debian/libgit2 into proxmox/bullseye
[libgit2.git] / tests / libgit2 / index / read_tree.c
diff --git a/tests/libgit2/index/read_tree.c b/tests/libgit2/index/read_tree.c
new file mode 100644 (file)
index 0000000..0e18828
--- /dev/null
@@ -0,0 +1,46 @@
+#include "clar_libgit2.h"
+#include "posix.h"
+
+/* Test that reading and writing a tree is a no-op */
+void test_index_read_tree__read_write_involution(void)
+{
+       git_repository *repo;
+       git_index *index;
+       git_oid tree_oid;
+       git_tree *tree;
+       git_oid expected;
+
+       p_mkdir("read_tree", 0700);
+
+       cl_git_pass(git_repository_init(&repo, "./read_tree", 0));
+       cl_git_pass(git_repository_index(&index, repo));
+
+       cl_assert(git_index_entrycount(index) == 0);
+
+       p_mkdir("./read_tree/abc", 0700);
+
+       /* Sort order: '-' < '/' < '_' */
+       cl_git_mkfile("./read_tree/abc-d", NULL);
+       cl_git_mkfile("./read_tree/abc/d", NULL);
+       cl_git_mkfile("./read_tree/abc_d", NULL);
+
+       cl_git_pass(git_index_add_bypath(index, "abc-d"));
+       cl_git_pass(git_index_add_bypath(index, "abc_d"));
+       cl_git_pass(git_index_add_bypath(index, "abc/d"));
+
+       /* write-tree */
+       cl_git_pass(git_index_write_tree(&expected, index));
+
+       /* read-tree */
+       git_tree_lookup(&tree, repo, &expected);
+       cl_git_pass(git_index_read_tree(index, tree));
+       git_tree_free(tree);
+
+       cl_git_pass(git_index_write_tree(&tree_oid, index));
+       cl_assert_equal_oid(&expected, &tree_oid);
+
+       git_index_free(index);
+       git_repository_free(repo);
+
+       cl_fixture_cleanup("read_tree");
+}