git_attr(): fix function signature
[gitweb.git] / t / t2030-unresolve-info.sh
index 984480271c0deef50dddae215a59aa62471c0e47..a38bd6df8490e8c54c29a54084f2a5c232f24e15 100755 (executable)
@@ -97,4 +97,47 @@ test_expect_success 'plumbing clears' '
        check_resolve_undo cleared
 '
 
+test_expect_success 'add records checkout -m undoes' '
+       prime_resolve_undo &&
+       git diff HEAD &&
+       git checkout --conflict=merge file &&
+       echo checkout used the record and removed it &&
+       check_resolve_undo removed &&
+       echo the index and the work tree is unmerged again &&
+       git diff >actual &&
+       grep "^++<<<<<<<" actual
+'
+
+test_expect_success 'unmerge with plumbing' '
+       prime_resolve_undo &&
+       git update-index --unresolve file &&
+       git ls-files -u >actual &&
+       test $(wc -l <actual) = 3
+'
+
+test_expect_success 'rerere and rerere --forget' '
+       mkdir .git/rr-cache &&
+       prime_resolve_undo &&
+       echo record the resolution &&
+       git rerere &&
+       rerere_id=$(cd .git/rr-cache && echo */postimage) &&
+       rerere_id=${rerere_id%/postimage} &&
+       test -f .git/rr-cache/$rerere_id/postimage &&
+       git checkout -m file &&
+       echo resurrect the conflict &&
+       grep "^=======" file &&
+       echo reresolve the conflict &&
+       git rerere &&
+       test "z$(cat file)" = zdifferent &&
+       echo register the resolution again &&
+       git add file &&
+       check_resolve_undo kept file initial:file second:file third:file &&
+       test -z "$(git ls-files -u)" &&
+       git rerere forget file &&
+       ! test -f .git/rr-cache/$rerere_id/postimage &&
+       tr "\0" "\n" <.git/MERGE_RR >actual &&
+       echo "$rerere_id        file" >expect &&
+       test_cmp expect actual
+'
+
 test_done