diff options
author | nulltoken <emeric.fermas@gmail.com> | 2013-02-15 11:35:33 +0100 |
---|---|---|
committer | nulltoken <emeric.fermas@gmail.com> | 2013-02-22 17:04:23 +0100 |
commit | c1b5e8c42bca585c2bc728a0583b20095bd8c128 (patch) | |
tree | b70cce66af1d9834bb37515a3e01167f1ab5a588 /tests-clar | |
parent | 0309e85045bfb143c172b3342293d98d687e8092 (diff) | |
download | libgit2-c1b5e8c42bca585c2bc728a0583b20095bd8c128.tar.gz |
branch: Make git_branch_remote_name() cope with orphaned heads
Diffstat (limited to 'tests-clar')
-rw-r--r-- | tests-clar/clone/empty.c | 20 | ||||
-rw-r--r-- | tests-clar/refs/branches/remote.c | 14 |
2 files changed, 24 insertions, 10 deletions
diff --git a/tests-clar/clone/empty.c b/tests-clar/clone/empty.c index e611bc24e..0f867257a 100644 --- a/tests-clar/clone/empty.c +++ b/tests-clar/clone/empty.c @@ -34,7 +34,9 @@ static void cleanup_repository(void *path) void test_clone_empty__can_clone_an_empty_local_repo_barely(void) { char *local_name = "refs/heads/master"; - char tracking_name[1024]; + const char *expected_tracked_branch_name = "refs/remotes/origin/master"; + const char *expected_remote_name = "origin"; + char buffer[1024]; git_reference *ref; cl_set_cleanup(&cleanup_repository, "./empty"); @@ -46,8 +48,20 @@ void test_clone_empty__can_clone_an_empty_local_repo_barely(void) cl_assert_equal_i(GIT_ENOTFOUND, git_reference_lookup(&ref, g_repo_cloned, local_name)); /* ...one can still retrieve the name of the remote tracking reference */ - cl_assert_equal_i((int)strlen("refs/remotes/origin/master") + 1U, - git_branch_tracking_name(tracking_name, 1024, g_repo_cloned, local_name)); + cl_assert_equal_i((int)strlen(expected_tracked_branch_name) + 1, + git_branch_tracking_name(buffer, 1024, g_repo_cloned, local_name)); + + cl_assert_equal_s(expected_tracked_branch_name, buffer); + + /* ...and the name of the remote... */ + cl_assert_equal_i((int)strlen(expected_remote_name) + 1, + git_branch_remote_name(buffer, 1024, g_repo_cloned, expected_tracked_branch_name)); + + cl_assert_equal_s(expected_remote_name, buffer); + + /* ...even when the remote HEAD is orphaned as well */ + cl_assert_equal_i(GIT_ENOTFOUND, git_reference_lookup(&ref, g_repo_cloned, + expected_tracked_branch_name)); } void test_clone_empty__can_clone_an_empty_local_repo(void) diff --git a/tests-clar/refs/branches/remote.c b/tests-clar/refs/branches/remote.c index be355af46..586526161 100644 --- a/tests-clar/refs/branches/remote.c +++ b/tests-clar/refs/branches/remote.c @@ -35,9 +35,9 @@ void test_refs_branches_remote__can_get_remote_for_branch(void) cl_assert_equal_s("test/master", name); cl_assert_equal_i(expectedRemoteNameLength, - git_branch_remote_name(NULL, 0, g_repo, ref)); + git_branch_remote_name(NULL, 0, g_repo, git_reference_name(ref))); cl_assert_equal_i(expectedRemoteNameLength, - git_branch_remote_name(remotename, expectedRemoteNameLength, g_repo, ref)); + git_branch_remote_name(remotename, expectedRemoteNameLength, g_repo, git_reference_name(ref))); cl_assert_equal_s("test", remotename); git_reference_free(ref); @@ -56,9 +56,9 @@ void test_refs_branches_remote__insufficient_buffer_returns_error(void) cl_assert_equal_s("test/master", name); cl_assert_equal_i(expectedRemoteNameLength, - git_branch_remote_name(NULL, 0, g_repo, ref)); + git_branch_remote_name(NULL, 0, g_repo, git_reference_name(ref))); cl_git_fail_with(GIT_ERROR, - git_branch_remote_name(remotename, expectedRemoteNameLength - 1, g_repo, ref)); + git_branch_remote_name(remotename, expectedRemoteNameLength - 1, g_repo, git_reference_name(ref))); git_reference_free(ref); } @@ -78,7 +78,7 @@ void test_refs_branches_remote__no_matching_remote_returns_error(void) cl_git_pass(git_branch_name(&name, ref)); cl_assert_equal_s("nonexistent/master", name); - cl_git_fail_with(git_branch_remote_name(NULL, 0, g_repo, ref), GIT_ENOTFOUND); + cl_git_fail_with(git_branch_remote_name(NULL, 0, g_repo, git_reference_name(ref)), GIT_ENOTFOUND); git_reference_free(ref); } @@ -91,7 +91,7 @@ void test_refs_branches_remote__local_remote_returns_error(void) cl_git_pass(git_branch_name(&name, ref)); cl_assert_equal_s("master",name); - cl_git_fail_with(git_branch_remote_name(NULL, 0, g_repo, ref), GIT_ERROR); + cl_git_fail_with(git_branch_remote_name(NULL, 0, g_repo, git_reference_name(ref)), GIT_ERROR); git_reference_free(ref); } @@ -114,6 +114,6 @@ void test_refs_branches_remote__ambiguous_remote_returns_error(void) cl_git_pass(git_branch_name(&name, ref)); cl_assert_equal_s("test/master", name); - cl_git_fail_with(git_branch_remote_name(NULL, 0, g_repo, ref), GIT_EAMBIGUOUS); + cl_git_fail_with(git_branch_remote_name(NULL, 0, g_repo, git_reference_name(ref)), GIT_EAMBIGUOUS); git_reference_free(ref); } |