(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'git blame encoding conversion' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/t8005/utf8.txt)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/t8005/euc-japan.txt)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/t8005/sjis.txt)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup the repository' span_id:39))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\t# Create the file\n' span_id:44) (Token id:Id.Lit_Chars val:'\techo "UTF-8 LINE" > file &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:46) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit --author "$UTF8_NAME <utf8@localhost>" -m "$UTF8_MSG" &&\n'
            span_id: 47
          ) (Token id:Id.Lit_Chars val:'\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\techo "EUC-JAPAN LINE" >> file &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:50) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config i18n.commitencoding eucJP &&\n'
            span_id: 51
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit commit --author "$EUC_JAPAN_NAME <euc-japan@localhost>" -m "$EUC_JAPAN_MSG" &&\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\n' span_id:53) 
          (Token id:Id.Lit_Chars val:'\techo "SJIS LINE" >> file &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:55) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config i18n.commitencoding SJIS &&\n'
            span_id: 56
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit --author "$SJIS_NAME <sjis@localhost>" -m "$SJIS_MSG"\n'
            span_id: 57
          )
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:63)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:66)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 88
          stdin_parts: [
            ('author ')
            ($ Id.VSub_DollarName '$SJIS_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$SJIS_MSG')
            ('\n')
            ('author ')
            ($ Id.VSub_DollarName '$SJIS_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$SJIS_MSG')
            ('\n')
            ('author ')
            ($ Id.VSub_DollarName '$SJIS_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$SJIS_MSG')
            ('\n')
          ]
        )
      ]
    )
    (command.ShFunction
      name: filter_author_summary
      body: 
        (command.BraceGroup
          children: [
            (C {(sed)} {(-n)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^author /p' span_id:105))} {(-e)} 
              {(SQ (Token id:Id.Lit_Chars val:'/^summary /p' span_id:111))} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame respects i18n.commitencoding' span_id:129))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:133) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame --incremental file >output &&\n'
            span_id: 134
          ) (Token id:Id.Lit_Chars val:'\tfilter_author_summary output >actual &&\n' span_id:135) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:136)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:142)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:145)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 167
          stdin_parts: [
            ('author ')
            ($ Id.VSub_DollarName '$EUC_JAPAN_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$EUC_JAPAN_MSG')
            ('\n')
            ('author ')
            ($ Id.VSub_DollarName '$EUC_JAPAN_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$EUC_JAPAN_MSG')
            ('\n')
            ('author ')
            ($ Id.VSub_DollarName '$EUC_JAPAN_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$EUC_JAPAN_MSG')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame respects i18n.logoutputencoding' span_id:177))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:181) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config i18n.logoutputencoding eucJP &&\n'
            span_id: 182
          ) (Token id:Id.Lit_Chars val:'\tgit blame --incremental file >output &&\n' span_id:183) 
          (Token
            id: Id.Lit_Chars
            val: '\tfilter_author_summary output >actual &&\n'
            span_id: 184
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:185)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:191)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:194)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 216
          stdin_parts: [
            ('author ')
            ($ Id.VSub_DollarName '$UTF8_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$UTF8_MSG')
            ('\n')
            ('author ')
            ($ Id.VSub_DollarName '$UTF8_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$UTF8_MSG')
            ('\n')
            ('author ')
            ($ Id.VSub_DollarName '$UTF8_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$UTF8_MSG')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame respects --encoding=UTF-8' span_id:226))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:230) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame --incremental --encoding=UTF-8 file >output &&\n'
            span_id: 231
          ) (Token id:Id.Lit_Chars val:'\tfilter_author_summary output >actual &&\n' span_id:232) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:233)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:239)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:242)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 264
          stdin_parts: [
            ('author ')
            ($ Id.VSub_DollarName '$SJIS_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$SJIS_MSG')
            ('\n')
            ('author ')
            ($ Id.VSub_DollarName '$EUC_JAPAN_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$EUC_JAPAN_MSG')
            ('\n')
            ('author ')
            ($ Id.VSub_DollarName '$UTF8_NAME')
            ('\n')
            ('summary ')
            ($ Id.VSub_DollarName '$UTF8_MSG')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame respects --encoding=none' span_id:274))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:278) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame --incremental --encoding=none file >output &&\n'
            span_id: 279
          ) (Token id:Id.Lit_Chars val:'\tfilter_author_summary output >actual &&\n' span_id:280) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:281)
        )
      }
    )
    (C {(test_done)})
  ]
)