diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2014-06-06 22:01:35 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2014-06-06 22:36:41 +0200 |
commit | eb6aa791a7c1a311b556398acce69cde3d43e3cd (patch) | |
tree | 46bdab437612c30cef273a563abb23a5ab00ea80 | |
parent | 72bca13e5d0d421da7992f029e275d950c864105 (diff) | |
download | libgit2-eb6aa791a7c1a311b556398acce69cde3d43e3cd.tar.gz |
remote: failing test for renaming with a symref
-rw-r--r-- | tests/network/remote/rename.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/network/remote/rename.c b/tests/network/remote/rename.c index 48a33038a..1b819a445 100644 --- a/tests/network/remote/rename.c +++ b/tests/network/remote/rename.c @@ -218,3 +218,51 @@ void test_network_remote_rename__overwrite_ref_in_target(void) cl_git_fail_with(GIT_ITEROVER, git_branch_next(&ref, &btype, iter)); git_branch_iterator_free(iter); } + +void test_network_remote_rename__symref_head(void) +{ + int error; + git_remote *remote; + git_reference *ref; + git_branch_t btype; + git_branch_iterator *iter; + git_strarray problems = {0}; + char idstr[GIT_OID_HEXSZ + 1] = {0}; + git_vector refs; + + cl_git_pass(git_reference_symbolic_create(&ref, _repo, "refs/remotes/test/HEAD", "refs/remotes/test/master", 0, NULL, NULL)); + git_reference_free(ref); + + cl_git_pass(git_remote_load(&remote, _repo, "test")); + cl_git_pass(git_remote_rename(&problems, remote, "renamed")); + git_remote_free(remote); + cl_assert_equal_i(0, problems.count); + git_strarray_free(&problems); + + cl_git_pass(git_vector_init(&refs, 2, (git_vector_cmp) git_reference_cmp)); + cl_git_pass(git_branch_iterator_new(&iter, _repo, GIT_BRANCH_REMOTE)); + + while ((error = git_branch_next(&ref, &btype, iter)) == 0) { + cl_git_pass(git_vector_insert(&refs, ref)); + } + cl_assert_equal_i(GIT_ITEROVER, error); + git_vector_sort(&refs); + + cl_assert_equal_i(2, refs.length); + + ref = git_vector_get(&refs, 0); + cl_assert_equal_s("refs/remotes/renamed/HEAD", git_reference_name(ref)); + cl_assert_equal_s("refs/remotes/renamed/master", git_reference_symbolic_target(ref)); + git_reference_free(ref); + + ref = git_vector_get(&refs, 1); + cl_assert_equal_s("refs/remotes/renamed/master", git_reference_name(ref)); + git_oid_fmt(idstr, git_reference_target(ref)); + cl_assert_equal_s("be3563ae3f795b2b4353bcce3a527ad0a4f7f644", idstr); + git_reference_free(ref); + + git_vector_free(&refs); + + cl_git_fail_with(GIT_ITEROVER, git_branch_next(&ref, &btype, iter)); + git_branch_iterator_free(iter); +} |