Skip to content

Commit

Permalink
REUC needs to handle empty sides
Browse files Browse the repository at this point in the history
  • Loading branch information
ethomson committed Jan 10, 2013
1 parent a22ad9f commit eb3c247
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/index.c
Original file line number Diff line number Diff line change
Expand Up @@ -616,14 +616,14 @@ static int index_entry_reuc_init(git_index_reuc_entry **reuc_out,
if (reuc->path == NULL)
return -1;

reuc->mode[0] = ancestor_mode;
git_oid_cpy(&reuc->oid[0], ancestor_oid);
if ((reuc->mode[0] = ancestor_mode) > 0)
git_oid_cpy(&reuc->oid[0], ancestor_oid);

reuc->mode[1] = our_mode;
git_oid_cpy(&reuc->oid[1], our_oid);
if ((reuc->mode[1] = our_mode) > 0)
git_oid_cpy(&reuc->oid[1], our_oid);

reuc->mode[2] = their_mode;
git_oid_cpy(&reuc->oid[2], their_oid);
if ((reuc->mode[2] = their_mode) > 0)
git_oid_cpy(&reuc->oid[2], their_oid);

*reuc_out = reuc;
return 0;
Expand Down
50 changes: 50 additions & 0 deletions tests-clar/index/reuc.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,56 @@ void test_index_reuc__cleanup(void)
cl_git_sandbox_cleanup();
}

void test_index_reuc__add(void)
{
git_oid ancestor_oid, our_oid, their_oid;
const git_index_reuc_entry *reuc;

git_oid_fromstr(&ancestor_oid, ONE_ANCESTOR_OID);
git_oid_fromstr(&our_oid, ONE_OUR_OID);
git_oid_fromstr(&their_oid, ONE_THEIR_OID);

cl_git_pass(git_index_reuc_add(repo_index, "newfile.txt",
0100644, &ancestor_oid,
0100644, &our_oid,
0100644, &their_oid));

cl_assert(reuc = git_index_reuc_get_bypath(repo_index, "newfile.txt"));

cl_assert(strcmp(reuc->path, "newfile.txt") == 0);
cl_assert(reuc->mode[0] == 0100644);
cl_assert(reuc->mode[1] == 0100644);
cl_assert(reuc->mode[2] == 0100644);
cl_assert(git_oid_cmp(&reuc->oid[0], &ancestor_oid) == 0);
cl_assert(git_oid_cmp(&reuc->oid[1], &our_oid) == 0);
cl_assert(git_oid_cmp(&reuc->oid[2], &their_oid) == 0);
}

void test_index_reuc__add_no_ancestor(void)
{
git_oid ancestor_oid, our_oid, their_oid;
const git_index_reuc_entry *reuc;

memset(&ancestor_oid, 0x0, sizeof(git_oid));
git_oid_fromstr(&our_oid, ONE_OUR_OID);
git_oid_fromstr(&their_oid, ONE_THEIR_OID);

cl_git_pass(git_index_reuc_add(repo_index, "newfile.txt",
0, NULL,
0100644, &our_oid,
0100644, &their_oid));

cl_assert(reuc = git_index_reuc_get_bypath(repo_index, "newfile.txt"));

cl_assert(strcmp(reuc->path, "newfile.txt") == 0);
cl_assert(reuc->mode[0] == 0);
cl_assert(reuc->mode[1] == 0100644);
cl_assert(reuc->mode[2] == 0100644);
cl_assert(git_oid_cmp(&reuc->oid[0], &ancestor_oid) == 0);
cl_assert(git_oid_cmp(&reuc->oid[1], &our_oid) == 0);
cl_assert(git_oid_cmp(&reuc->oid[2], &their_oid) == 0);
}

void test_index_reuc__read_bypath(void)
{
const git_index_reuc_entry *reuc;
Expand Down

0 comments on commit eb3c247

Please sign in to comment.