diff options
Diffstat (limited to 'tests-clar/refs/rename.c')
-rw-r--r-- | tests-clar/refs/rename.c | 87 |
1 files changed, 49 insertions, 38 deletions
diff --git a/tests-clar/refs/rename.c b/tests-clar/refs/rename.c index 5c1e8a798..e39abeb05 100644 --- a/tests-clar/refs/rename.c +++ b/tests-clar/refs/rename.c @@ -3,6 +3,7 @@ #include "repository.h" #include "git2/reflog.h" #include "reflog.h" +#include "ref_helpers.h" static const char *loose_tag_ref_name = "refs/tags/e90810b"; static const char *packed_head_name = "refs/heads/packed"; @@ -32,7 +33,7 @@ void test_refs_rename__cleanup(void) void test_refs_rename__loose(void) { // rename a loose reference - git_reference *looked_up_ref, *another_looked_up_ref; + git_reference *looked_up_ref, *new_ref, *another_looked_up_ref; git_buf temp_path = GIT_BUF_INIT; const char *new_name = "refs/tags/Nemo/knows/refs.kung-fu"; @@ -44,28 +45,29 @@ void test_refs_rename__loose(void) cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, loose_tag_ref_name)); /* ... which is indeed loose */ - cl_assert(git_reference_is_packed(looked_up_ref) == 0); + cl_assert(reference_is_packed(looked_up_ref) == 0); /* Now that the reference is renamed... */ - cl_git_pass(git_reference_rename(looked_up_ref, new_name, 0)); - cl_assert_equal_s(looked_up_ref->name, new_name); + cl_git_pass(git_reference_rename(&new_ref, looked_up_ref, new_name, 0)); + cl_assert_equal_s(new_ref->name, new_name); + git_reference_free(looked_up_ref); /* ...It can't be looked-up with the old name... */ cl_git_fail(git_reference_lookup(&another_looked_up_ref, g_repo, loose_tag_ref_name)); /* ...but the new name works ok... */ cl_git_pass(git_reference_lookup(&another_looked_up_ref, g_repo, new_name)); - cl_assert_equal_s(another_looked_up_ref->name, new_name); + cl_assert_equal_s(new_ref->name, new_name); - /* .. the ref is still loose... */ - cl_assert(git_reference_is_packed(another_looked_up_ref) == 0); - cl_assert(git_reference_is_packed(looked_up_ref) == 0); + /* .. the new ref is loose... */ + cl_assert(reference_is_packed(another_looked_up_ref) == 0); + cl_assert(reference_is_packed(new_ref) == 0); /* ...and the ref can be found in the file system */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, new_name)); cl_assert(git_path_exists(temp_path.ptr)); - git_reference_free(looked_up_ref); + git_reference_free(new_ref); git_reference_free(another_looked_up_ref); git_buf_free(&temp_path); } @@ -73,7 +75,7 @@ void test_refs_rename__loose(void) void test_refs_rename__packed(void) { // rename a packed reference (should make it loose) - git_reference *looked_up_ref, *another_looked_up_ref; + git_reference *looked_up_ref, *new_ref, *another_looked_up_ref; git_buf temp_path = GIT_BUF_INIT; const char *brand_new_name = "refs/heads/brand_new_name"; @@ -85,11 +87,12 @@ void test_refs_rename__packed(void) cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_head_name)); /* .. and it's packed */ - cl_assert(git_reference_is_packed(looked_up_ref) != 0); + cl_assert(reference_is_packed(looked_up_ref) != 0); /* Now that the reference is renamed... */ - cl_git_pass(git_reference_rename(looked_up_ref, brand_new_name, 0)); - cl_assert_equal_s(looked_up_ref->name, brand_new_name); + cl_git_pass(git_reference_rename(&new_ref, looked_up_ref, brand_new_name, 0)); + cl_assert_equal_s(new_ref->name, brand_new_name); + git_reference_free(looked_up_ref); /* ...It can't be looked-up with the old name... */ cl_git_fail(git_reference_lookup(&another_looked_up_ref, g_repo, packed_head_name)); @@ -99,14 +102,14 @@ void test_refs_rename__packed(void) cl_assert_equal_s(another_looked_up_ref->name, brand_new_name); /* .. the ref is no longer packed... */ - cl_assert(git_reference_is_packed(another_looked_up_ref) == 0); - cl_assert(git_reference_is_packed(looked_up_ref) == 0); + cl_assert(reference_is_packed(another_looked_up_ref) == 0); + cl_assert(reference_is_packed(new_ref) == 0); /* ...and the ref now happily lives in the file system */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, brand_new_name)); cl_assert(git_path_exists(temp_path.ptr)); - git_reference_free(looked_up_ref); + git_reference_free(new_ref); git_reference_free(another_looked_up_ref); git_buf_free(&temp_path); } @@ -114,7 +117,7 @@ void test_refs_rename__packed(void) void test_refs_rename__packed_doesnt_pack_others(void) { // renaming a packed reference does not pack another reference which happens to be in both loose and pack state - git_reference *looked_up_ref, *another_looked_up_ref; + git_reference *looked_up_ref, *another_looked_up_ref, *renamed_ref; git_buf temp_path = GIT_BUF_INIT; const char *brand_new_name = "refs/heads/brand_new_name"; @@ -126,28 +129,29 @@ void test_refs_rename__packed_doesnt_pack_others(void) cl_git_pass(git_reference_lookup(&another_looked_up_ref, g_repo, packed_test_head_name)); /* Ensure it's loose */ - cl_assert(git_reference_is_packed(another_looked_up_ref) == 0); + cl_assert(reference_is_packed(another_looked_up_ref) == 0); git_reference_free(another_looked_up_ref); /* Lookup the reference to rename */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_head_name)); /* Ensure it's packed */ - cl_assert(git_reference_is_packed(looked_up_ref) != 0); + cl_assert(reference_is_packed(looked_up_ref) != 0); /* Now that the reference is renamed... */ - cl_git_pass(git_reference_rename(looked_up_ref, brand_new_name, 0)); + cl_git_pass(git_reference_rename(&renamed_ref, looked_up_ref, brand_new_name, 0)); + git_reference_free(looked_up_ref); /* Lookup the other reference */ cl_git_pass(git_reference_lookup(&another_looked_up_ref, g_repo, packed_test_head_name)); /* Ensure it's loose */ - cl_assert(git_reference_is_packed(another_looked_up_ref) == 0); + cl_assert(reference_is_packed(another_looked_up_ref) == 0); /* Ensure the other ref still exists on the file system */ cl_assert(git_path_exists(temp_path.ptr)); - git_reference_free(looked_up_ref); + git_reference_free(renamed_ref); git_reference_free(another_looked_up_ref); git_buf_free(&temp_path); } @@ -155,13 +159,13 @@ void test_refs_rename__packed_doesnt_pack_others(void) void test_refs_rename__name_collision(void) { // can not rename a reference with the name of an existing reference - git_reference *looked_up_ref; + git_reference *looked_up_ref, *renamed_ref; /* An existing reference... */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_head_name)); /* Can not be renamed to the name of another existing reference. */ - cl_git_fail(git_reference_rename(looked_up_ref, packed_test_head_name, 0)); + cl_git_fail(git_reference_rename(&renamed_ref, looked_up_ref, packed_test_head_name, 0)); git_reference_free(looked_up_ref); /* Failure to rename it hasn't corrupted its state */ @@ -174,7 +178,7 @@ void test_refs_rename__name_collision(void) void test_refs_rename__invalid_name(void) { // can not rename a reference with an invalid name - git_reference *looked_up_ref; + git_reference *looked_up_ref, *renamed_ref; /* An existing oid reference... */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_test_head_name)); @@ -182,12 +186,12 @@ void test_refs_rename__invalid_name(void) /* Can not be renamed with an invalid name. */ cl_assert_equal_i( GIT_EINVALIDSPEC, - git_reference_rename(looked_up_ref, "Hello! I'm a very invalid name.", 0)); + git_reference_rename(&renamed_ref, looked_up_ref, "Hello! I'm a very invalid name.", 0)); /* Can not be renamed outside of the refs hierarchy * unless it's ALL_CAPS_AND_UNDERSCORES. */ - cl_assert_equal_i(GIT_EINVALIDSPEC, git_reference_rename(looked_up_ref, "i-will-sudo-you", 0)); + cl_assert_equal_i(GIT_EINVALIDSPEC, git_reference_rename(&renamed_ref, looked_up_ref, "i-will-sudo-you", 0)); /* Failure to rename it hasn't corrupted its state */ git_reference_free(looked_up_ref); @@ -200,7 +204,7 @@ void test_refs_rename__invalid_name(void) void test_refs_rename__force_loose_packed(void) { // can force-rename a packed reference with the name of an existing loose and packed reference - git_reference *looked_up_ref; + git_reference *looked_up_ref, *renamed_ref; git_oid oid; /* An existing reference... */ @@ -208,8 +212,9 @@ void test_refs_rename__force_loose_packed(void) git_oid_cpy(&oid, git_reference_target(looked_up_ref)); /* Can be force-renamed to the name of another existing reference. */ - cl_git_pass(git_reference_rename(looked_up_ref, packed_test_head_name, 1)); + cl_git_pass(git_reference_rename(&renamed_ref, looked_up_ref, packed_test_head_name, 1)); git_reference_free(looked_up_ref); + git_reference_free(renamed_ref); /* Check we actually renamed it */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_test_head_name)); @@ -224,7 +229,7 @@ void test_refs_rename__force_loose_packed(void) void test_refs_rename__force_loose(void) { // can force-rename a loose reference with the name of an existing loose reference - git_reference *looked_up_ref; + git_reference *looked_up_ref, *renamed_ref; git_oid oid; /* An existing reference... */ @@ -232,8 +237,9 @@ void test_refs_rename__force_loose(void) git_oid_cpy(&oid, git_reference_target(looked_up_ref)); /* Can be force-renamed to the name of another existing reference. */ - cl_git_pass(git_reference_rename(looked_up_ref, "refs/heads/test", 1)); + cl_git_pass(git_reference_rename(&renamed_ref, looked_up_ref, "refs/heads/test", 1)); git_reference_free(looked_up_ref); + git_reference_free(renamed_ref); /* Check we actually renamed it */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, "refs/heads/test")); @@ -252,6 +258,7 @@ void test_refs_rename__overwrite(void) { // can not overwrite name of existing reference git_reference *ref, *ref_one, *ref_one_new, *ref_two; + git_refdb *refdb; git_oid id; cl_git_pass(git_reference_lookup(&ref, g_repo, ref_master_name)); @@ -264,7 +271,8 @@ void test_refs_rename__overwrite(void) cl_git_pass(git_reference_create(&ref_two, g_repo, ref_two_name, &id, 0)); /* Pack everything */ - cl_git_pass(git_reference_packall(g_repo)); + cl_git_pass(git_repository_refdb(&refdb, g_repo)); + cl_git_pass(git_refdb_compress(refdb)); /* Attempt to create illegal reference */ cl_git_fail(git_reference_create(&ref_one_new, g_repo, ref_one_name_new, &id, 0)); @@ -282,7 +290,7 @@ void test_refs_rename__overwrite(void) void test_refs_rename__prefix(void) { // can be renamed to a new name prefixed with the old name - git_reference *ref, *ref_two, *looked_up_ref; + git_reference *ref, *ref_two, *looked_up_ref, *renamed_ref; git_oid id; cl_git_pass(git_reference_lookup(&ref, g_repo, ref_master_name)); @@ -297,8 +305,9 @@ void test_refs_rename__prefix(void) cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name)); /* Can be rename to a new name starting with the old name. */ - cl_git_pass(git_reference_rename(looked_up_ref, ref_two_name_new, 0)); + cl_git_pass(git_reference_rename(&renamed_ref, looked_up_ref, ref_two_name_new, 0)); git_reference_free(looked_up_ref); + git_reference_free(renamed_ref); /* Check we actually renamed it */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name_new)); @@ -314,7 +323,7 @@ void test_refs_rename__prefix(void) void test_refs_rename__move_up(void) { // can move a reference to a upper reference hierarchy - git_reference *ref, *ref_two, *looked_up_ref; + git_reference *ref, *ref_two, *looked_up_ref, *renamed_ref; git_oid id; cl_git_pass(git_reference_lookup(&ref, g_repo, ref_master_name)); @@ -330,13 +339,15 @@ void test_refs_rename__move_up(void) cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name_new)); /* Can be renamed upward the reference tree. */ - cl_git_pass(git_reference_rename(looked_up_ref, ref_two_name, 0)); + cl_git_pass(git_reference_rename(&renamed_ref, looked_up_ref, ref_two_name, 0)); git_reference_free(looked_up_ref); + git_reference_free(renamed_ref); /* Check we actually renamed it */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name)); cl_assert_equal_s(looked_up_ref->name, ref_two_name); git_reference_free(looked_up_ref); + cl_git_fail(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name_new)); git_reference_free(ref); git_reference_free(looked_up_ref); @@ -344,11 +355,11 @@ void test_refs_rename__move_up(void) void test_refs_rename__propagate_eexists(void) { - git_reference *ref; + git_reference *ref, *new_ref; cl_git_pass(git_reference_lookup(&ref, g_repo, packed_head_name)); - cl_assert_equal_i(GIT_EEXISTS, git_reference_rename(ref, packed_test_head_name, 0)); + cl_assert_equal_i(GIT_EEXISTS, git_reference_rename(&new_ref, ref, packed_test_head_name, 0)); git_reference_free(ref); } |