(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)})
  ]
)