(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"git cat-file textconv support">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(helper)} spids:[16])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {("#!/bin/sh\n") 
              (
"grep -q '^bin: ' \"$1\" || { echo \"E: $1 is not \\\"binary\\\" file\" 1>&2; exit 1; }\n"
              ) ("sed 's/^bin: /converted: /' \"$1\"\n")
            }
          do_expansion: False
          here_end: EOF
          was_filled: True
          spids: [19]
        )
      ]
    )
    (C {(chmod)} {(Lit_Other "+") (x)} {(helper)})
    (C {(test_expect_success)} {(SQ <"setup ">)} 
      {
        (SQ <"\n"> <"\techo \"bin: test\" >one.bin &&\n"> <"\ttest_ln_s_add one.bin symlink.bin &&\n"> 
          <"\tgit add . &&\n"> <"\tGIT_AUTHOR_NAME=Number1 git commit -a -m First --date=\"2010-01-01 18:00:00\" &&\n"> 
          <"\techo \"bin: test version 2\" >one.bin &&\n"> <"\tGIT_AUTHOR_NAME=Number2 git commit -a -m Second --date=\"2010-01-01 20:00:00\"\n">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[51])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("bin: test version 2\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [54]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"no filter specified">)} 
      {
        (SQ <"\n"> <"\tgit cat-file --textconv :one.bin >result &&\n"> <"\ttest_cmp expected result\n">)
      }
    )
    (C {(test_expect_success)} {(SQ <"setup textconv filters">)} 
      {
        (SQ <"\n"> <"\techo \"*.bin diff=test\" >.gitattributes &&\n"> 
          <"\tgit config diff.test.textconv ./helper &&\n"> <"\tgit config diff.test.cachetextconv false\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cat-file without --textconv">)} 
      {(SQ <"\n"> <"\tgit cat-file blob :one.bin >result &&\n"> <"\ttest_cmp expected result\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[101])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("bin: test\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [104]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"cat-file without --textconv on previous commit">)} 
      {(SQ <"\n"> <"\tgit cat-file -p HEAD^:one.bin >result &&\n"> <"\ttest_cmp expected result\n">)}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[124])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("converted: test version 2\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [127]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"cat-file --textconv on last commit">)} 
      {
        (SQ <"\n"> <"\tgit cat-file --textconv :one.bin >result &&\n"> <"\ttest_cmp expected result\n">)
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[147])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("converted: test\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [150]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"cat-file --textconv on previous commit">)} 
      {
        (SQ <"\n"> <"\tgit cat-file --textconv HEAD^:one.bin >result &&\n"> 
          <"\ttest_cmp expected result\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cat-file without --textconv (symlink)">)} 
      {
        (SQ <"\n"> <"\tprintf \"%s\" \"one.bin\" >expected &&\n"> 
          <"\tgit cat-file blob :symlink.bin >result &&\n"> <"\ttest_cmp expected result\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cat-file --textconv on index (symlink)">)} 
      {
        (SQ <"\n"> <"\tgit cat-file --textconv :symlink.bin >result &&\n"> 
          <"\ttest_cmp expected result\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"cat-file --textconv on HEAD (symlink)">)} 
      {
        (SQ <"\n"> <"\tgit cat-file --textconv HEAD:symlink.bin >result &&\n"> 
          <"\ttest_cmp expected result\n">
        )
      }
    )
    (C {(test_done)})
  ]
)