(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'.mailmap configurations'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.ShFunction
      name: fuzz_blame
      body: 
        (BraceGroup
          children: [
            (C {<sed>} 
              {
                (DQ <'\n'> <'\t\ts/'> ($ Id.VSub_DollarName '$_x05') 
                  <'[0-9a-f][0-9a-f][0-9a-f]/OBJID/g\n'> <'\t\ts/'> ($ Id.VSub_DollarName '$_x05') <'[0-9a-f][0-9a-f]/OBJI/g\n'> <'\t\ts/[-0-9]'> 
                  <Id.Lit_BadBackslash '\\'> <'{10'> <Id.Lit_BadBackslash '\\'> <'} [:0-9]'> <Id.Lit_BadBackslash '\\'> <'{8'> 
                  <Id.Lit_BadBackslash '\\'> <'} [-+][0-9]'> <Id.Lit_BadBackslash '\\'> <'{4'> <Id.Lit_BadBackslash '\\'> <'}/DATE/g\n'> <'\t'>
                )
              } {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 171
              stdin_parts: [
                <'A U Thor (1):\n'>
                <'      initial\n'>
                <'\n'>
                <'nick1 (1):\n'>
                <'      second\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'No mailmap'>)} 
      {(SQ <'\n'> <'\tgit shortlog HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'>)}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 201
              stdin_parts: [
                <'Repo Guy (1):\n'>
                <'      initial\n'>
                <'\n'>
                <'nick1 (1):\n'>
                <'      second\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 238
              stdin_parts: [
                <'Internal Guy (1):\n'>
                <'      second\n'>
                <'\n'>
                <'Repo Guy (1):\n'>
                <'      initial\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 270
              stdin_parts: [
                <'External Guy (1):\n'>
                <'      initial\n'>
                <'\n'>
                <'Internal Guy (1):\n'>
                <'      second\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 301
              stdin_parts: [
                <'Repo Guy (1):\n'>
                <'      initial\n'>
                <'\n'>
                <'nick1 (1):\n'>
                <'      second\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 333
              stdin_parts: [
                <'Internal Guy (1):\n'>
                <'      second\n'>
                <'\n'>
                <'Repo Guy (1):\n'>
                <'      initial\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 366
              stdin_parts: [
                <'Internal Guy (1):\n'>
                <'      second\n'>
                <'\n'>
                <'Repo Guy (1):\n'>
                <'      initial\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 399
              stdin_parts: [
                <'A U Thor (1):\n'>
                <'      initial\n'>
                <'\n'>
                <'nick1 (1):\n'>
                <'      second\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 661
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 743
              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'
                >
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 774
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 805
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 831
              stdin_parts: [
                <'Author: Santa Claus <santa.claus@northpole.xx>\n'>
                <'Author: Santa Claus <santa.claus@northpole.xx>\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 856
              stdin_parts: [
                <'Author: Santa Claus <santa.claus@northpole.xx>\n'>
                <'Author: Santa Claus <santa.claus@northpole.xx>\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})]
      do_fork: F
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 907
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 932
              stdin_parts: [<'Some Dude <some@dude.xx>\n'>]
            )
        )
      ]
      do_fork: T
    )
    (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>})
  ]
)