(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:test_description spids:[12])
          op: Equal
          rhs: {(SQ <'.mailmap configurations'>)}
          spids: [12]
        )
      ]
      spids: [12]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.FuncDef
      name: fuzz_blame
      body: 
        (command.BraceGroup
          children: [
            (C {(sed)} 
              {
                (DQ ('\n') ('\t\ts/') ($ VSub_Name '$_x05') ('[0-9a-f][0-9a-f][0-9a-f]/OBJID/g\n') 
                  ('\t\ts/') ($ VSub_Name '$_x05') ('[0-9a-f][0-9a-f]/OBJI/g\n') ('\t\ts/[-0-9]') (Lit_Other '\\') ('{10') 
                  (Lit_Other '\\') ('} [:0-9]') (Lit_Other '\\') ('{8') (Lit_Other '\\') ('} [-+][0-9]') (Lit_Other '\\') ('{4') 
                  (Lit_Other '\\') ('}/DATE/g\n') ('\t')
                )
              } {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [28]
        )
      spids: [23 27]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <'\n'> <'\tcat >contacts <<-\\EOF &&\n'> <'\tA U Thor <author@example.com>\n'> 
          <'\tnick1 <bugs@company.xx>\n'> <'\tEOF\n'> <'\n'> <'\techo one >one &&\n'> <'\tgit add one &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit -m initial &&\n'> <'\techo two >>one &&\n'> <'\tgit add one &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit --author "nick1 <bugs@company.xx>" -m second\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'check-mailmap no arguments'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git check-mailmap\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'check-mailmap arguments'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tA U Thor <author@example.com>\n'> 
          <'\tnick1 <bugs@company.xx>\n'> <'\tEOF\n'> <'\tgit check-mailmap \\\n'> <'\t\t"A U Thor <author@example.com>" \\\n'> 
          <'\t\t"nick1 <bugs@company.xx>" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'check-mailmap --stdin'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tA U Thor <author@example.com>\n'> 
          <'\tnick1 <bugs@company.xx>\n'> <'\tEOF\n'> <'\tgit check-mailmap --stdin <contacts >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'check-mailmap --stdin arguments'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tInternal Guy <bugs@company.xy>\n'> <'\tEOF\n'> 
          <'\tcat <contacts >>expect &&\n'> <'\tgit check-mailmap --stdin "Internal Guy <bugs@company.xy>" \\\n'> <'\t\t<contacts >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'check-mailmap bogus contact'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git check-mailmap bogus\n'>)}
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 179
          stdin_parts: [
            ('A U Thor (1):\n')
            ('      initial\n')
            ('\n')
            ('nick1 (1):\n')
            ('      second\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'No mailmap'>)} 
      {(SQ <'\n'> <'\tgit shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 209
          stdin_parts: [
            ('Repo Guy (1):\n')
            ('      initial\n')
            ('\n')
            ('nick1 (1):\n')
            ('      second\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'default .mailmap'>)} 
      {
        (SQ <'\n'> <'\techo "Repo Guy <author@example.com>" > .mailmap &&\n'> 
          <'\tgit shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 246
          stdin_parts: [
            ('Internal Guy (1):\n')
            ('      second\n')
            ('\n')
            ('Repo Guy (1):\n')
            ('      initial\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'mailmap.file set'>)} 
      {
        (SQ <'\n'> <'\tmkdir -p internal_mailmap &&\n'> 
          <'\techo "Internal Guy <bugs@company.xx>" > internal_mailmap/.mailmap &&\n'> <'\tgit config mailmap.file internal_mailmap/.mailmap &&\n'> <'\tgit shortlog HEAD >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 278
          stdin_parts: [
            ('External Guy (1):\n')
            ('      initial\n')
            ('\n')
            ('Internal Guy (1):\n')
            ('      second\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'mailmap.file override'>)} 
      {
        (SQ <'\n'> <'\techo "External Guy <author@example.com>" >> internal_mailmap/.mailmap &&\n'> 
          <'\tgit config mailmap.file internal_mailmap/.mailmap &&\n'> <'\tgit shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 309
          stdin_parts: [
            ('Repo Guy (1):\n')
            ('      initial\n')
            ('\n')
            ('nick1 (1):\n')
            ('      second\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'mailmap.file non-existent'>)} 
      {
        (SQ <'\n'> <'\trm internal_mailmap/.mailmap &&\n'> <'\trmdir internal_mailmap &&\n'> 
          <'\tgit shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 341
          stdin_parts: [
            ('Internal Guy (1):\n')
            ('      second\n')
            ('\n')
            ('Repo Guy (1):\n')
            ('      initial\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'name entry after email entry'>)} 
      {
        (SQ <'\n'> <'\tmkdir -p internal_mailmap &&\n'> 
          <'\techo "<bugs@company.xy> <bugs@company.xx>" >internal_mailmap/.mailmap &&\n'> <'\techo "Internal Guy <bugs@company.xx>" >>internal_mailmap/.mailmap &&\n'> 
          <'\tgit shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 374
          stdin_parts: [
            ('Internal Guy (1):\n')
            ('      second\n')
            ('\n')
            ('Repo Guy (1):\n')
            ('      initial\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'name entry after email entry, case-insensitive'>)} 
      {
        (SQ <'\n'> <'\tmkdir -p internal_mailmap &&\n'> 
          <'\techo "<bugs@company.xy> <bugs@company.xx>" >internal_mailmap/.mailmap &&\n'> <'\techo "Internal Guy <BUGS@Company.xx>" >>internal_mailmap/.mailmap &&\n'> 
          <'\tgit shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 407
          stdin_parts: [
            ('A U Thor (1):\n')
            ('      initial\n')
            ('\n')
            ('nick1 (1):\n')
            ('      second\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'No mailmap files, but configured'>)} 
      {
        (SQ <'\n'> <'\trm -f .mailmap internal_mailmap/.mailmap &&\n'> 
          <'\tgit shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'setup mailmap blob tests'>)} 
      {
        (SQ <'\n'> <'\tgit checkout -b map &&\n'> <'\ttest_when_finished "git checkout master" &&\n'> 
          <'\tcat >just-bugs <<-\\EOF &&\n'> <'\tBlob Guy <bugs@company.xx>\n'> <'\tEOF\n'> <'\tcat >both <<-\\EOF &&\n'> 
          <'\tBlob Guy <author@example.com>\n'> <'\tBlob Guy <bugs@company.xx>\n'> <'\tEOF\n'> 
          <'\tprintf "Tricky Guy <author@example.com>" >no-newline &&\n'> <'\tgit add just-bugs both no-newline &&\n'> <'\tgit commit -m "my mailmaps" &&\n'> 
          <'\techo "Repo Guy <author@example.com>" >.mailmap &&\n'> <'\techo "Internal Guy <author@example.com>" >internal.map\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'mailmap.blob set'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tBlob Guy (1):\n'> <'\t      second\n'> <'\n'> 
          <'\tRepo Guy (1):\n'> <'\t      initial\n'> <'\n'> <'\tEOF\n'> 
          <'\tgit -c mailmap.blob=map:just-bugs shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'mailmap.blob overrides .mailmap'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tBlob Guy (2):\n'> <'\t      initial\n'> 
          <'\t      second\n'> <'\n'> <'\tEOF\n'> <'\tgit -c mailmap.blob=map:both shortlog HEAD >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'mailmap.file overrides mailmap.blob'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tBlob Guy (1):\n'> <'\t      second\n'> <'\n'> 
          <'\tInternal Guy (1):\n'> <'\t      initial\n'> <'\n'> <'\tEOF\n'> <'\tgit \\\n'> <'\t  -c mailmap.blob=map:both \\\n'> 
          <'\t  -c mailmap.file=internal.map \\\n'> <'\t  shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'mailmap.blob can be missing'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tRepo Guy (1):\n'> <'\t      initial\n'> <'\n'> 
          <'\tnick1 (1):\n'> <'\t      second\n'> <'\n'> <'\tEOF\n'> 
          <'\tgit -c mailmap.blob=map:nonexistent shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'mailmap.blob defaults to off in non-bare repo'>)} 
      {
        (SQ <'\n'> <'\tgit init non-bare &&\n'> <'\t(\n'> <'\t\tcd non-bare &&\n'> 
          <'\t\ttest_commit one .mailmap "Fake Name <author@example.com>" &&\n'> <'\t\techo "     1\tFake Name" >expect &&\n'> <'\t\tgit shortlog -ns HEAD >actual &&\n'> 
          <'\t\ttest_cmp expect actual &&\n'> <'\t\trm .mailmap &&\n'> <'\t\techo "     1\tA U Thor" >expect &&\n'> 
          <'\t\tgit shortlog -ns HEAD >actual &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'mailmap.blob defaults to HEAD:.mailmap in bare repo'>)} 
      {
        (SQ <'\n'> <'\tgit clone --bare non-bare bare &&\n'> <'\t(\n'> <'\t\tcd bare &&\n'> 
          <'\t\techo "     1\tFake Name" >expect &&\n'> <'\t\tgit shortlog -ns HEAD >actual &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'mailmap.blob can handle blobs without trailing newline'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tTricky Guy (1):\n'> <'\t      initial\n'> <'\n'> 
          <'\tnick1 (1):\n'> <'\t      second\n'> <'\n'> <'\tEOF\n'> 
          <'\tgit -c mailmap.blob=map:no-newline shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'cleanup after mailmap.blob tests'>)} 
      {(SQ <'\n'> <'\trm -f .mailmap\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'single-character name'>)} 
      {
        (SQ <'\n'> <'\techo "     1\tA <author@example.com>" >expect &&\n'> 
          <'\techo "     1\tnick1 <bugs@company.xx>" >>expect &&\n'> <'\techo "A <author@example.com>" >.mailmap &&\n'> <'\ttest_when_finished "rm .mailmap" &&\n'> 
          <'\tgit shortlog -es HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'preserve canonical email case'>)} 
      {
        (SQ <'\n'> <'\techo "     1\tA U Thor <AUTHOR@example.com>" >expect &&\n'> 
          <'\techo "     1\tnick1 <bugs@company.xx>" >>expect &&\n'> <'\techo "<AUTHOR@example.com> <author@example.com>" >.mailmap &&\n'> 
          <'\ttest_when_finished "rm .mailmap" &&\n'> <'\tgit shortlog -es HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 669
          stdin_parts: [
            ('A U Thor <author@example.com> (1):\n')
            ('      initial\n')
            ('\n')
            ('CTO <cto@company.xx> (1):\n')
            ('      seventh\n')
            ('\n')
            ('Other Author <other@author.xx> (2):\n')
            ('      third\n')
            ('      fourth\n')
            ('\n')
            ('Santa Claus <santa.claus@northpole.xx> (2):\n')
            ('      fifth\n')
            ('      sixth\n')
            ('\n')
            ('Some Dude <some@dude.xx> (1):\n')
            ('      second\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Shortlog output (complex mapping)'>)} 
      {
        (SQ <'\n'> <'\techo three >>one &&\n'> <'\tgit add one &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit --author "nick2 <bugs@company.xx>" -m third &&\n'> <'\n'> <'\techo four >>one &&\n'> <'\tgit add one &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit --author "nick2 <nick2@company.xx>" -m fourth &&\n'> <'\n'> <'\techo five >>one &&\n'> <'\tgit add one &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit --author "santa <me@company.xx>" -m fifth &&\n'> <'\n'> <'\techo six >>one &&\n'> <'\tgit add one &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit --author "claus <me@company.xx>" -m sixth &&\n'> <'\n'> <'\techo seven >>one &&\n'> <'\tgit add one &&\n'> <'\ttest_tick &&\n'> 
          <'\tgit commit --author "CTO <cto@coompany.xx>" -m seventh &&\n'> <'\n'> <'\tmkdir -p internal_mailmap &&\n'> 
          <'\techo "Committed <committer@example.com>" > internal_mailmap/.mailmap &&\n'> 
          <
'\techo "<cto@company.xx>                       <cto@coompany.xx>" >> internal_mailmap/.mailmap &&\n'
          > 
          <
'\techo "Some Dude <some@dude.xx>         nick1 <bugs@company.xx>" >> internal_mailmap/.mailmap &&\n'
          > 
          <
'\techo "Other Author <other@author.xx>   nick2 <bugs@company.xx>" >> internal_mailmap/.mailmap &&\n'
          > 
          <
'\techo "Other Author <other@author.xx>         <nick2@company.xx>" >> internal_mailmap/.mailmap &&\n'
          > <'\techo "Santa Claus <santa.claus@northpole.xx> <me@company.xx>" >> internal_mailmap/.mailmap &&\n'> 
          <
'\techo "Santa Claus <santa.claus@northpole.xx> <me@company.xx>" >> internal_mailmap/.mailmap &&\n'
          > <'\n'> <'\tgit shortlog -e HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 751
          stdin_parts: [
            ('Author CTO <cto@coompany.xx> maps to CTO <cto@company.xx>\n')
            (
'Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>\n'
            )
            ('\n')
            ('Author claus <me@company.xx> maps to Santa Claus <santa.claus@northpole.xx>\n')
            (
'Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>\n'
            )
            ('\n')
            ('Author santa <me@company.xx> maps to Santa Claus <santa.claus@northpole.xx>\n')
            (
'Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>\n'
            )
            ('\n')
            ('Author nick2 <nick2@company.xx> maps to Other Author <other@author.xx>\n')
            (
'Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>\n'
            )
            ('\n')
            ('Author nick2 <bugs@company.xx> maps to Other Author <other@author.xx>\n')
            (
'Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>\n'
            )
            ('\n')
            ('Author nick1 <bugs@company.xx> maps to Some Dude <some@dude.xx>\n')
            (
'Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>\n'
            )
            ('\n')
            ('Author A U Thor <author@example.com> maps to A U Thor <author@example.com>\n')
            (
'Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Log output (complex mapping)'>)} 
      {
        (SQ <'\n'> 
          <
'\tgit log --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&\n'
          > <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 782
          stdin_parts: [
            ('Author: CTO <cto@company.xx>\n')
            ('Author: Santa Claus <santa.claus@northpole.xx>\n')
            ('Author: Santa Claus <santa.claus@northpole.xx>\n')
            ('Author: Other Author <other@author.xx>\n')
            ('Author: Other Author <other@author.xx>\n')
            ('Author: Some Dude <some@dude.xx>\n')
            ('Author: A U Thor <author@example.com>\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Log output with --use-mailmap'>)} 
      {
        (SQ <'\n'> <'\tgit log --use-mailmap | grep Author >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 813
          stdin_parts: [
            ('Author: CTO <cto@company.xx>\n')
            ('Author: Santa Claus <santa.claus@northpole.xx>\n')
            ('Author: Santa Claus <santa.claus@northpole.xx>\n')
            ('Author: Other Author <other@author.xx>\n')
            ('Author: Other Author <other@author.xx>\n')
            ('Author: Some Dude <some@dude.xx>\n')
            ('Author: A U Thor <author@example.com>\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Log output with log.mailmap'>)} 
      {
        (SQ <'\n'> <'\tgit -c log.mailmap=True log | grep Author >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 839
          stdin_parts: [
            ('Author: Santa Claus <santa.claus@northpole.xx>\n')
            ('Author: Santa Claus <santa.claus@northpole.xx>\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Grep author with --use-mailmap'>)} 
      {
        (SQ <'\n'> <'\tgit log --use-mailmap --author Santa | grep Author >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 864
          stdin_parts: [
            ('Author: Santa Claus <santa.claus@northpole.xx>\n')
            ('Author: Santa Claus <santa.claus@northpole.xx>\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Grep author with log.mailmap'>)} 
      {
        (SQ <'\n'> <'\tgit -c log.mailmap=True log --author Santa | grep Author >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})]
    )
    (C {(test_expect_success)} {(SQ <'Only grep replaced author with --use-mailmap'>)} 
      {
        (SQ <'\n'> <'\tgit log --use-mailmap --author "<cto@coompany.xx>" >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 915
          stdin_parts: [
            ('^OBJI (A U Thor     DATE 1) one\n')
            ('OBJID (Some Dude    DATE 2) two\n')
            ('OBJID (Other Author DATE 3) three\n')
            ('OBJID (Other Author DATE 4) four\n')
            ('OBJID (Santa Claus  DATE 5) five\n')
            ('OBJID (Santa Claus  DATE 6) six\n')
            ('OBJID (CTO          DATE 7) seven\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Blame output (complex mapping)'>)} 
      {
        (SQ <'\n'> <'\tgit blame one >actual &&\n'> <'\tfuzz_blame actual >actual.fuzz &&\n'> 
          <'\ttest_cmp expect actual.fuzz\n'>
        )
      }
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 940
          stdin_parts: [('Some Dude <some@dude.xx>\n')]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'commit --author honors mailmap'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git commit --author "nick" --allow-empty -meight &&\n'> 
          <'\tgit commit --author "Some Dude" --allow-empty -meight &&\n'> <'\tgit show --pretty=format:"%an <%ae>%n" >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)