(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:-1 arg_word:{(expect)} spids:[38])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[61])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[84])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[126])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[149])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[172])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[208])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[231])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[254])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[277])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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:-1 arg_word:{(expect)} spids:[301])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          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: True
          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)})
  ]
)