(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'combined and merge diff handle binary files and textconv'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <'setup binary merge conflict'>)} 
      {
        (SQ <'\n'> <'\techo oneQ1 | q_to_nul >binary &&\n'> <'\tgit add binary &&\n'> 
          <'\tgit commit -m one &&\n'> <'\techo twoQ2 | q_to_nul >binary &&\n'> <'\tgit commit -a -m two &&\n'> 
          <'\tgit checkout -b branch-binary HEAD^ &&\n'> <'\techo threeQ3 | q_to_nul >binary &&\n'> <'\tgit commit -a -m three &&\n'> 
          <'\ttest_must_fail git merge master &&\n'> <'\techo resolvedQhooray | q_to_nul >binary &&\n'> <'\tgit commit -a -m resolved\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[38])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --git a/binary b/binary\n') 
              ('index 7ea6ded..9563691 100644\n') ('Binary files a/binary and b/binary differ\n') ('resolved\n') ('\n') ('diff --git a/binary b/binary\n') 
              ('index 6197570..9563691 100644\n') ('Binary files a/binary and b/binary differ\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [41]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff -m indicates binary-ness'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s -m >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[61])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --combined binary\n') ('index 7ea6ded,6197570..9563691\n') 
              ('Binary files differ\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [64]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff -c indicates binary-ness'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s -c >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[84])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --cc binary\n') ('index 7ea6ded,6197570..9563691\n') 
              ('Binary files differ\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [87]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff --cc indicates binary-ness'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s --cc >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'setup non-binary with binary attribute'>)} 
      {
        (SQ <'\n'> <'\tgit checkout master &&\n'> <'\ttest_commit one text &&\n'> 
          <'\ttest_commit two text &&\n'> <'\tgit checkout -b branch-text HEAD^ &&\n'> <'\ttest_commit three text &&\n'> 
          <'\ttest_must_fail git merge master &&\n'> <'\ttest_commit resolved text &&\n'> <'\techo text -diff >.gitattributes\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[126])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --git a/text b/text\n') ('index 2bdf67a..2ab19ae 100644\n') 
              ('Binary files a/text and b/text differ\n') ('resolved\n') ('\n') ('diff --git a/text b/text\n') ('index f719efd..2ab19ae 100644\n') 
              ('Binary files a/text and b/text differ\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [129]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff -m respects binary attribute'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s -m >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[149])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --combined text\n') ('index 2bdf67a,f719efd..2ab19ae\n') 
              ('Binary files differ\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [152]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff -c respects binary attribute'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s -c >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[172])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --cc text\n') ('index 2bdf67a,f719efd..2ab19ae\n') 
              ('Binary files differ\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [175]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff --cc respects binary attribute'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s --cc >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'setup textconv attribute'>)} 
      {
        (SQ <'\n'> <'\techo "text diff=upcase" >.gitattributes &&\n'> 
          <'\tgit config diff.upcase.textconv "tr a-z A-Z <"\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[208])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --git a/text b/text\n') ('index 2bdf67a..2ab19ae 100644\n') 
              ('--- a/text\n') ('+++ b/text\n') ('@@ -1 +1 @@\n') ('-THREE\n') ('+RESOLVED\n') ('resolved\n') ('\n') 
              ('diff --git a/text b/text\n') ('index f719efd..2ab19ae 100644\n') ('--- a/text\n') ('+++ b/text\n') ('@@ -1 +1 @@\n') ('-TWO\n') 
              ('+RESOLVED\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [211]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff -m respects textconv attribute'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s -m >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[231])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --combined text\n') ('index 2bdf67a,f719efd..2ab19ae\n') 
              ('--- a/text\n') ('+++ b/text\n') ('@@@ -1,1 -1,1 +1,1 @@@\n') ('- THREE\n') (' -TWO\n') ('++RESOLVED\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [234]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff -c respects textconv attribute'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s -c >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[254])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('resolved\n') ('\n') ('diff --cc text\n') ('index 2bdf67a,f719efd..2ab19ae\n') 
              ('--- a/text\n') ('+++ b/text\n') ('@@@ -1,1 -1,1 +1,1 @@@\n') ('- THREE\n') (' -TWO\n') ('++RESOLVED\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [257]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff --cc respects textconv attribute'>)} 
      {(SQ <'\n'> <'\tgit show --format=%s --cc >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[277])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('diff --combined text\n') ('index 2bdf67a,f719efd..2ab19ae\n') ('--- a/text\n') 
              ('+++ b/text\n') ('@@@ -1,1 -1,1 +1,1 @@@\n') ('- three\n') (' -two\n') ('++resolved\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [280]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff-tree plumbing does not respect textconv'>)} 
      {
        (SQ <'\n'> <'\tgit diff-tree HEAD -c -p >full &&\n'> <'\ttail -n +2 full >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[301])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('diff --cc text\n') ('index 2bdf67a,f719efd..0000000\n') ('--- a/text\n') 
              ('+++ b/text\n') ('@@@ -1,1 -1,1 +1,5 @@@\n') ('++<<<<<<< HEAD\n') (' +THREE\n') ('++=======\n') ('+ TWO\n') 
              ('++>>>>>>> MASTER\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [304]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'diff --cc respects textconv on worktree file'>)} 
      {
        (SQ <'\n'> <'\tgit reset --hard HEAD^ &&\n'> <'\ttest_must_fail git merge master &&\n'> 
          <'\tgit diff >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)