t / t4203-mailmap.shon commit Merge branch 'maint' (55524fc)
   1#!/bin/sh
   2
   3test_description='.mailmap configurations'
   4
   5. ./test-lib.sh
   6
   7test_expect_success setup '
   8        echo one >one &&
   9        git add one &&
  10        test_tick &&
  11        git commit -m initial &&
  12        echo two >>one &&
  13        git add one &&
  14        git commit --author "nick1 <bugs@company.xx>" -m second
  15'
  16
  17cat >expect <<\EOF
  18A U Thor (1):
  19      initial
  20
  21nick1 (1):
  22      second
  23
  24EOF
  25
  26test_expect_success 'No mailmap' '
  27        git shortlog HEAD >actual &&
  28        test_cmp expect actual
  29'
  30
  31cat >expect <<\EOF
  32Repo Guy (1):
  33      initial
  34
  35nick1 (1):
  36      second
  37
  38EOF
  39
  40test_expect_success 'default .mailmap' '
  41        echo "Repo Guy <author@example.com>" > .mailmap &&
  42        git shortlog HEAD >actual &&
  43        test_cmp expect actual
  44'
  45
  46# Using a mailmap file in a subdirectory of the repo here, but
  47# could just as well have been a file outside of the repository
  48cat >expect <<\EOF
  49Internal Guy (1):
  50      second
  51
  52Repo Guy (1):
  53      initial
  54
  55EOF
  56test_expect_success 'mailmap.file set' '
  57        mkdir internal_mailmap &&
  58        echo "Internal Guy <bugs@company.xx>" > internal_mailmap/.mailmap &&
  59        git config mailmap.file internal_mailmap/.mailmap &&
  60        git shortlog HEAD >actual &&
  61        test_cmp expect actual
  62'
  63
  64cat >expect <<\EOF
  65External Guy (1):
  66      initial
  67
  68Internal Guy (1):
  69      second
  70
  71EOF
  72test_expect_success 'mailmap.file override' '
  73        echo "External Guy <author@example.com>" >> internal_mailmap/.mailmap &&
  74        git config mailmap.file internal_mailmap/.mailmap &&
  75        git shortlog HEAD >actual &&
  76        test_cmp expect actual
  77'
  78
  79cat >expect <<\EOF
  80Repo Guy (1):
  81      initial
  82
  83nick1 (1):
  84      second
  85
  86EOF
  87
  88test_expect_success 'mailmap.file non-existant' '
  89        rm internal_mailmap/.mailmap &&
  90        rmdir internal_mailmap &&
  91        git shortlog HEAD >actual &&
  92        test_cmp expect actual
  93'
  94
  95cat >expect <<\EOF
  96A U Thor (1):
  97      initial
  98
  99nick1 (1):
 100      second
 101
 102EOF
 103test_expect_success 'No mailmap files, but configured' '
 104        rm .mailmap &&
 105        git shortlog HEAD >actual &&
 106        test_cmp expect actual
 107'
 108
 109# Extended mailmap configurations should give us the following output for shortlog
 110cat >expect <<\EOF
 111A U Thor <author@example.com> (1):
 112      initial
 113
 114CTO <cto@company.xx> (1):
 115      seventh
 116
 117Other Author <other@author.xx> (2):
 118      third
 119      fourth
 120
 121Santa Claus <santa.claus@northpole.xx> (2):
 122      fifth
 123      sixth
 124
 125Some Dude <some@dude.xx> (1):
 126      second
 127
 128EOF
 129
 130test_expect_success 'Shortlog output (complex mapping)' '
 131        echo three >>one &&
 132        git add one &&
 133        test_tick &&
 134        git commit --author "nick2 <bugs@company.xx>" -m third &&
 135
 136        echo four >>one &&
 137        git add one &&
 138        test_tick &&
 139        git commit --author "nick2 <nick2@company.xx>" -m fourth &&
 140
 141        echo five >>one &&
 142        git add one &&
 143        test_tick &&
 144        git commit --author "santa <me@company.xx>" -m fifth &&
 145
 146        echo six >>one &&
 147        git add one &&
 148        test_tick &&
 149        git commit --author "claus <me@company.xx>" -m sixth &&
 150
 151        echo seven >>one &&
 152        git add one &&
 153        test_tick &&
 154        git commit --author "CTO <cto@coompany.xx>" -m seventh &&
 155
 156        mkdir internal_mailmap &&
 157        echo "Committed <committer@example.com>" > internal_mailmap/.mailmap &&
 158        echo "<cto@company.xx>                       <cto@coompany.xx>" >> internal_mailmap/.mailmap &&
 159        echo "Some Dude <some@dude.xx>         nick1 <bugs@company.xx>" >> internal_mailmap/.mailmap &&
 160        echo "Other Author <other@author.xx>   nick2 <bugs@company.xx>" >> internal_mailmap/.mailmap &&
 161        echo "Other Author <other@author.xx>         <nick2@company.xx>" >> internal_mailmap/.mailmap &&
 162        echo "Santa Claus <santa.claus@northpole.xx> <me@company.xx>" >> internal_mailmap/.mailmap &&
 163        echo "Santa Claus <santa.claus@northpole.xx> <me@company.xx>" >> internal_mailmap/.mailmap &&
 164
 165        git shortlog -e HEAD >actual &&
 166        test_cmp expect actual
 167
 168'
 169
 170# git log with --pretty format which uses the name and email mailmap placemarkers
 171cat >expect <<\EOF
 172Author CTO <cto@coompany.xx> maps to CTO <cto@company.xx>
 173Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>
 174
 175Author claus <me@company.xx> maps to Santa Claus <santa.claus@northpole.xx>
 176Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>
 177
 178Author santa <me@company.xx> maps to Santa Claus <santa.claus@northpole.xx>
 179Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>
 180
 181Author nick2 <nick2@company.xx> maps to Other Author <other@author.xx>
 182Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>
 183
 184Author nick2 <bugs@company.xx> maps to Other Author <other@author.xx>
 185Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>
 186
 187Author nick1 <bugs@company.xx> maps to Some Dude <some@dude.xx>
 188Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>
 189
 190Author A U Thor <author@example.com> maps to A U Thor <author@example.com>
 191Committer C O Mitter <committer@example.com> maps to Committed <committer@example.com>
 192EOF
 193
 194test_expect_success 'Log output (complex mapping)' '
 195        git log --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
 196        test_cmp expect actual
 197'
 198
 199# git blame
 200cat >expect <<\EOF
 201^3a2fdcb (A U Thor     2005-04-07 15:13:13 -0700 1) one
 2027de6f99b (Some Dude    2005-04-07 15:13:13 -0700 2) two
 2035815879d (Other Author 2005-04-07 15:14:13 -0700 3) three
 204ff859d96 (Other Author 2005-04-07 15:15:13 -0700 4) four
 2055ab6d4fa (Santa Claus  2005-04-07 15:16:13 -0700 5) five
 20638a42d8b (Santa Claus  2005-04-07 15:17:13 -0700 6) six
 2078ddc0386 (CTO          2005-04-07 15:18:13 -0700 7) seven
 208EOF
 209
 210test_expect_success 'Blame output (complex mapping)' '
 211        git blame one >actual &&
 212        test_cmp expect actual
 213'
 214
 215test_done