mailmap tests: improve --stdin tests

The --stdin tests setup the "contact" file in the main setup, let's
instead set it up in the test that uses it.

Also refactor the first test so it's obvious that the point of it is
that "check-mailmap" will spew its input as-is when given no
argument. For that one we can just use the "expect" file as-is.

Also add tests for how other "--stdin" cases are handled, e.g. one
where we actually do a mapping.

For the rest of --stdin testing we just assume we're going to get the
same output. We could follow-up and make sure everything's
round-tripped through both --stdin and the file/blob backends, but I
don't think there's much point in that.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Ævar Arnfjörð Bjarmason 2021-01-12 21:17:51 +01:00 committed by Junio C Hamano
parent e9931ace4f
commit 1db421ab85

View File

@ -13,11 +13,6 @@ fuzz_blame () {
}
test_expect_success 'setup commits and contacts file' '
cat >contacts <<-EOF &&
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
nick1 <bugs@company.xx>
EOF
echo one >one &&
git add one &&
test_tick &&
@ -48,24 +43,53 @@ test_expect_success 'check-mailmap --stdin' '
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
nick1 <bugs@company.xx>
EOF
git check-mailmap --stdin <contacts >actual &&
git check-mailmap --stdin <expect >actual &&
test_cmp expect actual
'
test_expect_success 'check-mailmap --stdin arguments' '
test_expect_success 'check-mailmap --stdin arguments: no mapping' '
test_when_finished "rm contacts" &&
cat >contacts <<-EOF &&
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
nick1 <bugs@company.xx>
EOF
cat >expect <<-\EOF &&
Internal Guy <bugs@company.xy>
EOF
cat <contacts >>expect &&
cat contacts >>expect &&
git check-mailmap --stdin "Internal Guy <bugs@company.xy>" \
<contacts >actual &&
test_cmp expect actual
'
test_expect_success 'check-mailmap --stdin arguments: mapping' '
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-EOF &&
New Name <$GIT_AUTHOR_EMAIL>
EOF
cat >stdin <<-EOF &&
Old Name <$GIT_AUTHOR_EMAIL>
EOF
cp .mailmap expect &&
git check-mailmap --stdin <stdin >actual &&
test_cmp expect actual &&
cat .mailmap >>expect &&
git check-mailmap --stdin "Another Old Name <$GIT_AUTHOR_EMAIL>" \
<stdin >actual &&
test_cmp expect actual
'
test_expect_success 'check-mailmap bogus contact' '
test_must_fail git check-mailmap bogus
'
test_expect_success 'check-mailmap bogus contact --stdin' '
test_must_fail git check-mailmap --stdin bogus </dev/null
'
test_expect_success 'No mailmap' '
cat >expect <<-EOF &&
$GIT_AUTHOR_NAME (1):