git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>
Subject: [PATCH] t5503: simplify setup of test which exercises failure of backfill
Date: Thu, 3 Mar 2022 08:20:05 +0100	[thread overview]
Message-ID: <cc7de043de67bb8243c764ef6764b07170b01929.1646291929.git.ps@pks.im> (raw)

[-- Attachment #1: Type: text/plain, Size: 2324 bytes --]

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>
---

This simplifies the test setup of t5503 as discussed in [1]. The patch
applies on top of Junio's ps/fetch-atomic (583bc41923 (fetch: make
`--atomic` flag cover pruning of refs, 2022-02-17)).

Patrick

 t/t5503-tagfollow.sh | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)

diff --git a/t/t5503-tagfollow.sh b/t/t5503-tagfollow.sh
index e72fdc2534..a3c01014b7 100755
--- a/t/t5503-tagfollow.sh
+++ b/t/t5503-tagfollow.sh
@@ -212,21 +212,11 @@ test_expect_success 'atomic fetch with backfill should use single transaction' '
 test_expect_success 'backfill failure causes command to fail' '
 	git init clone5 &&
 
-	write_script clone5/.git/hooks/reference-transaction <<-EOF &&
-		while read oldrev newrev reference
-		do
-			if test "\$reference" = refs/tags/tag1
-			then
-				# 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
+	# Create a tag that is nested below the tag we are about to fetch via
+	# the backfill mechanism. This causes a D/F conflict when backfilling
+	# and should thus cause the command to fail.
+	empty_blob=$(git -C clone5 hash-object -w --stdin </dev/null) &&
+	git -C clone5 update-ref refs/tags/tag1/nested $empty_blob &&
 
 	test_must_fail git -C clone5 fetch .. $B:refs/heads/something &&
 	test $B = $(git -C clone5 rev-parse --verify refs/heads/something) &&
-- 
2.35.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

             reply	other threads:[~2022-03-03  7:20 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-03  7:20 Patrick Steinhardt [this message]
2022-03-03 10:23 ` [PATCH] t5503: simplify setup of test which exercises failure of backfill Ævar Arnfjörð Bjarmason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cc7de043de67bb8243c764ef6764b07170b01929.1646291929.git.ps@pks.im \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).