(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:16777215 arg_word:{(helper)} spids:[16])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          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: T
          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:16777215 arg_word:{(expected)} spids:[51])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: {(DQ ('bin: test version 2\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: T
          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:16777215 arg_word:{(expected)} spids:[102])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: {(DQ ('bin: test\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [105]
        )
      ]
    )
    (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:16777215 arg_word:{(expected)} spids:[126])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: {(DQ ('converted: test version 2\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [129]
        )
      ]
    )
    (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:16777215 arg_word:{(expected)} spids:[150])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: {(DQ ('converted: test\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [153]
        )
      ]
    )
    (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)})
  ]
)