(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'git blame on conflicted files' span_id:10))} spids: [8] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup first case' span_id:21))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:25) (Token id:Id.Lit_Chars val:'\t# Create the old file\n' span_id:26) (Token id:Id.Lit_Chars val:'\techo "Old line" > file1 &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit add file1 &&\n' span_id:28) (Token id: Id.Lit_Chars val: '\tgit commit --author "Old Line <ol@localhost>" -m file1.a &&\n' span_id: 29 ) (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'\t# Branch\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit checkout -b foo &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\n' span_id:33) (Token id:Id.Lit_Chars val:'\t# Do an ugly move and change\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit rm file1 &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\techo "New line ..." > file2 &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\techo "... and more" >> file2 &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit commit --author "U Gly <ug@localhost>" -m ugly &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\n' span_id:40) (Token id:Id.Lit_Chars val:'\t# Back to master and change something\n' span_id:41) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\techo "\n' span_id:43) (Token id:Id.Lit_Chars val:'\n' span_id:44) (Token id:Id.Lit_Chars val:'bla" >> file1 &&\n' span_id:45) (Token id: Id.Lit_Chars val: '\tgit commit --author "Old Line <ol@localhost>" -a -m file1.b &&\n' span_id: 46 ) (Token id:Id.Lit_Chars val:'\n' span_id:47) (Token id:Id.Lit_Chars val:'\t# Back to foo and merge master\n' span_id:48) (Token id:Id.Lit_Chars val:'\tgit checkout foo &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\tif git merge master; then\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\techo needed conflict here\n' span_id:51) (Token id:Id.Lit_Chars val:'\t\texit 1\n' span_id:52) (Token id:Id.Lit_Chars val:'\telse\n' span_id:53) (Token id: Id.Lit_Chars val: '\t\techo merge failed - resolving automatically\n' span_id: 54 ) (Token id:Id.Lit_Chars val:'\tfi &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\techo "New line ...\n' span_id:56) (Token id:Id.Lit_Chars val:'... and more\n' span_id:57) (Token id:Id.Lit_Chars val:'\n' span_id:58) (Token id:Id.Lit_Chars val:'bla\n' span_id:59) (Token id:Id.Lit_Chars val:'Even more" > file2 &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit rm file1 &&\n' span_id:61) (Token id: Id.Lit_Chars val: '\tgit commit --author "M Result <mr@localhost>" -a -m merged &&\n' span_id: 62 ) (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id: Id.Lit_Chars val: '\t# Back to master and change file1 again\n' span_id: 64 ) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\tsed s/bla/foo/ <file1 >X &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\trm file1 &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\tmv X file1 &&\n' span_id:68) (Token id: Id.Lit_Chars val: '\tgit commit --author "No Bla <nb@localhost>" -a -m replace &&\n' span_id: 69 ) (Token id:Id.Lit_Chars val:'\n' span_id:70) (Token id:Id.Lit_Chars val:'\t# Try to merge into foo again\n' span_id:71) (Token id:Id.Lit_Chars val:'\tgit checkout foo &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\tif git merge master; then\n' span_id:73) (Token id:Id.Lit_Chars val:'\t\techo needed conflict here\n' span_id:74) (Token id:Id.Lit_Chars val:'\t\texit 1\n' span_id:75) (Token id:Id.Lit_Chars val:'\telse\n' span_id:76) (Token id:Id.Lit_Chars val:'\t\techo merge failed - test is setup\n' span_id:77) (Token id:Id.Lit_Chars val:'\tfi\n' span_id:78) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'blame runs on unconflicted file while other file has conflicts' span_id: 87 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit blame file2\n' span_id:92) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'blame does not crash with conflicted file in stages 1,3' span_id: 99 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) (Token id:Id.Lit_Chars val:'\tgit blame file1\n' span_id:104) ) } ) (C {(test_done)}) ] )