diff options
author | nulltoken <emeric.fermas@gmail.com> | 2012-09-15 22:03:31 +0200 |
---|---|---|
committer | nulltoken <emeric.fermas@gmail.com> | 2012-09-17 10:48:34 +0200 |
commit | 3f4c3072ea36877c07380d096d6277e9777f4587 (patch) | |
tree | c7ecadd96c222b17963d3524f54cff73270877eb /tests-clar/repo/head.c | |
parent | cc548c7b0ff0d8b33a44d90316abe0027cb6c7d9 (diff) | |
download | libgit2-3f4c3072ea36877c07380d096d6277e9777f4587.tar.gz |
repository: introduce git_repository_detach_head()
Diffstat (limited to 'tests-clar/repo/head.c')
-rw-r--r-- | tests-clar/repo/head.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests-clar/repo/head.c b/tests-clar/repo/head.c index eb1332aff..74d2a1c88 100644 --- a/tests-clar/repo/head.c +++ b/tests-clar/repo/head.c @@ -50,3 +50,38 @@ void test_repo_head__head_orphan(void) git_reference_free(ref); } + +static void assert_head_is_correctly_detached(void) +{ + git_reference *head; + git_object *commit; + + cl_assert_equal_i(true, git_repository_head_detached(repo)); + + cl_git_pass(git_repository_head(&head, repo)); + + cl_git_pass(git_object_lookup(&commit, repo, git_reference_oid(head), GIT_OBJ_COMMIT)); + + git_object_free(commit); + git_reference_free(head); +} + +void test_repo_head__detach_head_Detaches_HEAD_and_make_it_point_to_the_peeled_commit(void) +{ + cl_assert_equal_i(false, git_repository_head_detached(repo)); + + cl_git_pass(git_repository_detach_head(repo)); + + assert_head_is_correctly_detached(); +} + +void test_repo_head__detach_head_Fails_if_HEAD_and_point_to_a_non_commitish(void) +{ + git_reference *head; + + cl_git_pass(git_reference_create_symbolic(&head, repo, GIT_HEAD_FILE, "refs/tags/point_to_blob", 1)); + + cl_git_fail(git_repository_detach_head(repo)); + + git_reference_free(head); +} |