t6022: Add tests with both rename source & dest involved in D/F conflicts
authorElijah Newren <newren@gmail.com>
Mon, 20 Sep 2010 08:28:39 +0000 (02:28 -0600)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Sep 2010 00:32:36 +0000 (17:32 -0700)
Having the source of a rename be involved in a directory/file conflict does
not currently pose any difficulties to the current merge-recursive
algorithm (in contrast to destinations of renames and D/F conflicts).
However, combining the two seemed like good testcases to include for
completeness.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t6022-merge-rename.sh

index 2839dfb5e0ec7f20856e04faef13406dd95e3496..2af863c1265cc8f4c8f7106cfd67196b73aff54d 100755 (executable)
@@ -527,4 +527,42 @@ test_expect_failure 'Same as previous, but merged other way' '
        test_cmp expected dir~renamed-file-has-conflicts
 '
 
+test_expect_success 'setup both rename source and destination involved in D/F conflict' '
+       git reset --hard &&
+       git checkout --orphan rename-dest &&
+       git rm -rf . &&
+       git clean -fdqx &&
+
+       mkdir one &&
+       echo stuff >one/file &&
+       git add -A &&
+       git commit -m "Common commmit" &&
+
+       git mv one/file destdir &&
+       git commit -m "Renamed to destdir" &&
+
+       git checkout -b source-conflict HEAD~1 &&
+       git rm -rf one &&
+       mkdir destdir &&
+       touch one destdir/foo &&
+       git add -A &&
+       git commit -m "Conflicts in the way"
+'
+
+test_expect_failure 'both rename source and destination involved in D/F conflict' '
+       git reset --hard &&
+       rm -rf dir~* &&
+       git checkout -q rename-dest^0 &&
+       test_must_fail git merge --strategy=recursive source-conflict &&
+
+       test 1 = "$(git ls-files -u | wc -l)" &&
+
+       test_must_fail git diff --quiet &&
+
+       test -f destdir/foo &&
+       test -f one &&
+       test -f destdir~HEAD &&
+       test "stuff" = "$(cat destdir~HEAD)"
+'
+
 test_done