(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>}) ] )