(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git cat-file textconv support'>)}
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(helper)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(SQ <EOF>)}
          here_end_span_id: 27
          stdin_parts: [
            ('#!/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')
          ]
        )
      ]
    )
    (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'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 63
          stdin_parts: [('bin: test version 2\n')]
        )
      ]
    )
    (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'>)}
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 115
          stdin_parts: [('bin: test\n')]
        )
      ]
    )
    (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'>)}
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 140
          stdin_parts: [('converted: test version 2\n')]
        )
      ]
    )
    (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'>)
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 165
          stdin_parts: [('converted: test\n')]
        )
      ]
    )
    (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)})
  ]
)