summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtienne Samson <samson.etienne@gmail.com>2018-08-02 21:38:45 +0200
committerPatrick Steinhardt <ps@pks.im>2020-06-27 14:33:58 +0200
commitd54c00814bbba7eb39c43a8556e1720674cab3f3 (patch)
tree982cdedf9b74dcfddd05669b38d8643ad5bc5c80
parenta35cc402fa615b316ab1a02d700de3c36482ad39 (diff)
downloadlibgit2-d54c00814bbba7eb39c43a8556e1720674cab3f3.tar.gz
tests: graft commits
-rw-r--r--tests/grafts/basic.c122
-rw-r--r--tests/grafts/shallow.c130
-rw-r--r--tests/repo/shallow.c39
-rw-r--r--tests/resources/grafted.git/HEAD1
-rw-r--r--tests/resources/grafted.git/config6
-rw-r--r--tests/resources/grafted.git/info/grafts3
-rw-r--r--tests/resources/grafted.git/objects/05/12adebd3782157f0d5c9b22b043f87b4aaff9ebin0 -> 133 bytes
-rw-r--r--tests/resources/grafted.git/objects/1c/18e80a276611bb9b146590616bbc5aebdf2945bin0 -> 170 bytes
-rw-r--r--tests/resources/grafted.git/objects/1c/3f11eca55d76bc1bf7353ca7e4226246d353edbin0 -> 46 bytes
-rw-r--r--tests/resources/grafted.git/objects/2a/f02ebff1fc0142d2380c98758d81c67b365869bin0 -> 73 bytes
-rw-r--r--tests/resources/grafted.git/objects/2b/ecadd3f1ecad07a054392421edf9c0e1c375b2bin0 -> 74 bytes
-rw-r--r--tests/resources/grafted.git/objects/2f/3053cbff8a4ca2f0666de364ddb734a28a31a9bin0 -> 133 bytes
-rw-r--r--tests/resources/grafted.git/objects/45/342912745ba6f8893b1e126df4653a4355df1abin0 -> 50 bytes
-rw-r--r--tests/resources/grafted.git/objects/48/b2b333732644eafb385771a992b923fa88f135bin0 -> 49 bytes
-rw-r--r--tests/resources/grafted.git/objects/5d/31bf4b437e1191b6c709c665f1bd329d0ed0bfbin0 -> 74 bytes
-rw-r--r--tests/resources/grafted.git/objects/66/cc22a015f6ca75b34c82d28f78ba663876bade2
-rw-r--r--tests/resources/grafted.git/objects/6c/f192eb71cd3243c9fbbe2551012c4449de3fcfbin0 -> 36 bytes
-rw-r--r--tests/resources/grafted.git/objects/7c/9da502b2744b70522bb694cd607fb00104a233bin0 -> 76 bytes
-rw-r--r--tests/resources/grafted.git/objects/8a/00e91619098618be97c0d2ceabb05a2c58edd92
-rw-r--r--tests/resources/grafted.git/objects/a0/4de168dd5c43aa2af594d794d62e922f8b3b34bin0 -> 42 bytes
-rw-r--r--tests/resources/grafted.git/objects/b2/b4f9e5fe5dacbb2f98bd71d1dc86c7b571ddd1bin0 -> 54 bytes
-rw-r--r--tests/resources/grafted.git/objects/ba/54010f8d41532eb130eba420f50248881f7fc2bin0 -> 37 bytes
-rw-r--r--tests/resources/grafted.git/objects/d7/224d49d6d5aff6ade596ed74f4bcd4f77b29e22
-rw-r--r--tests/resources/grafted.git/objects/db/8e43f297a313c439530c977b733aaa8c10d54ebin0 -> 35 bytes
-rw-r--r--tests/resources/grafted.git/objects/e4/14f42f4e6bc6934563a2349a8600f0ab68618ebin0 -> 139 bytes
-rw-r--r--tests/resources/grafted.git/objects/e6/7b587a57850c69f6f9351ee10c7c8a41dacc78bin0 -> 74 bytes
-rw-r--r--tests/resources/grafted.git/objects/f0/7330bc2e4ed4bd0bf2301505f6c6bbad01aa2abin0 -> 77 bytes
-rw-r--r--tests/resources/grafted.git/objects/f5/03807ffa920e407a600cfaee96b7152259acc72
-rw-r--r--tests/resources/grafted.git/refs/heads/bottom1
-rw-r--r--tests/resources/grafted.git/refs/heads/branch1
-rw-r--r--tests/resources/grafted.git/refs/heads/master1
-rw-r--r--tests/resources/grafted.git/refs/heads/top1
32 files changed, 274 insertions, 39 deletions
diff --git a/tests/grafts/basic.c b/tests/grafts/basic.c
new file mode 100644
index 000000000..39755ee82
--- /dev/null
+++ b/tests/grafts/basic.c
@@ -0,0 +1,122 @@
+#include "clar_libgit2.h"
+
+#include "futils.h"
+#include "graft.h"
+
+static git_repository *g_repo;
+
+void test_grafts_basic__initialize(void)
+{
+ g_repo = cl_git_sandbox_init("grafted.git");
+}
+
+void test_grafts_basic__cleanup(void)
+{
+ cl_git_sandbox_cleanup();
+}
+
+void test_grafts_basic__graft_add(void)
+{
+ git_oid oid_src, *oid1;
+ git_commit_graft *graft;
+ git_graftmap *grafts;
+ git_array_oid_t parents = GIT_ARRAY_INIT;
+
+ cl_git_pass(git_oidmap_new(&grafts));
+
+ cl_assert(oid1 = git_array_alloc(parents));
+ cl_git_pass(git_oid_fromstr(&oid_src, "2f3053cbff8a4ca2f0666de364ddb734a28a31a9"));
+ git_oid_cpy(oid1, &oid_src);
+
+ git_oid_fromstr(&oid_src, "f503807ffa920e407a600cfaee96b7152259acc7");
+ cl_git_pass(git__graft_register(grafts, &oid_src, parents));
+ git_array_clear(parents);
+
+ cl_assert_equal_i(1, git_oidmap_size(grafts));
+ cl_git_pass(git__graft_for_oid(&graft, grafts, &oid_src));
+ cl_assert_equal_s("f503807ffa920e407a600cfaee96b7152259acc7", git_oid_tostr_s(&graft->oid));
+ cl_assert_equal_i(1, git_array_size(graft->parents));
+ cl_assert_equal_s("2f3053cbff8a4ca2f0666de364ddb734a28a31a9", git_oid_tostr_s(git_array_get(graft->parents, 0)));
+
+ git__graft_clear(grafts);
+ git_oidmap_free(grafts);
+}
+
+void test_grafts_basic__grafted_revwalk(void)
+{
+ git_revwalk *w;
+ git_oid oids[10];
+ size_t i = 0;
+ git_commit *commit;
+
+ cl_git_pass(git_revwalk_new(&w, g_repo));
+ cl_git_pass(git_revwalk_push_ref(w, "refs/heads/branch"));
+
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[0]), "8a00e91619098618be97c0d2ceabb05a2c58edd9");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[1]), "f503807ffa920e407a600cfaee96b7152259acc7");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[2]), "2f3053cbff8a4ca2f0666de364ddb734a28a31a9");
+
+ cl_git_fail_with(GIT_ITEROVER, git_revwalk_next(&oids[i++], w));
+
+ cl_git_pass(git_commit_lookup(&commit, g_repo, &oids[0]));
+
+ cl_assert_equal_i(1, git_commit_parentcount(commit));
+
+ git_commit_free(commit);
+ git_revwalk_free(w);
+}
+
+void test_grafts_basic__grafted_objects(void)
+{
+ git_oid oid;
+ git_commit *commit;
+
+ cl_git_pass(git_oid_fromstr(&oid, "f503807ffa920e407a600cfaee96b7152259acc7"));
+ cl_git_pass(git_commit_lookup(&commit, g_repo, &oid));
+ cl_assert_equal_i(1, git_commit_parentcount(commit));
+ git_commit_free(commit);
+
+ cl_git_pass(git_oid_fromstr(&oid, "0512adebd3782157f0d5c9b22b043f87b4aaff9e"));
+ cl_git_pass(git_commit_lookup(&commit, g_repo, &oid));
+ cl_assert_equal_i(1, git_commit_parentcount(commit));
+ git_commit_free(commit);
+
+ cl_git_pass(git_oid_fromstr(&oid, "66cc22a015f6ca75b34c82d28f78ba663876bade"));
+ cl_git_pass(git_commit_lookup(&commit, g_repo, &oid));
+ cl_assert_equal_i(4, git_commit_parentcount(commit));
+ git_commit_free(commit);
+}
+
+void test_grafts_basic__grafted_merge_revwalk(void)
+{
+ git_revwalk *w;
+ git_oid oids[10];
+ size_t i = 0;
+
+ cl_git_pass(git_revwalk_new(&w, g_repo));
+ cl_git_pass(git_revwalk_push_ref(w, "refs/heads/bottom"));
+
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[i - 1]), "66cc22a015f6ca75b34c82d28f78ba663876bade");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[i - 1]), "e414f42f4e6bc6934563a2349a8600f0ab68618e");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[i - 1]), "8a00e91619098618be97c0d2ceabb05a2c58edd9");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[i - 1]), "1c18e80a276611bb9b146590616bbc5aebdf2945");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[i - 1]), "d7224d49d6d5aff6ade596ed74f4bcd4f77b29e2");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[i - 1]), "0512adebd3782157f0d5c9b22b043f87b4aaff9e");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[i - 1]), "f503807ffa920e407a600cfaee96b7152259acc7");
+ cl_git_pass(git_revwalk_next(&oids[i++], w));
+ cl_assert_equal_s(git_oid_tostr_s(&oids[i - 1]), "2f3053cbff8a4ca2f0666de364ddb734a28a31a9");
+
+ cl_git_fail_with(GIT_ITEROVER, git_revwalk_next(&oids[i++], w));
+
+ git_revwalk_free(w);
+}
diff --git a/tests/grafts/shallow.c b/tests/grafts/shallow.c
new file mode 100644
index 000000000..e4a0f741f
--- /dev/null
+++ b/tests/grafts/shallow.c
@@ -0,0 +1,130 @@
+#include "clar_libgit2.h"
+#include "futils.h"
+
+static git_repository *g_repo;
+static git_oid g_shallow_oid;
+
+void test_grafts_shallow__initialize(void)
+{
+ cl_git_pass(git_oid_fromstr(&g_shallow_oid, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"));
+}
+
+void test_grafts_shallow__cleanup(void)
+{
+ cl_git_sandbox_cleanup();
+}
+
+void test_grafts_shallow__no_shallow_file(void)
+{
+ g_repo = cl_git_sandbox_init("testrepo.git");
+ cl_assert_equal_i(0, git_repository_is_shallow(g_repo));
+}
+
+void test_grafts_shallow__empty_shallow_file(void)
+{
+ g_repo = cl_git_sandbox_init("testrepo.git");
+ cl_git_mkfile("testrepo.git/shallow", "");
+ cl_assert_equal_i(0, git_repository_is_shallow(g_repo));
+}
+
+void test_grafts_shallow__shallow_repo(void)
+{
+ g_repo = cl_git_sandbox_init("shallow.git");
+ cl_assert_equal_i(1, git_repository_is_shallow(g_repo));
+}
+
+void test_grafts_shallow__clears_errors(void)
+{
+ g_repo = cl_git_sandbox_init("testrepo.git");
+ cl_assert_equal_i(0, git_repository_is_shallow(g_repo));
+ cl_assert_equal_p(NULL, git_error_last());
+}
+
+void test_grafts_shallow__shallow_oids(void)
+{
+ git_oidarray oids, oids2;
+ g_repo = cl_git_sandbox_init("shallow.git");
+
+ cl_git_pass(git_repository_shallow_roots(&oids, g_repo));
+ cl_assert_equal_i(1, oids.count);
+ cl_assert_equal_oid(&g_shallow_oid, &oids.ids[0]);
+
+ cl_git_pass(git_repository_shallow_roots(&oids2, g_repo));
+ cl_assert_equal_p(oids.ids, oids2.ids);
+}
+
+void test_grafts_shallow__cache_clearing(void)
+{
+ git_oidarray oids, oids2;
+ git_oid tmp_oid;
+
+ git_oid_fromstr(&tmp_oid, "0000000000000000000000000000000000000000");
+ g_repo = cl_git_sandbox_init("shallow.git");
+
+ cl_git_pass(git_repository_shallow_roots(&oids, g_repo));
+ cl_assert_equal_i(1, oids.count);
+ cl_assert_equal_oid(&g_shallow_oid, &oids.ids[0]);
+
+ cl_git_mkfile("shallow.git/shallow",
+ "be3563ae3f795b2b4353bcce3a527ad0a4f7f644\n"
+ "0000000000000000000000000000000000000000\n"
+ );
+
+ cl_git_pass(git_repository_shallow_roots(&oids2, g_repo));
+ cl_assert_equal_i(2, oids2.count);
+ cl_assert_equal_oid(&g_shallow_oid, &oids2.ids[0]);
+ cl_assert_equal_oid(&tmp_oid, &oids2.ids[1]);
+
+ cl_git_pass(p_unlink("shallow.git/shallow"));
+ cl_git_pass(git_repository_shallow_roots(&oids, g_repo));
+ cl_assert_equal_i(0, oids.count);
+ git_oidarray_free(&oids);
+}
+
+void test_grafts_shallow__errors_on_borked(void)
+{
+ git_oidarray oids;
+
+ g_repo = cl_git_sandbox_init("shallow.git");
+
+ cl_git_mkfile("shallow.git/shallow", "lolno");
+
+ cl_git_fail_with(-1, git_repository_shallow_roots(&oids, g_repo));
+
+ cl_git_mkfile("shallow.git/shallow", "lolno\n");
+
+ cl_git_fail_with(-1, git_repository_shallow_roots(&oids, g_repo));
+}
+
+void test_grafts_shallow__revwalk_behavior(void)
+{
+ git_revwalk *w;
+ git_oid oid_1, oid_2, oid_3;
+
+ g_repo = cl_git_sandbox_init("shallow.git");
+
+ cl_git_pass(git_revwalk_new(&w, g_repo));
+ cl_git_pass(git_revwalk_push_head(w));
+
+ cl_git_pass(git_revwalk_next(&oid_1, w)); // a65fedf39aefe402d3bb6e24df4d4f5fe4547750
+ cl_git_pass(git_revwalk_next(&oid_2, w)); // be3563ae3f795b2b4353bcce3a527ad0a4f7f644
+ cl_git_fail_with(GIT_ITEROVER, git_revwalk_next(&oid_3, w));
+
+ cl_assert_equal_s(git_oid_tostr_s(&oid_1), "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
+ cl_assert_equal_s(git_oid_tostr_s(&oid_2), "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
+
+ git_revwalk_free(w);
+}
+
+void test_grafts_shallow__grafted_object(void)
+{
+ git_commit *commit;
+
+ g_repo = cl_git_sandbox_init("shallow.git");
+
+ cl_git_pass(git_commit_lookup(&commit, g_repo, &g_shallow_oid));
+
+ cl_assert_equal_i(0, git_commit_parentcount(commit));
+
+ git_commit_free(commit);
+}
diff --git a/tests/repo/shallow.c b/tests/repo/shallow.c
deleted file mode 100644
index adb7a9e44..000000000
--- a/tests/repo/shallow.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "clar_libgit2.h"
-#include "futils.h"
-
-static git_repository *g_repo;
-
-void test_repo_shallow__initialize(void)
-{
-}
-
-void test_repo_shallow__cleanup(void)
-{
- cl_git_sandbox_cleanup();
-}
-
-void test_repo_shallow__no_shallow_file(void)
-{
- g_repo = cl_git_sandbox_init("testrepo.git");
- cl_assert_equal_i(0, git_repository_is_shallow(g_repo));
-}
-
-void test_repo_shallow__empty_shallow_file(void)
-{
- g_repo = cl_git_sandbox_init("testrepo.git");
- cl_git_mkfile("testrepo.git/shallow", "");
- cl_assert_equal_i(0, git_repository_is_shallow(g_repo));
-}
-
-void test_repo_shallow__shallow_repo(void)
-{
- g_repo = cl_git_sandbox_init("shallow.git");
- cl_assert_equal_i(1, git_repository_is_shallow(g_repo));
-}
-
-void test_repo_shallow__clears_errors(void)
-{
- g_repo = cl_git_sandbox_init("testrepo.git");
- cl_assert_equal_i(0, git_repository_is_shallow(g_repo));
- cl_assert_equal_p(NULL, git_error_last());
-}
diff --git a/tests/resources/grafted.git/HEAD b/tests/resources/grafted.git/HEAD
new file mode 100644
index 000000000..cb089cd89
--- /dev/null
+++ b/tests/resources/grafted.git/HEAD
@@ -0,0 +1 @@
+ref: refs/heads/master
diff --git a/tests/resources/grafted.git/config b/tests/resources/grafted.git/config
new file mode 100644
index 000000000..e6da23157
--- /dev/null
+++ b/tests/resources/grafted.git/config
@@ -0,0 +1,6 @@
+[core]
+ repositoryformatversion = 0
+ filemode = true
+ bare = true
+ ignorecase = true
+ precomposeunicode = true
diff --git a/tests/resources/grafted.git/info/grafts b/tests/resources/grafted.git/info/grafts
new file mode 100644
index 000000000..bb9df8c0a
--- /dev/null
+++ b/tests/resources/grafted.git/info/grafts
@@ -0,0 +1,3 @@
+f503807ffa920e407a600cfaee96b7152259acc7 2f3053cbff8a4ca2f0666de364ddb734a28a31a9
+0512adebd3782157f0d5c9b22b043f87b4aaff9e 2f3053cbff8a4ca2f0666de364ddb734a28a31a9
+66cc22a015f6ca75b34c82d28f78ba663876bade e414f42f4e6bc6934563a2349a8600f0ab68618e 8a00e91619098618be97c0d2ceabb05a2c58edd9 1c18e80a276611bb9b146590616bbc5aebdf2945 2f3053cbff8a4ca2f0666de364ddb734a28a31a9
diff --git a/tests/resources/grafted.git/objects/05/12adebd3782157f0d5c9b22b043f87b4aaff9e b/tests/resources/grafted.git/objects/05/12adebd3782157f0d5c9b22b043f87b4aaff9e
new file mode 100644
index 000000000..16880d596
--- /dev/null
+++ b/tests/resources/grafted.git/objects/05/12adebd3782157f0d5c9b22b043f87b4aaff9e
Binary files differ
diff --git a/tests/resources/grafted.git/objects/1c/18e80a276611bb9b146590616bbc5aebdf2945 b/tests/resources/grafted.git/objects/1c/18e80a276611bb9b146590616bbc5aebdf2945
new file mode 100644
index 000000000..2c057b85d
--- /dev/null
+++ b/tests/resources/grafted.git/objects/1c/18e80a276611bb9b146590616bbc5aebdf2945
Binary files differ
diff --git a/tests/resources/grafted.git/objects/1c/3f11eca55d76bc1bf7353ca7e4226246d353ed b/tests/resources/grafted.git/objects/1c/3f11eca55d76bc1bf7353ca7e4226246d353ed
new file mode 100644
index 000000000..b92a3047f
--- /dev/null
+++ b/tests/resources/grafted.git/objects/1c/3f11eca55d76bc1bf7353ca7e4226246d353ed
Binary files differ
diff --git a/tests/resources/grafted.git/objects/2a/f02ebff1fc0142d2380c98758d81c67b365869 b/tests/resources/grafted.git/objects/2a/f02ebff1fc0142d2380c98758d81c67b365869
new file mode 100644
index 000000000..ed3f874a7
--- /dev/null
+++ b/tests/resources/grafted.git/objects/2a/f02ebff1fc0142d2380c98758d81c67b365869
Binary files differ
diff --git a/tests/resources/grafted.git/objects/2b/ecadd3f1ecad07a054392421edf9c0e1c375b2 b/tests/resources/grafted.git/objects/2b/ecadd3f1ecad07a054392421edf9c0e1c375b2
new file mode 100644
index 000000000..724eedbb2
--- /dev/null
+++ b/tests/resources/grafted.git/objects/2b/ecadd3f1ecad07a054392421edf9c0e1c375b2
Binary files differ
diff --git a/tests/resources/grafted.git/objects/2f/3053cbff8a4ca2f0666de364ddb734a28a31a9 b/tests/resources/grafted.git/objects/2f/3053cbff8a4ca2f0666de364ddb734a28a31a9
new file mode 100644
index 000000000..3d124a673
--- /dev/null
+++ b/tests/resources/grafted.git/objects/2f/3053cbff8a4ca2f0666de364ddb734a28a31a9
Binary files differ
diff --git a/tests/resources/grafted.git/objects/45/342912745ba6f8893b1e126df4653a4355df1a b/tests/resources/grafted.git/objects/45/342912745ba6f8893b1e126df4653a4355df1a
new file mode 100644
index 000000000..4a8c471bd
--- /dev/null
+++ b/tests/resources/grafted.git/objects/45/342912745ba6f8893b1e126df4653a4355df1a
Binary files differ
diff --git a/tests/resources/grafted.git/objects/48/b2b333732644eafb385771a992b923fa88f135 b/tests/resources/grafted.git/objects/48/b2b333732644eafb385771a992b923fa88f135
new file mode 100644
index 000000000..ac640636b
--- /dev/null
+++ b/tests/resources/grafted.git/objects/48/b2b333732644eafb385771a992b923fa88f135
Binary files differ
diff --git a/tests/resources/grafted.git/objects/5d/31bf4b437e1191b6c709c665f1bd329d0ed0bf b/tests/resources/grafted.git/objects/5d/31bf4b437e1191b6c709c665f1bd329d0ed0bf
new file mode 100644
index 000000000..47a05377e
--- /dev/null
+++ b/tests/resources/grafted.git/objects/5d/31bf4b437e1191b6c709c665f1bd329d0ed0bf
Binary files differ
diff --git a/tests/resources/grafted.git/objects/66/cc22a015f6ca75b34c82d28f78ba663876bade b/tests/resources/grafted.git/objects/66/cc22a015f6ca75b34c82d28f78ba663876bade
new file mode 100644
index 000000000..c68b2cd4f
--- /dev/null
+++ b/tests/resources/grafted.git/objects/66/cc22a015f6ca75b34c82d28f78ba663876bade
@@ -0,0 +1,2 @@
+xM
+0F]$Dx=4N4Fϯ#x|260dvmap1 a}NhL!E&}BTO^dn )$~ꖜl,=bF|:W{myrY uN~t/<N]ڡEHkأATi䯈Ho<N>ѫM, \ No newline at end of file
diff --git a/tests/resources/grafted.git/objects/6c/f192eb71cd3243c9fbbe2551012c4449de3fcf b/tests/resources/grafted.git/objects/6c/f192eb71cd3243c9fbbe2551012c4449de3fcf
new file mode 100644
index 000000000..a437f2432
--- /dev/null
+++ b/tests/resources/grafted.git/objects/6c/f192eb71cd3243c9fbbe2551012c4449de3fcf
Binary files differ
diff --git a/tests/resources/grafted.git/objects/7c/9da502b2744b70522bb694cd607fb00104a233 b/tests/resources/grafted.git/objects/7c/9da502b2744b70522bb694cd607fb00104a233
new file mode 100644
index 000000000..b363584fd
--- /dev/null
+++ b/tests/resources/grafted.git/objects/7c/9da502b2744b70522bb694cd607fb00104a233
Binary files differ
diff --git a/tests/resources/grafted.git/objects/8a/00e91619098618be97c0d2ceabb05a2c58edd9 b/tests/resources/grafted.git/objects/8a/00e91619098618be97c0d2ceabb05a2c58edd9
new file mode 100644
index 000000000..887778a60
--- /dev/null
+++ b/tests/resources/grafted.git/objects/8a/00e91619098618be97c0d2ceabb05a2c58edd9
@@ -0,0 +1,2 @@
+xA
+0E]t4Dt <$@J#ч@B5@b$'[ig&V/^6H ]J<AbH,2ȎSne{R˶T8ovשp |d~_u1 RŨߚNC \ No newline at end of file
diff --git a/tests/resources/grafted.git/objects/a0/4de168dd5c43aa2af594d794d62e922f8b3b34 b/tests/resources/grafted.git/objects/a0/4de168dd5c43aa2af594d794d62e922f8b3b34
new file mode 100644
index 000000000..1ed3ed906
--- /dev/null
+++ b/tests/resources/grafted.git/objects/a0/4de168dd5c43aa2af594d794d62e922f8b3b34
Binary files differ
diff --git a/tests/resources/grafted.git/objects/b2/b4f9e5fe5dacbb2f98bd71d1dc86c7b571ddd1 b/tests/resources/grafted.git/objects/b2/b4f9e5fe5dacbb2f98bd71d1dc86c7b571ddd1
new file mode 100644
index 000000000..2adc85721
--- /dev/null
+++ b/tests/resources/grafted.git/objects/b2/b4f9e5fe5dacbb2f98bd71d1dc86c7b571ddd1
Binary files differ
diff --git a/tests/resources/grafted.git/objects/ba/54010f8d41532eb130eba420f50248881f7fc2 b/tests/resources/grafted.git/objects/ba/54010f8d41532eb130eba420f50248881f7fc2
new file mode 100644
index 000000000..52a887274
--- /dev/null
+++ b/tests/resources/grafted.git/objects/ba/54010f8d41532eb130eba420f50248881f7fc2
Binary files differ
diff --git a/tests/resources/grafted.git/objects/d7/224d49d6d5aff6ade596ed74f4bcd4f77b29e2 b/tests/resources/grafted.git/objects/d7/224d49d6d5aff6ade596ed74f4bcd4f77b29e2
new file mode 100644
index 000000000..5b41b6778
--- /dev/null
+++ b/tests/resources/grafted.git/objects/d7/224d49d6d5aff6ade596ed74f4bcd4f77b29e2
@@ -0,0 +1,2 @@
+xA
+0E]dҐDx=$hI_Gp/Ԁ,"%p&/1ތԓƀq֓z"ZMG%6co|Ϝ(^8IJr^kú|e.|mѠuH*lW%Q%Y ZڧbUoaRj \ No newline at end of file
diff --git a/tests/resources/grafted.git/objects/db/8e43f297a313c439530c977b733aaa8c10d54e b/tests/resources/grafted.git/objects/db/8e43f297a313c439530c977b733aaa8c10d54e
new file mode 100644
index 000000000..b9cf5947b
--- /dev/null
+++ b/tests/resources/grafted.git/objects/db/8e43f297a313c439530c977b733aaa8c10d54e
Binary files differ
diff --git a/tests/resources/grafted.git/objects/e4/14f42f4e6bc6934563a2349a8600f0ab68618e b/tests/resources/grafted.git/objects/e4/14f42f4e6bc6934563a2349a8600f0ab68618e
new file mode 100644
index 000000000..1a14959c4
--- /dev/null
+++ b/tests/resources/grafted.git/objects/e4/14f42f4e6bc6934563a2349a8600f0ab68618e
Binary files differ
diff --git a/tests/resources/grafted.git/objects/e6/7b587a57850c69f6f9351ee10c7c8a41dacc78 b/tests/resources/grafted.git/objects/e6/7b587a57850c69f6f9351ee10c7c8a41dacc78
new file mode 100644
index 000000000..213f9ac22
--- /dev/null
+++ b/tests/resources/grafted.git/objects/e6/7b587a57850c69f6f9351ee10c7c8a41dacc78
Binary files differ
diff --git a/tests/resources/grafted.git/objects/f0/7330bc2e4ed4bd0bf2301505f6c6bbad01aa2a b/tests/resources/grafted.git/objects/f0/7330bc2e4ed4bd0bf2301505f6c6bbad01aa2a
new file mode 100644
index 000000000..f2d648892
--- /dev/null
+++ b/tests/resources/grafted.git/objects/f0/7330bc2e4ed4bd0bf2301505f6c6bbad01aa2a
Binary files differ
diff --git a/tests/resources/grafted.git/objects/f5/03807ffa920e407a600cfaee96b7152259acc7 b/tests/resources/grafted.git/objects/f5/03807ffa920e407a600cfaee96b7152259acc7
new file mode 100644
index 000000000..21436c177
--- /dev/null
+++ b/tests/resources/grafted.git/objects/f5/03807ffa920e407a600cfaee96b7152259acc7
@@ -0,0 +1,2 @@
+xA
+0E]J&6) @@#xZ)z{D/ɋMb9P&yyBF&7헙Qw =KPV;Oߖ:P+3Ə6Z+:Qw\Hy>zA \ No newline at end of file
diff --git a/tests/resources/grafted.git/refs/heads/bottom b/tests/resources/grafted.git/refs/heads/bottom
new file mode 100644
index 000000000..10513e698
--- /dev/null
+++ b/tests/resources/grafted.git/refs/heads/bottom
@@ -0,0 +1 @@
+66cc22a015f6ca75b34c82d28f78ba663876bade
diff --git a/tests/resources/grafted.git/refs/heads/branch b/tests/resources/grafted.git/refs/heads/branch
new file mode 100644
index 000000000..d0fe5c283
--- /dev/null
+++ b/tests/resources/grafted.git/refs/heads/branch
@@ -0,0 +1 @@
+8a00e91619098618be97c0d2ceabb05a2c58edd9
diff --git a/tests/resources/grafted.git/refs/heads/master b/tests/resources/grafted.git/refs/heads/master
new file mode 100644
index 000000000..de809b942
--- /dev/null
+++ b/tests/resources/grafted.git/refs/heads/master
@@ -0,0 +1 @@
+2f3053cbff8a4ca2f0666de364ddb734a28a31a9
diff --git a/tests/resources/grafted.git/refs/heads/top b/tests/resources/grafted.git/refs/heads/top
new file mode 100644
index 000000000..ce226110b
--- /dev/null
+++ b/tests/resources/grafted.git/refs/heads/top
@@ -0,0 +1 @@
+1c18e80a276611bb9b146590616bbc5aebdf2945