
In addition to the manual adjustment to let the `linux-gcc` CI job run the test suite with `master` and then with `main`, this patch makes sure that GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME is set in all test scripts that currently rely on the initial branch name being `master by default. To determine which test scripts to mark up, the first step was to force-set the default branch name to `master` in - all test scripts that contain the keyword `master`, - t4211, which expects `t/t4211/history.export` with a hard-coded ref to initialize the default branch, - t5560 because it sources `t/t556x_common` which uses `master`, - t8002 and t8012 because both source `t/annotate-tests.sh` which also uses `master`) This trick was performed by this command: $ sed -i '/^ *\. \.\/\(test-lib\|lib-\(bash\|cvs\|git-svn\)\|gitweb-lib\)\.sh$/i\ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master\ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\ ' $(git grep -l master t/t[0-9]*.sh) \ t/t4211*.sh t/t5560*.sh t/t8002*.sh t/t8012*.sh After that, careful, manual inspection revealed that some of the test scripts containing the needle `master` do not actually rely on a specific default branch name: either they mention `master` only in a comment, or they initialize that branch specificially, or they do not actually refer to the current default branch. Therefore, the aforementioned modification was undone in those test scripts thusly: $ git checkout HEAD -- \ t/t0027-auto-crlf.sh t/t0060-path-utils.sh \ t/t1011-read-tree-sparse-checkout.sh \ t/t1305-config-include.sh t/t1309-early-config.sh \ t/t1402-check-ref-format.sh t/t1450-fsck.sh \ t/t2024-checkout-dwim.sh \ t/t2106-update-index-assume-unchanged.sh \ t/t3040-subprojects-basic.sh t/t3301-notes.sh \ t/t3308-notes-merge.sh t/t3423-rebase-reword.sh \ t/t3436-rebase-more-options.sh \ t/t4015-diff-whitespace.sh t/t4257-am-interactive.sh \ t/t5323-pack-redundant.sh t/t5401-update-hooks.sh \ t/t5511-refspec.sh t/t5526-fetch-submodules.sh \ t/t5529-push-errors.sh t/t5530-upload-pack-error.sh \ t/t5548-push-porcelain.sh \ t/t5552-skipping-fetch-negotiator.sh \ t/t5572-pull-submodule.sh t/t5608-clone-2gb.sh \ t/t5614-clone-submodules-shallow.sh \ t/t7508-status.sh t/t7606-merge-custom.sh \ t/t9302-fast-import-unpack-limit.sh We excluded one set of test scripts in these commands, though: the range of `git p4` tests. The reason? `git p4` stores the (foreign) remote branch in the branch called `p4/master`, which is obviously not the default branch. Manual analysis revealed that only five of these tests actually require a specific default branch name to pass; They were modified thusly: $ sed -i '/^ *\. \.\/lib-git-p4\.sh$/i\ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master\ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\ ' t/t980[0167]*.sh t/t9811*.sh Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
561 lines
14 KiB
Bash
Executable File
561 lines
14 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='.mailmap configurations'
|
|
|
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
|
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
|
|
. ./test-lib.sh
|
|
|
|
fuzz_blame () {
|
|
sed "
|
|
s/$_x05[0-9a-f][0-9a-f][0-9a-f]/OBJID/g
|
|
s/$_x05[0-9a-f][0-9a-f]/OBJI/g
|
|
s/[-0-9]\{10\} [:0-9]\{8\} [-+][0-9]\{4\}/DATE/g
|
|
" "$@"
|
|
}
|
|
|
|
test_expect_success setup '
|
|
cat >contacts <<- EOF &&
|
|
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
|
|
nick1 <bugs@company.xx>
|
|
EOF
|
|
|
|
echo one >one &&
|
|
git add one &&
|
|
test_tick &&
|
|
git commit -m initial &&
|
|
echo two >>one &&
|
|
git add one &&
|
|
test_tick &&
|
|
git commit --author "nick1 <bugs@company.xx>" -m second
|
|
'
|
|
|
|
test_expect_success 'check-mailmap no arguments' '
|
|
test_must_fail git check-mailmap
|
|
'
|
|
|
|
test_expect_success 'check-mailmap arguments' '
|
|
cat >expect <<- EOF &&
|
|
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
|
|
nick1 <bugs@company.xx>
|
|
EOF
|
|
git check-mailmap \
|
|
"$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" \
|
|
"nick1 <bugs@company.xx>" >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'check-mailmap --stdin' '
|
|
cat >expect <<- EOF &&
|
|
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
|
|
nick1 <bugs@company.xx>
|
|
EOF
|
|
git check-mailmap --stdin <contacts >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'check-mailmap --stdin arguments' '
|
|
cat >expect <<-\EOF &&
|
|
Internal Guy <bugs@company.xy>
|
|
EOF
|
|
cat <contacts >>expect &&
|
|
git check-mailmap --stdin "Internal Guy <bugs@company.xy>" \
|
|
<contacts >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'check-mailmap bogus contact' '
|
|
test_must_fail git check-mailmap bogus
|
|
'
|
|
|
|
cat >expect << EOF
|
|
$GIT_AUTHOR_NAME (1):
|
|
initial
|
|
|
|
nick1 (1):
|
|
second
|
|
|
|
EOF
|
|
|
|
test_expect_success 'No mailmap' '
|
|
git shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect <<\EOF
|
|
Repo Guy (1):
|
|
initial
|
|
|
|
nick1 (1):
|
|
second
|
|
|
|
EOF
|
|
|
|
test_expect_success 'default .mailmap' '
|
|
echo "Repo Guy <$GIT_AUTHOR_EMAIL>" > .mailmap &&
|
|
git shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
# Using a mailmap file in a subdirectory of the repo here, but
|
|
# could just as well have been a file outside of the repository
|
|
cat >expect <<\EOF
|
|
Internal Guy (1):
|
|
second
|
|
|
|
Repo Guy (1):
|
|
initial
|
|
|
|
EOF
|
|
test_expect_success 'mailmap.file set' '
|
|
mkdir -p internal_mailmap &&
|
|
echo "Internal Guy <bugs@company.xx>" > internal_mailmap/.mailmap &&
|
|
git config mailmap.file internal_mailmap/.mailmap &&
|
|
git shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect <<\EOF
|
|
External Guy (1):
|
|
initial
|
|
|
|
Internal Guy (1):
|
|
second
|
|
|
|
EOF
|
|
test_expect_success 'mailmap.file override' '
|
|
echo "External Guy <$GIT_AUTHOR_EMAIL>" >> internal_mailmap/.mailmap &&
|
|
git config mailmap.file internal_mailmap/.mailmap &&
|
|
git shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect <<\EOF
|
|
Repo Guy (1):
|
|
initial
|
|
|
|
nick1 (1):
|
|
second
|
|
|
|
EOF
|
|
|
|
test_expect_success 'mailmap.file non-existent' '
|
|
rm internal_mailmap/.mailmap &&
|
|
rmdir internal_mailmap &&
|
|
git shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect <<\EOF
|
|
Internal Guy (1):
|
|
second
|
|
|
|
Repo Guy (1):
|
|
initial
|
|
|
|
EOF
|
|
|
|
test_expect_success 'name entry after email entry' '
|
|
mkdir -p internal_mailmap &&
|
|
echo "<bugs@company.xy> <bugs@company.xx>" >internal_mailmap/.mailmap &&
|
|
echo "Internal Guy <bugs@company.xx>" >>internal_mailmap/.mailmap &&
|
|
git shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect <<\EOF
|
|
Internal Guy (1):
|
|
second
|
|
|
|
Repo Guy (1):
|
|
initial
|
|
|
|
EOF
|
|
|
|
test_expect_success 'name entry after email entry, case-insensitive' '
|
|
mkdir -p internal_mailmap &&
|
|
echo "<bugs@company.xy> <bugs@company.xx>" >internal_mailmap/.mailmap &&
|
|
echo "Internal Guy <BUGS@Company.xx>" >>internal_mailmap/.mailmap &&
|
|
git shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect << EOF
|
|
$GIT_AUTHOR_NAME (1):
|
|
initial
|
|
|
|
nick1 (1):
|
|
second
|
|
|
|
EOF
|
|
test_expect_success 'No mailmap files, but configured' '
|
|
rm -f .mailmap internal_mailmap/.mailmap &&
|
|
git shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'setup mailmap blob tests' '
|
|
git checkout -b map &&
|
|
test_when_finished "git checkout master" &&
|
|
cat >just-bugs <<- EOF &&
|
|
Blob Guy <bugs@company.xx>
|
|
EOF
|
|
cat >both <<- EOF &&
|
|
Blob Guy <$GIT_AUTHOR_EMAIL>
|
|
Blob Guy <bugs@company.xx>
|
|
EOF
|
|
printf "Tricky Guy <$GIT_AUTHOR_EMAIL>" >no-newline &&
|
|
git add just-bugs both no-newline &&
|
|
git commit -m "my mailmaps" &&
|
|
echo "Repo Guy <$GIT_AUTHOR_EMAIL>" >.mailmap &&
|
|
echo "Internal Guy <$GIT_AUTHOR_EMAIL>" >internal.map
|
|
'
|
|
|
|
test_expect_success 'mailmap.blob set' '
|
|
cat >expect <<-\EOF &&
|
|
Blob Guy (1):
|
|
second
|
|
|
|
Repo Guy (1):
|
|
initial
|
|
|
|
EOF
|
|
git -c mailmap.blob=map:just-bugs shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'mailmap.blob overrides .mailmap' '
|
|
cat >expect <<-\EOF &&
|
|
Blob Guy (2):
|
|
initial
|
|
second
|
|
|
|
EOF
|
|
git -c mailmap.blob=map:both shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'mailmap.file overrides mailmap.blob' '
|
|
cat >expect <<-\EOF &&
|
|
Blob Guy (1):
|
|
second
|
|
|
|
Internal Guy (1):
|
|
initial
|
|
|
|
EOF
|
|
git \
|
|
-c mailmap.blob=map:both \
|
|
-c mailmap.file=internal.map \
|
|
shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'mailmap.blob can be missing' '
|
|
cat >expect <<-\EOF &&
|
|
Repo Guy (1):
|
|
initial
|
|
|
|
nick1 (1):
|
|
second
|
|
|
|
EOF
|
|
git -c mailmap.blob=map:nonexistent shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'mailmap.blob defaults to off in non-bare repo' '
|
|
git init non-bare &&
|
|
(
|
|
cd non-bare &&
|
|
test_commit one .mailmap "Fake Name <$GIT_AUTHOR_EMAIL>" &&
|
|
echo " 1 Fake Name" >expect &&
|
|
git shortlog -ns HEAD >actual &&
|
|
test_cmp expect actual &&
|
|
rm .mailmap &&
|
|
echo " 1 $GIT_AUTHOR_NAME" >expect &&
|
|
git shortlog -ns HEAD >actual &&
|
|
test_cmp expect actual
|
|
)
|
|
'
|
|
|
|
test_expect_success 'mailmap.blob defaults to HEAD:.mailmap in bare repo' '
|
|
git clone --bare non-bare bare &&
|
|
(
|
|
cd bare &&
|
|
echo " 1 Fake Name" >expect &&
|
|
git shortlog -ns HEAD >actual &&
|
|
test_cmp expect actual
|
|
)
|
|
'
|
|
|
|
test_expect_success 'mailmap.blob can handle blobs without trailing newline' '
|
|
cat >expect <<-\EOF &&
|
|
Tricky Guy (1):
|
|
initial
|
|
|
|
nick1 (1):
|
|
second
|
|
|
|
EOF
|
|
git -c mailmap.blob=map:no-newline shortlog HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'cleanup after mailmap.blob tests' '
|
|
rm -f .mailmap
|
|
'
|
|
|
|
test_expect_success 'single-character name' '
|
|
echo " 1 A <$GIT_AUTHOR_EMAIL>" >expect &&
|
|
echo " 1 nick1 <bugs@company.xx>" >>expect &&
|
|
echo "A <$GIT_AUTHOR_EMAIL>" >.mailmap &&
|
|
test_when_finished "rm .mailmap" &&
|
|
git shortlog -es HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'preserve canonical email case' '
|
|
echo " 1 $GIT_AUTHOR_NAME <AUTHOR@example.com>" >expect &&
|
|
echo " 1 nick1 <bugs@company.xx>" >>expect &&
|
|
echo "<AUTHOR@example.com> <$GIT_AUTHOR_EMAIL>" >.mailmap &&
|
|
test_when_finished "rm .mailmap" &&
|
|
git shortlog -es HEAD >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
# Extended mailmap configurations should give us the following output for shortlog
|
|
cat >expect << EOF
|
|
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> (1):
|
|
initial
|
|
|
|
CTO <cto@company.xx> (1):
|
|
seventh
|
|
|
|
Other Author <other@author.xx> (2):
|
|
third
|
|
fourth
|
|
|
|
Santa Claus <santa.claus@northpole.xx> (2):
|
|
fifth
|
|
sixth
|
|
|
|
Some Dude <some@dude.xx> (1):
|
|
second
|
|
|
|
EOF
|
|
|
|
test_expect_success 'Shortlog output (complex mapping)' '
|
|
echo three >>one &&
|
|
git add one &&
|
|
test_tick &&
|
|
git commit --author "nick2 <bugs@company.xx>" -m third &&
|
|
|
|
echo four >>one &&
|
|
git add one &&
|
|
test_tick &&
|
|
git commit --author "nick2 <nick2@company.xx>" -m fourth &&
|
|
|
|
echo five >>one &&
|
|
git add one &&
|
|
test_tick &&
|
|
git commit --author "santa <me@company.xx>" -m fifth &&
|
|
|
|
echo six >>one &&
|
|
git add one &&
|
|
test_tick &&
|
|
git commit --author "claus <me@company.xx>" -m sixth &&
|
|
|
|
echo seven >>one &&
|
|
git add one &&
|
|
test_tick &&
|
|
git commit --author "CTO <cto@coompany.xx>" -m seventh &&
|
|
|
|
mkdir -p internal_mailmap &&
|
|
echo "Committed <$GIT_COMMITTER_EMAIL>" > internal_mailmap/.mailmap &&
|
|
echo "<cto@company.xx> <cto@coompany.xx>" >> internal_mailmap/.mailmap &&
|
|
echo "Some Dude <some@dude.xx> nick1 <bugs@company.xx>" >> internal_mailmap/.mailmap &&
|
|
echo "Other Author <other@author.xx> nick2 <bugs@company.xx>" >> internal_mailmap/.mailmap &&
|
|
echo "Other Author <other@author.xx> <nick2@company.xx>" >> internal_mailmap/.mailmap &&
|
|
echo "Santa Claus <santa.claus@northpole.xx> <me@company.xx>" >> internal_mailmap/.mailmap &&
|
|
echo "Santa Claus <santa.claus@northpole.xx> <me@company.xx>" >> internal_mailmap/.mailmap &&
|
|
|
|
git shortlog -e HEAD >actual &&
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
# git log with --pretty format which uses the name and email mailmap placemarkers
|
|
cat >expect << EOF
|
|
Author CTO <cto@coompany.xx> maps to CTO <cto@company.xx>
|
|
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
|
|
|
|
Author claus <me@company.xx> maps to Santa Claus <santa.claus@northpole.xx>
|
|
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
|
|
|
|
Author santa <me@company.xx> maps to Santa Claus <santa.claus@northpole.xx>
|
|
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
|
|
|
|
Author nick2 <nick2@company.xx> maps to Other Author <other@author.xx>
|
|
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
|
|
|
|
Author nick2 <bugs@company.xx> maps to Other Author <other@author.xx>
|
|
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
|
|
|
|
Author nick1 <bugs@company.xx> maps to Some Dude <some@dude.xx>
|
|
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
|
|
|
|
Author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> maps to $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
|
|
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
|
|
EOF
|
|
|
|
test_expect_success 'Log output (complex mapping)' '
|
|
git log --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect << EOF
|
|
Author email cto@coompany.xx has local-part cto
|
|
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
|
|
|
Author email me@company.xx has local-part me
|
|
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
|
|
|
Author email me@company.xx has local-part me
|
|
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
|
|
|
Author email nick2@company.xx has local-part nick2
|
|
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
|
|
|
Author email bugs@company.xx has local-part bugs
|
|
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
|
|
|
Author email bugs@company.xx has local-part bugs
|
|
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
|
|
|
Author email author@example.com has local-part author
|
|
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
|
|
EOF
|
|
|
|
test_expect_success 'Log output (local-part email address)' '
|
|
git log --pretty=format:"Author email %ae has local-part %al%nCommitter email %ce has local-part %cl%n" >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect << EOF
|
|
Author: CTO <cto@company.xx>
|
|
Author: Santa Claus <santa.claus@northpole.xx>
|
|
Author: Santa Claus <santa.claus@northpole.xx>
|
|
Author: Other Author <other@author.xx>
|
|
Author: Other Author <other@author.xx>
|
|
Author: Some Dude <some@dude.xx>
|
|
Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
|
|
EOF
|
|
|
|
test_expect_success 'Log output with --use-mailmap' '
|
|
git log --use-mailmap | grep Author >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect << EOF
|
|
Author: CTO <cto@company.xx>
|
|
Author: Santa Claus <santa.claus@northpole.xx>
|
|
Author: Santa Claus <santa.claus@northpole.xx>
|
|
Author: Other Author <other@author.xx>
|
|
Author: Other Author <other@author.xx>
|
|
Author: Some Dude <some@dude.xx>
|
|
Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
|
|
EOF
|
|
|
|
test_expect_success 'Log output with log.mailmap' '
|
|
git -c log.mailmap=True log | grep Author >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'log.mailmap=false disables mailmap' '
|
|
cat >expect <<- EOF &&
|
|
Author: CTO <cto@coompany.xx>
|
|
Author: claus <me@company.xx>
|
|
Author: santa <me@company.xx>
|
|
Author: nick2 <nick2@company.xx>
|
|
Author: nick2 <bugs@company.xx>
|
|
Author: nick1 <bugs@company.xx>
|
|
Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
|
|
EOF
|
|
git -c log.mailmap=False log | grep Author > actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success '--no-use-mailmap disables mailmap' '
|
|
cat >expect <<- EOF &&
|
|
Author: CTO <cto@coompany.xx>
|
|
Author: claus <me@company.xx>
|
|
Author: santa <me@company.xx>
|
|
Author: nick2 <nick2@company.xx>
|
|
Author: nick2 <bugs@company.xx>
|
|
Author: nick1 <bugs@company.xx>
|
|
Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
|
|
EOF
|
|
git log --no-use-mailmap | grep Author > actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
cat >expect <<\EOF
|
|
Author: Santa Claus <santa.claus@northpole.xx>
|
|
Author: Santa Claus <santa.claus@northpole.xx>
|
|
EOF
|
|
|
|
test_expect_success 'Grep author with --use-mailmap' '
|
|
git log --use-mailmap --author Santa | grep Author >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
cat >expect <<\EOF
|
|
Author: Santa Claus <santa.claus@northpole.xx>
|
|
Author: Santa Claus <santa.claus@northpole.xx>
|
|
EOF
|
|
|
|
test_expect_success 'Grep author with log.mailmap' '
|
|
git -c log.mailmap=True log --author Santa | grep Author >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'log.mailmap is true by default these days' '
|
|
git log --author Santa | grep Author >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'Only grep replaced author with --use-mailmap' '
|
|
git log --use-mailmap --author "<cto@coompany.xx>" >actual &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
# git blame
|
|
cat >expect <<EOF
|
|
^OBJI ($GIT_AUTHOR_NAME DATE 1) one
|
|
OBJID (Some Dude DATE 2) two
|
|
OBJID (Other Author DATE 3) three
|
|
OBJID (Other Author DATE 4) four
|
|
OBJID (Santa Claus DATE 5) five
|
|
OBJID (Santa Claus DATE 6) six
|
|
OBJID (CTO DATE 7) seven
|
|
EOF
|
|
test_expect_success 'Blame output (complex mapping)' '
|
|
git blame one >actual &&
|
|
fuzz_blame actual >actual.fuzz &&
|
|
test_cmp expect actual.fuzz
|
|
'
|
|
|
|
cat >expect <<\EOF
|
|
Some Dude <some@dude.xx>
|
|
EOF
|
|
|
|
test_expect_success 'commit --author honors mailmap' '
|
|
test_must_fail git commit --author "nick" --allow-empty -meight &&
|
|
git commit --author "Some Dude" --allow-empty -meight &&
|
|
git show --pretty=format:"%an <%ae>%n" >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|