|  | #!/bin/sh | 
|  |  | 
|  | test_description='am --interactive tests' | 
|  |  | 
|  | TEST_PASSES_SANITIZE_LEAK=true | 
|  | . ./test-lib.sh | 
|  |  | 
|  | test_expect_success 'set up patches to apply' ' | 
|  | test_commit unrelated && | 
|  | test_commit no-conflict && | 
|  | test_commit conflict-patch file patch && | 
|  | git format-patch --stdout -2 >mbox && | 
|  |  | 
|  | git reset --hard unrelated && | 
|  | test_commit conflict-main file main base | 
|  | ' | 
|  |  | 
|  | # Sanity check our setup. | 
|  | test_expect_success 'applying all patches generates conflict' ' | 
|  | test_must_fail git am mbox && | 
|  | echo resolved >file && | 
|  | git add -u && | 
|  | git am --resolved | 
|  | ' | 
|  |  | 
|  | test_expect_success 'interactive am can apply a single patch' ' | 
|  | git reset --hard base && | 
|  | # apply the first, but not the second | 
|  | test_write_lines y n | git am -i mbox && | 
|  |  | 
|  | echo no-conflict >expect && | 
|  | git log -1 --format=%s >actual && | 
|  | test_cmp expect actual | 
|  | ' | 
|  |  | 
|  | test_expect_success 'interactive am can resolve conflict' ' | 
|  | git reset --hard base && | 
|  | # apply both; the second one will conflict | 
|  | test_write_lines y y | test_must_fail git am -i mbox && | 
|  | echo resolved >file && | 
|  | git add -u && | 
|  | # interactive "--resolved" will ask us if we want to apply the result | 
|  | echo y | git am -i --resolved && | 
|  |  | 
|  | echo conflict-patch >expect && | 
|  | git log -1 --format=%s >actual && | 
|  | test_cmp expect actual && | 
|  |  | 
|  | echo resolved >expect && | 
|  | git cat-file blob HEAD:file >actual && | 
|  | test_cmp expect actual | 
|  | ' | 
|  |  | 
|  | test_done |