(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: { (DQ ('git merge\n') ('\n') ('Testing a custom strategy.\n') ('\n') ("* (HEAD, master) Merge commit 'c3'\n") ('|') ('| * (tag: c3) c3\n') ('* | (tag: c1) c1\n') ('|/\n') ('| * tag: c2) c2\n') ('|/\n') ('* (tag: c0) c0\n') ) } spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <'set up custom strategy'>)} { (SQ <'\n'> <'\tcat >git-merge-theirs <<-EOF &&\n'> <'\t#!$SHELL_PATH\n'> <'\teval git read-tree --reset -u \\\\\\$\\$#\n'> <'\tEOF\n'> <'\n'> <'\tchmod +x git-merge-theirs &&\n'> <'\tPATH=.:$PATH &&\n'> <'\texport PATH\n'> ) } ) (C {(test_expect_success)} {(SQ <setup>)} { (SQ <'\n'> <'\ttest_commit c0 c0.c &&\n'> <'\ttest_commit c1 c1.c &&\n'> <'\tgit reset --keep c0 &&\n'> <'\techo c1c1 >c1.c &&\n'> <'\tgit add c1.c &&\n'> <'\ttest_commit c2 c2.c &&\n'> <'\tgit reset --keep c0 &&\n'> <'\ttest_commit c3 c3.c\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge c2 with a custom strategy'>)} { (SQ <'\n'> <'\tgit reset --hard c1 &&\n'> <'\n'> <'\tgit rev-parse c1 >head.old &&\n'> <'\tgit rev-parse c2 >second-parent.expected &&\n'> <'\tgit rev-parse c2^{tree} >tree.expected &&\n'> <'\tgit merge -s theirs c2 &&\n'> <'\n'> <'\tgit rev-parse HEAD >head.new &&\n'> <'\tgit rev-parse HEAD^1 >first-parent &&\n'> <'\tgit rev-parse HEAD^2 >second-parent &&\n'> <'\tgit rev-parse HEAD^{tree} >tree &&\n'> <'\tgit update-index --refresh &&\n'> <'\tgit diff --exit-code &&\n'> <'\tgit diff --exit-code c2 HEAD &&\n'> <'\tgit diff --exit-code c2 &&\n'> <'\n'> <'\t! test_cmp head.old head.new &&\n'> <'\ttest_cmp head.old first-parent &&\n'> <'\ttest_cmp second-parent.expected second-parent &&\n'> <'\ttest_cmp tree.expected tree &&\n'> <'\ttest -f c0.c &&\n'> <'\tgrep c1c1 c1.c &&\n'> <'\ttest -f c2.c\n'> ) } ) (C {(test_expect_success)} {(SQ <'trivial merge with custom strategy'>)} { (SQ <'\n'> <'\tgit reset --hard c1 &&\n'> <'\n'> <'\tgit rev-parse c1 >head.old &&\n'> <'\tgit rev-parse c3 >second-parent.expected &&\n'> <'\tgit rev-parse c3^{tree} >tree.expected &&\n'> <'\tgit merge -s theirs c3 &&\n'> <'\n'> <'\tgit rev-parse HEAD >head.new &&\n'> <'\tgit rev-parse HEAD^1 >first-parent &&\n'> <'\tgit rev-parse HEAD^2 >second-parent &&\n'> <'\tgit rev-parse HEAD^{tree} >tree &&\n'> <'\tgit update-index --refresh &&\n'> <'\tgit diff --exit-code &&\n'> <'\tgit diff --exit-code c3 HEAD &&\n'> <'\tgit diff --exit-code c3 &&\n'> <'\n'> <'\t! test_cmp head.old head.new &&\n'> <'\ttest_cmp head.old first-parent &&\n'> <'\ttest_cmp second-parent.expected second-parent &&\n'> <'\ttest_cmp tree.expected tree &&\n'> <'\ttest -f c0.c &&\n'> <'\t! test -e c1.c &&\n'> <'\ttest -f c3.c\n'> ) } ) (C {(test_done)}) ] )