(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:'RCS merge replacement: merge-file' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:16) fd: -1 arg_word: {(orig.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:20) fd: -1 here_begin: {(EOF)} here_end_span_id: 32 stdin_parts: [ ('Dominus regit me,\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:36) fd: -1 arg_word: {(new1.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:40) fd: -1 here_begin: {(EOF)} here_end_span_id: 55 stdin_parts: [ ('Dominus regit me,\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam tu mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:59) fd: -1 arg_word: {(new2.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:63) fd: -1 here_begin: {(EOF)} here_end_span_id: 74 stdin_parts: [ ('Dominus regit me, et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:78) fd: -1 arg_word: {(new3.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:82) fd: -1 here_begin: {(EOF)} here_end_span_id: 94 stdin_parts: [ ('DOMINUS regit me,\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:98) fd: -1 arg_word: {(new4.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:102) fd: -1 here_begin: {(EOF)} here_end_span_id: 112 stdin_parts: [ ('Dominus regit me, et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ] ) ] ) (command.Simple words: [{(printf)} {(DQ ('propter nomen suum.'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:119) fd: -1 arg_word: {(new4.txt)} ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge with no changes' span_id:127))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:131) (Token id:Id.Lit_Chars val:'\tcp orig.txt test.txt &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\tgit merge-file test.txt orig.txt orig.txt &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\ttest_cmp test.txt orig.txt\n' span_id:134) ) } ) (C {(cp)} {(new1.txt)} {(test.txt)}) (C {(test_expect_success)} {(DQ ('merge without conflict'))} {(DQ ('git merge-file test.txt orig.txt new2.txt'))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'works in subdirectory' span_id:160))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:164) (Token id:Id.Lit_Chars val:'\tmkdir dir &&\n' span_id:165) (Token id:Id.Lit_Chars val:'\tcp new1.txt dir/a.txt &&\n' span_id:166) (Token id:Id.Lit_Chars val:'\tcp orig.txt dir/o.txt &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\tcp new2.txt dir/b.txt &&\n' span_id:168) (Token id: Id.Lit_Chars val: '\t( cd dir && git merge-file a.txt o.txt b.txt ) &&\n' span_id: 169 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing a.txt\n' span_id:170) ) } ) (C {(cp)} {(new1.txt)} {(test.txt)}) (C {(test_expect_success)} {(DQ ('merge without conflict (--quiet)'))} {(DQ ('git merge-file --quiet test.txt orig.txt new2.txt'))} ) (C {(cp)} {(new1.txt)} {(test2.txt)}) (C {(test_expect_failure)} {(DQ ('merge without conflict (missing LF at EOF)'))} {(DQ ('git merge-file test2.txt orig.txt new4.txt'))} ) (C {(test_expect_failure)} {(DQ ('merge result added missing LF'))} {(DQ ('test_cmp test.txt test2.txt'))} ) (C {(cp)} {(new4.txt)} {(test3.txt)}) (C {(test_expect_success)} {(DQ ('merge without conflict (missing LF at EOF, away from change in the other file)'))} {(DQ ('git merge-file --quiet test3.txt new2.txt new3.txt'))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:246) fd: -1 arg_word: {(expect.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:250) fd: -1 here_begin: {(EOF)} here_end_span_id: 261 stdin_parts: [ ('DOMINUS regit me,\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ] ) ] ) (command.Simple words: [{(printf)} {(DQ ('propter nomen suum.'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:268) fd: -1 arg_word: {(expect.txt)} ) ] ) (C {(test_expect_success)} {(DQ ('merge does not add LF away of change'))} {(DQ ('test_cmp test3.txt expect.txt'))} ) (C {(cp)} {(test.txt)} {(backup.txt)}) (C {(test_expect_success)} {(DQ ('merge with conflicts'))} {(DQ ('test_must_fail git merge-file test.txt orig.txt new3.txt'))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:307) fd: -1 arg_word: {(expect.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:311) fd: -1 here_begin: {(EOF)} here_end_span_id: 330 stdin_parts: [ ('<<<<<<< test.txt\n') ('Dominus regit me, et nihil mihi deerit.\n') ('=======\n') ('DOMINUS regit me,\n') ('et nihil mihi deerit.\n') ('>>>>>>> new3.txt\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam tu mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ] ) ] ) (C {(test_expect_success)} {(DQ ('expected conflict markers'))} {(DQ ('test_cmp test.txt expect.txt'))} ) (C {(cp)} {(backup.txt)} {(test.txt)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:352) fd: -1 arg_word: {(expect.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:356) fd: -1 here_begin: {(EOF)} here_end_span_id: 370 stdin_parts: [ ('Dominus regit me, et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam tu mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ] ) ] ) (C {(test_expect_success)} {(DQ ('merge conflicting with --ours'))} {(DQ ('git merge-file --ours test.txt orig.txt new3.txt && test_cmp test.txt expect.txt'))} ) (C {(cp)} {(backup.txt)} {(test.txt)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:392) fd: -1 arg_word: {(expect.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:396) fd: -1 here_begin: {(EOF)} here_end_span_id: 411 stdin_parts: [ ('DOMINUS regit me,\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam tu mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ] ) ] ) (C {(test_expect_success)} {(DQ ('merge conflicting with --theirs'))} {(DQ ('git merge-file --theirs test.txt orig.txt new3.txt && test_cmp test.txt expect.txt'))} ) (C {(cp)} {(backup.txt)} {(test.txt)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:433) fd: -1 arg_word: {(expect.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:437) fd: -1 here_begin: {(EOF)} here_end_span_id: 453 stdin_parts: [ ('Dominus regit me, et nihil mihi deerit.\n') ('DOMINUS regit me,\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam tu mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ] ) ] ) (C {(test_expect_success)} {(DQ ('merge conflicting with --union'))} {(DQ ('git merge-file --union test.txt orig.txt new3.txt && test_cmp test.txt expect.txt'))} ) (C {(cp)} {(backup.txt)} {(test.txt)}) (C {(test_expect_success)} {(DQ ('merge with conflicts, using -L'))} {(DQ ('test_must_fail git merge-file -L 1 -L 2 test.txt orig.txt new3.txt'))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:488) fd: -1 arg_word: {(expect.txt)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:492) fd: -1 here_begin: {(EOF)} here_end_span_id: 511 stdin_parts: [ ('<<<<<<< 1\n') ('Dominus regit me, et nihil mihi deerit.\n') ('=======\n') ('DOMINUS regit me,\n') ('et nihil mihi deerit.\n') ('>>>>>>> new3.txt\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam tu mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ] ) ] ) (C {(test_expect_success)} {(DQ ('expected conflict markers, with -L'))} {(DQ ('test_cmp test.txt expect.txt'))} ) (command.Simple words: [{(sed)} {(DQ ('s/ tu / TU /'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:532) fd: -1 arg_word: {(new1.txt)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:536) fd: -1 arg_word: {(new5.txt)} ) ] ) (C {(test_expect_success)} {(DQ ('conflict in removed tail'))} {(DQ ('test_must_fail git merge-file -p orig.txt new1.txt new5.txt > out'))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:555) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:559) fd: -1 here_begin: {(EOF)} here_end_span_id: 577 stdin_parts: [ ('Dominus regit me,\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('<<<<<<< orig.txt\n') ('=======\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam TU mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ('>>>>>>> new5.txt\n') ] ) ] ) (C {(test_expect_success)} {(DQ ('expected conflict markers'))} {(DQ ('test_cmp expect out'))}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'binary files cannot be merged' span_id:593))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:597) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge-file -p \\\n' span_id:598) (Token id: Id.Lit_Chars val: '\t\torig.txt "$TEST_DIRECTORY"/test-binary-1.png new1.txt 2> merge.err &&\n' span_id: 599 ) (Token id:Id.Lit_Chars val:'\tgrep "Cannot merge binary files" merge.err\n' span_id:600) ) } ) (command.Simple words: [ {(sed)} {(-e)} { (DQ (s/deerit.) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:610) ) ('/deerit;/') ) } {(-e)} { (DQ ('s/me;') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:618) ) (/me./) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:622) fd: -1 arg_word: {(new5.txt)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:626) fd: -1 arg_word: {(new6.txt)} ) ] ) (command.Simple words: [ {(sed)} {(-e)} { (DQ (s/deerit.) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:636) ) ('/deerit,/') ) } {(-e)} { (DQ ('s/me;') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:644) ) ('/me,/') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:648) fd: -1 arg_word: {(new5.txt)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:652) fd: -1 arg_word: {(new7.txt)} ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'MERGE_ZEALOUS simplifies non-conflicts' span_id:660))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:664) (Token id:Id.Lit_Chars val:'\n' span_id:665) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge-file -p new6.txt new5.txt new7.txt > output &&\n' span_id: 666 ) (Token id:Id.Lit_Chars val:'\ttest 1 = $(grep ======= < output | wc -l)\n' span_id:667) (Token id:Id.Lit_Chars val:'\n' span_id:668) ) } ) (command.Pipeline children: [ (command.Simple words: [ {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/deerit./&%%%%/' span_id:677))} {(-e)} {(DQ ('s/locavit,/locavit;/'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:685) fd: -1 arg_word: {(new6.txt)} ) ] ) (command.Simple words: [ {(tr)} {(SQ (Token id:Id.Lit_Chars val:'%' span_id:694))} {(SQ (Token id:Id.Lit_Chars val:'\\012' span_id:698))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:701) fd: -1 arg_word: {(new8.txt)} ) ] ) ] negated: F ) (command.Pipeline children: [ (command.Simple words: [ {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/deerit./&%%%%/' span_id:710))} {(-e)} {(DQ ('s/locavit,/locavit --/'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:719) fd: -1 arg_word: {(new7.txt)} ) ] ) (command.Simple words: [ {(tr)} {(SQ (Token id:Id.Lit_Chars val:'%' span_id:728))} {(SQ (Token id:Id.Lit_Chars val:'\\012' span_id:732))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:735) fd: -1 arg_word: {(new9.txt)} ) ] ) ] negated: F ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:ZEALOUS_ALNUM span_id:743))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:747) (Token id:Id.Lit_Chars val:'\n' span_id:748) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge-file -p \\\n' span_id:749) (Token id:Id.Lit_Chars val:'\t\tnew8.txt new5.txt new9.txt > merge.out &&\n' span_id:750) (Token id: Id.Lit_Chars val: '\ttest 1 = $(grep ======= < merge.out | wc -l)\n' span_id: 751 ) (Token id:Id.Lit_Chars val:'\n' span_id:752) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:758) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:761) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:762)) (OF) } here_end_span_id: 793 stdin_parts: [ ('Dominus regit me,\n') ('<<<<<<< new8.txt\n') ('et nihil mihi deerit;\n') ('\n') ('\n') ('\n') ('\n') ('In loco pascuae ibi me collocavit;\n') ('super aquam refectionis educavit me.\n') ('||||||| new5.txt\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('=======\n') ('et nihil mihi deerit,\n') ('\n') ('\n') ('\n') ('\n') ('In loco pascuae ibi me collocavit --\n') ('super aquam refectionis educavit me,\n') ('>>>>>>> new9.txt\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam TU mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"diff3 -m" style output (1)' span_id:798))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:802) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge-file -p --diff3 \\\n' span_id: 803 ) (Token id:Id.Lit_Chars val:'\t\tnew8.txt new5.txt new9.txt >actual &&\n' span_id:804) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:805) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'"diff3 -m" style output (2)' span_id:812))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:816) (Token id: Id.Lit_Chars val: '\tgit config merge.conflictstyle diff3 &&\n' span_id: 817 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge-file -p \\\n' span_id:818) (Token id: Id.Lit_Chars val: '\t\tnew8.txt new5.txt new9.txt >actual &&\n' span_id: 819 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:820) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:826) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:829) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:830)) (OF) } here_end_span_id: 861 stdin_parts: [ ('Dominus regit me,\n') ('<<<<<<<<<< new8.txt\n') ('et nihil mihi deerit;\n') ('\n') ('\n') ('\n') ('\n') ('In loco pascuae ibi me collocavit;\n') ('super aquam refectionis educavit me.\n') ('|||||||||| new5.txt\n') ('et nihil mihi deerit.\n') ('In loco pascuae ibi me collocavit,\n') ('super aquam refectionis educavit me;\n') ('==========\n') ('et nihil mihi deerit,\n') ('\n') ('\n') ('\n') ('\n') ('In loco pascuae ibi me collocavit --\n') ('super aquam refectionis educavit me,\n') ('>>>>>>>>>> new9.txt\n') ('animam meam convertit,\n') ('deduxit me super semitas jusitiae,\n') ('propter nomen suum.\n') ('Nam et si ambulavero in medio umbrae mortis,\n') ('non timebo mala, quoniam TU mecum es:\n') ('virga tua et baculus tuus ipsa me consolata sunt.\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'marker size' span_id:866))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:870) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge-file -p --marker-size=10 \\\n' span_id: 871 ) (Token id:Id.Lit_Chars val:'\t\tnew8.txt new5.txt new9.txt >actual &&\n' span_id:872) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:873) ) } ) (command.Simple words: [{(printf)} {(DQ (line1) (Id.Lit_Other '\\') (nline2) (Id.Lit_Other '\\') (nline3))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:887) fd: -1 arg_word: {(nolf-orig.txt)} ) ] ) (command.Simple words: [{(printf)} {(DQ (line1) (Id.Lit_Other '\\') (nline2) (Id.Lit_Other '\\') (nline3x))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:900) fd: -1 arg_word: {(nolf-diff1.txt)} ) ] ) (command.Simple words: [{(printf)} {(DQ (line1) (Id.Lit_Other '\\') (nline2) (Id.Lit_Other '\\') (nline3y))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:913) fd: -1 arg_word: {(nolf-diff2.txt)} ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'conflict at EOF without LF resolved by --ours' span_id:920))} { (SQ (Token id: Id.Lit_Chars val: 'git merge-file -p --ours nolf-diff1.txt nolf-orig.txt nolf-diff2.txt >output.txt &&\n' span_id: 926 ) (Token id:Id.Lit_Chars val:'\t printf "line1\\nline2\\nline3x" >expect.txt &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\t test_cmp expect.txt output.txt' span_id:928) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'conflict at EOF without LF resolved by --theirs' span_id:935))} { (SQ (Token id: Id.Lit_Chars val: 'git merge-file -p --theirs nolf-diff1.txt nolf-orig.txt nolf-diff2.txt >output.txt &&\n' span_id: 941 ) (Token id:Id.Lit_Chars val:'\t printf "line1\\nline2\\nline3y" >expect.txt &&\n' span_id:942) (Token id:Id.Lit_Chars val:'\t test_cmp expect.txt output.txt' span_id:943) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'conflict at EOF without LF resolved by --union' span_id:950))} { (SQ (Token id: Id.Lit_Chars val: 'git merge-file -p --union nolf-diff1.txt nolf-orig.txt nolf-diff2.txt >output.txt &&\n' span_id: 956 ) (Token id: Id.Lit_Chars val: '\t printf "line1\\nline2\\nline3x\\nline3y" >expect.txt &&\n' span_id: 957 ) (Token id:Id.Lit_Chars val:'\t test_cmp expect.txt output.txt' span_id:958) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'conflict sections match existing line endings' span_id:965))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:969) (Token id: Id.Lit_Chars val: '\tprintf "1\\\\r\\\\n2\\\\r\\\\n3" >crlf-orig.txt &&\n' span_id: 970 ) (Token id:Id.Lit_Chars val:'\tprintf "1\\\\r\\\\n2\\\\r\\\\n4" >crlf-diff1.txt &&\n' span_id:971) (Token id: Id.Lit_Chars val: '\tprintf "1\\\\r\\\\n2\\\\r\\\\n5" >crlf-diff2.txt &&\n' span_id: 972 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git -c core.eol=crlf merge-file -p \\\n' span_id:973) (Token id: Id.Lit_Chars val: '\t\tcrlf-diff1.txt crlf-orig.txt crlf-diff2.txt >crlf.txt &&\n' span_id: 974 ) (Token id: Id.Lit_Chars val: '\ttest $(tr "\\015" Q <crlf.txt | grep "^[<=>].*Q$" | wc -l) = 3 &&\n' span_id: 975 ) (Token id: Id.Lit_Chars val: '\ttest $(tr "\\015" Q <crlf.txt | grep "[345]Q$" | wc -l) = 3 &&\n' span_id: 976 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git -c core.eol=crlf merge-file -p \\\n' span_id:977) (Token id: Id.Lit_Chars val: '\t\tnolf-diff1.txt nolf-orig.txt nolf-diff2.txt >nolf.txt &&\n' span_id: 978 ) (Token id: Id.Lit_Chars val: '\ttest $(tr "\\015" Q <nolf.txt | grep "^[<=>].*Q$" | wc -l) = 0\n' span_id: 979 ) ) } ) (C {(test_done)}) ] )