diff options
| author | Edward Thomson <ethomson@microsoft.com> | 2013-07-22 08:51:29 -0700 |
|---|---|---|
| committer | Edward Thomson <ethomson@microsoft.com> | 2013-10-16 16:20:08 -0400 |
| commit | 4f7897ab19daf6593b35c7f5b4f35403d00530ef (patch) | |
| tree | fcb0dee5870ec8fca8e256d11275ccef918142a2 /tests-clar/checkout/tree.c | |
| parent | 629b661caab321a3aa5ffd7274ea4ed441d2805e (diff) | |
| download | libgit2-4f7897ab19daf6593b35c7f5b4f35403d00530ef.tar.gz | |
Prevent checkout_tree when conflicts exist, clear NAME on checkout tree
Prevent checkout tree when unresolved changes exist (unless FORCE flag
is specified). Clear NAME table when checking out, to avoid
checkout_conflicts from attempting to manipulate it. Ensure that NAME
is also cleared at reset.
Diffstat (limited to 'tests-clar/checkout/tree.c')
| -rw-r--r-- | tests-clar/checkout/tree.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests-clar/checkout/tree.c b/tests-clar/checkout/tree.c index fff530cdd..66b01bc7f 100644 --- a/tests-clar/checkout/tree.c +++ b/tests-clar/checkout/tree.c @@ -696,3 +696,47 @@ void test_checkout_tree__extremely_long_file_name(void) cl_git_pass(git_checkout_tree(g_repo, g_object, &g_opts)); cl_assert(!git_path_exists(path)); } + +static void create_conflict(void) +{ + git_index *index; + git_index_entry entry; + + cl_git_pass(git_repository_index(&index, g_repo)); + + memset(&entry, 0x0, sizeof(git_index_entry)); + entry.mode = 0100644; + entry.flags = 1 << GIT_IDXENTRY_STAGESHIFT; + git_oid_fromstr(&entry.oid, "d427e0b2e138501a3d15cc376077a3631e15bd46"); + entry.path = "conflicts.txt"; + cl_git_pass(git_index_add(index, &entry)); + + entry.flags = 2 << GIT_IDXENTRY_STAGESHIFT; + git_oid_fromstr(&entry.oid, "ee3fa1b8c00aff7fe02065fdb50864bb0d932ccf"); + cl_git_pass(git_index_add(index, &entry)); + + entry.flags = 3 << GIT_IDXENTRY_STAGESHIFT; + git_oid_fromstr(&entry.oid, "2bd0a343aeef7a2cf0d158478966a6e587ff3863"); + cl_git_pass(git_index_add(index, &entry)); + + git_index_write(index); + git_index_free(index); +} + +void test_checkout_tree__fails_when_conflicts_exist_in_index(void) +{ + git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT; + git_oid oid; + git_object *obj = NULL; + + opts.checkout_strategy = GIT_CHECKOUT_SAFE; + + cl_git_pass(git_reference_name_to_id(&oid, g_repo, "HEAD")); + cl_git_pass(git_object_lookup(&obj, g_repo, &oid, GIT_OBJ_ANY)); + + create_conflict(); + + cl_git_fail(git_checkout_tree(g_repo, obj, &opts)); + + git_object_free(obj); +} |
