]> git.proxmox.com Git - libgit2.git/blob - tests/revert/rename.c
0d713c60fa01c0ff4ee06d0811961f10efa3c0ac
[libgit2.git] / tests / revert / rename.c
1 #include "clar.h"
2 #include "clar_libgit2.h"
3
4 #include "git2/revert.h"
5 #include "../merge/merge_helpers.h"
6
7 #define TEST_REPO_PATH "revert-rename.git"
8
9 static git_repository *repo;
10
11 /* Fixture setup and teardown */
12 void test_revert_rename__initialize(void)
13 {
14 repo = cl_git_sandbox_init(TEST_REPO_PATH);
15 }
16
17 void test_revert_rename__cleanup(void)
18 {
19 cl_git_sandbox_cleanup();
20 }
21
22 /* Attempt a revert when there is a file rename AND change of file mode,
23 * but the file contents remain the same. Check that the file mode doesn't
24 * change following the revert.
25 */
26 void test_revert_rename__automerge(void)
27 {
28 git_commit *head_commit, *revert_commit;
29 git_oid revert_oid;
30 git_index *index;
31 git_reference *head_ref;
32
33 struct merge_index_entry merge_index_entries[] = {
34 { 0100644, "f0f64c618e1646d2948a456ed7c4bcfad5536d68", 0, "goodmode" }};
35
36 cl_git_pass(git_repository_head(&head_ref, repo));
37 cl_git_pass(git_reference_peel((git_object **)&head_commit, head_ref, GIT_OBJECT_COMMIT));
38
39 cl_git_pass(git_oid_fromstr(&revert_oid, "7b4d7c3789b3581973c04087cb774c3c3576de2f"));
40 cl_git_pass(git_commit_lookup(&revert_commit, repo, &revert_oid));
41
42 cl_git_pass(git_revert_commit(&index, repo, revert_commit, head_commit, 0, NULL));
43 cl_assert(merge_test_index(index, merge_index_entries, 1));
44
45 git_commit_free(revert_commit);
46 git_commit_free(head_commit);
47 git_index_free(index);
48 git_reference_free(head_ref);
49 }