t5503: simplify setup of test which exercises failure of backfill

In the testcase to exercise backfilling of tags for fetches we evoke a
failure of the backfilling mechanism by creating a reference that later
on causes a D/F conflict. Because the assumption was that git-fetch(1)
would notice the D/F conflict early on this conflicting reference was
created via the reference-transaction hook just when we were about to
write the backfilled tag. As it turns out though this is not the case,
and the fetch fails in the same way when we create the conflicting ref
up front.

Simplify the test setup creating the reference up front, which allows us
to get rid of the hook script.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt 2022-03-03 08:20:05 +01:00 committed by Junio C Hamano
parent 583bc41923
commit de004e848a

View File

@ -212,21 +212,11 @@ test_expect_success 'atomic fetch with backfill should use single transaction' '
test_expect_success 'backfill failure causes command to fail' ' test_expect_success 'backfill failure causes command to fail' '
git init clone5 && git init clone5 &&
write_script clone5/.git/hooks/reference-transaction <<-EOF && # Create a tag that is nested below the tag we are about to fetch via
while read oldrev newrev reference # the backfill mechanism. This causes a D/F conflict when backfilling
do # and should thus cause the command to fail.
if test "\$reference" = refs/tags/tag1 empty_blob=$(git -C clone5 hash-object -w --stdin </dev/null) &&
then git -C clone5 update-ref refs/tags/tag1/nested $empty_blob &&
# Create a nested tag below the actual tag we
# wanted to write, which causes a D/F conflict
# later when we want to commit refs/tags/tag1.
# We cannot just `exit 1` here given that this
# would cause us to die immediately.
git update-ref refs/tags/tag1/nested $B
exit \$!
fi
done
EOF
test_must_fail git -C clone5 fetch .. $B:refs/heads/something && test_must_fail git -C clone5 fetch .. $B:refs/heads/something &&
test $B = $(git -C clone5 rev-parse --verify refs/heads/something) && test $B = $(git -C clone5 rev-parse --verify refs/heads/something) &&