(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:'Test criss-cross merge' span_id:23))} spids: [21] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare repository' span_id:34))} { (SQ (Token id:Id.Lit_Chars val:'echo "1\n' span_id:39) (Token id:Id.Lit_Chars val:'2\n' span_id:40) (Token id:Id.Lit_Chars val:'3\n' span_id:41) (Token id:Id.Lit_Chars val:'4\n' span_id:42) (Token id:Id.Lit_Chars val:'5\n' span_id:43) (Token id:Id.Lit_Chars val:'6\n' span_id:44) (Token id:Id.Lit_Chars val:'7\n' span_id:45) (Token id:Id.Lit_Chars val:'8\n' span_id:46) (Token id:Id.Lit_Chars val:'9" > file &&\n' span_id:47) (Token id:Id.Lit_Chars val:'git add file &&\n' span_id:48) (Token id:Id.Lit_Chars val:'git commit -m "Initial commit" file &&\n' span_id:49) (Token id:Id.Lit_Chars val:'git branch A &&\n' span_id:50) (Token id:Id.Lit_Chars val:'git branch B &&\n' span_id:51) (Token id:Id.Lit_Chars val:'git checkout A &&\n' span_id:52) (Token id:Id.Lit_Chars val:'echo "1\n' span_id:53) (Token id:Id.Lit_Chars val:'2\n' span_id:54) (Token id:Id.Lit_Chars val:'3\n' span_id:55) (Token id:Id.Lit_Chars val:'4\n' span_id:56) (Token id:Id.Lit_Chars val:'5\n' span_id:57) (Token id:Id.Lit_Chars val:'6\n' span_id:58) (Token id:Id.Lit_Chars val:'7\n' span_id:59) (Token id:Id.Lit_Chars val:'8 changed in B8, branch A\n' span_id:60) (Token id:Id.Lit_Chars val:'9" > file &&\n' span_id:61) (Token id:Id.Lit_Chars val:'git commit -m "B8" file &&\n' span_id:62) (Token id:Id.Lit_Chars val:'git checkout B &&\n' span_id:63) (Token id:Id.Lit_Chars val:'echo "1\n' span_id:64) (Token id:Id.Lit_Chars val:'2\n' span_id:65) (Token id:Id.Lit_Chars val:'3 changed in C3, branch B\n' span_id:66) (Token id:Id.Lit_Chars val:'4\n' span_id:67) (Token id:Id.Lit_Chars val:'5\n' span_id:68) (Token id:Id.Lit_Chars val:'6\n' span_id:69) (Token id:Id.Lit_Chars val:'7\n' span_id:70) (Token id:Id.Lit_Chars val:'8\n' span_id:71) (Token id:Id.Lit_Chars val:'9\n' span_id:72) (Token id:Id.Lit_Chars val:'" > file &&\n' span_id:73) (Token id:Id.Lit_Chars val:'git commit -m "C3" file &&\n' span_id:74) (Token id:Id.Lit_Chars val:'git branch C3 &&\n' span_id:75) (Token id:Id.Lit_Chars val:'git merge -m "pre E3 merge" A &&\n' span_id:76) (Token id:Id.Lit_Chars val:'echo "1\n' span_id:77) (Token id:Id.Lit_Chars val:'2\n' span_id:78) (Token id: Id.Lit_Chars val: '3 changed in E3, branch B. New file size\n' span_id: 79 ) (Token id:Id.Lit_Chars val:'4\n' span_id:80) (Token id:Id.Lit_Chars val:'5\n' span_id:81) (Token id:Id.Lit_Chars val:'6\n' span_id:82) (Token id:Id.Lit_Chars val:'7\n' span_id:83) (Token id:Id.Lit_Chars val:'8 changed in B8, branch A\n' span_id:84) (Token id:Id.Lit_Chars val:'9\n' span_id:85) (Token id:Id.Lit_Chars val:'" > file &&\n' span_id:86) (Token id:Id.Lit_Chars val:'git commit -m "E3" file &&\n' span_id:87) (Token id:Id.Lit_Chars val:'git checkout A &&\n' span_id:88) (Token id:Id.Lit_Chars val:'git merge -m "pre D8 merge" C3 &&\n' span_id:89) (Token id:Id.Lit_Chars val:'echo "1\n' span_id:90) (Token id:Id.Lit_Chars val:'2\n' span_id:91) (Token id:Id.Lit_Chars val:'3 changed in C3, branch B\n' span_id:92) (Token id:Id.Lit_Chars val:'4\n' span_id:93) (Token id:Id.Lit_Chars val:'5\n' span_id:94) (Token id:Id.Lit_Chars val:'6\n' span_id:95) (Token id:Id.Lit_Chars val:'7\n' span_id:96) (Token id: Id.Lit_Chars val: '8 changed in D8, branch A. New file size 2\n' span_id: 97 ) (Token id:Id.Lit_Chars val:'9" > file &&\n' span_id:98) (Token id:Id.Lit_Chars val:'git commit -m D8 file' span_id:99) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Criss-cross merge' span_id:106))} {(SQ (Token id:Id.Lit_Chars val:'git merge -m "final merge" B' span_id:110))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:116) fd: -1 arg_word: {(file-expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:120) fd: -1 here_begin: {(EOF)} here_end_span_id: 133 stdin_parts: [ ('1\n') ('2\n') ('3 changed in E3, branch B. New file size\n') ('4\n') ('5\n') ('6\n') ('7\n') ('8 changed in D8, branch A. New file size 2\n') ('9\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Criss-cross merge result' span_id:138))} {(SQ (Token id:Id.Lit_Chars val:'cmp file file-expect' span_id:142))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Criss-cross merge fails (-s resolve)' span_id:149))} { (SQ (Token id:Id.Lit_Chars val:'git reset --hard A^ &&\n' span_id:154) (Token id: Id.Lit_Chars val: 'test_must_fail git merge -s resolve -m "final merge" B' span_id: 155 ) ) } ) (C {(test_done)}) ] )