summaryrefslogtreecommitdiff
path: root/tests/merge/workdir/simple.c
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2014-01-19 22:36:50 -0800
committerEdward Thomson <ethomson@microsoft.com>2014-01-20 17:15:15 -0500
commitdb3462ce7714e2a6ce23130a7046a77860739e05 (patch)
tree73559dd90861c5bbb2ea81ad6be9da9d3756dba6 /tests/merge/workdir/simple.c
parent0e1ba46cfbca0eec00d8af713fc2059158685381 (diff)
downloadlibgit2-db3462ce7714e2a6ce23130a7046a77860739e05.tar.gz
Support union merges
Diffstat (limited to 'tests/merge/workdir/simple.c')
-rw-r--r--tests/merge/workdir/simple.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/merge/workdir/simple.c b/tests/merge/workdir/simple.c
index 757e20c6c..6b152cc4d 100644
--- a/tests/merge/workdir/simple.c
+++ b/tests/merge/workdir/simple.c
@@ -109,6 +109,10 @@ static git_index *repo_index;
"this file is changed in branch and master\n" \
">>>>>>> 7cb63eed597130ba4abb87b3e544b85021905520\n"
+#define CONFLICTING_UNION_FILE \
+ "this file is changed in master and branch\n" \
+ "this file is changed in branch and master\n"
+
// Fixture setup and teardown
void test_merge_workdir_simple__initialize(void)
{
@@ -329,6 +333,45 @@ void test_merge_workdir_simple__diff3(void)
git_merge_result_free(result);
}
+void test_merge_workdir_simple__union(void)
+{
+ git_merge_result *result;
+ git_buf conflicting_buf = GIT_BUF_INIT;
+
+ struct merge_index_entry merge_index_entries[] = {
+ ADDED_IN_MASTER_INDEX_ENTRY,
+ AUTOMERGEABLE_INDEX_ENTRY,
+ CHANGED_IN_BRANCH_INDEX_ENTRY,
+ CHANGED_IN_MASTER_INDEX_ENTRY,
+
+ { 0100644, "72cdb057b340205164478565e91eb71647e66891", 0, "conflicting.txt" },
+
+ UNCHANGED_INDEX_ENTRY,
+ };
+
+ struct merge_reuc_entry merge_reuc_entries[] = {
+ AUTOMERGEABLE_REUC_ENTRY,
+ CONFLICTING_REUC_ENTRY,
+ REMOVED_IN_BRANCH_REUC_ENTRY,
+ REMOVED_IN_MASTER_REUC_ENTRY
+ };
+
+ set_core_autocrlf_to(repo, false);
+
+ cl_assert(result = merge_simple_branch(GIT_MERGE_FILE_FAVOR_UNION, 0));
+ cl_assert(!git_merge_result_is_fastforward(result));
+
+ cl_git_pass(git_futils_readbuffer(&conflicting_buf,
+ TEST_REPO_PATH "/conflicting.txt"));
+ cl_assert(strcmp(conflicting_buf.ptr, CONFLICTING_UNION_FILE) == 0);
+ git_buf_free(&conflicting_buf);
+
+ cl_assert(merge_test_index(repo_index, merge_index_entries, 6));
+ cl_assert(merge_test_reuc(repo_index, merge_reuc_entries, 4));
+
+ git_merge_result_free(result);
+}
+
void test_merge_workdir_simple__diff3_from_config(void)
{
git_merge_result *result;