[PATCH 09/15] t5408: check refspec order with distinct destinations
- From
Jon Simons <jon@jonsimons.org>
- Date
- Oct 9, 2026, 19:29 UTC
- Message-ID
- <20261009192953.81794-10-jon@jonsimons.org>
- In-Reply-To
- <20261009192953.81794-1-jon@jonsimons.org>
26be19ba8d (send-pack: take refspecs over stdin, 2014-08-21) added tests to assert that send-pack sends command-line refspecs in the order given, and those read with --stdin after them, by pushing to the same destination twice, and seeing which update succeeded.
But since 9d2962a7c4 (receive-pack: use batched reference updates, 2025-05-19) such pushes to the same destination now fail completely on the server-side with "multiple updates for ref '<dst>' not allowed", and so the ordering is no longer being asserted.
Add two explicit tests to reinstate the ordering assertions.
Signed-off-by: Jon Simons <jon@jonsimons.org> --- t/t5408-send-pack-stdin.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
diff --git a/t/t5408-send-pack-stdin.sh b/t/t5408-send-pack-stdin.sh index 3c47be1af8..7af350f01c 100755 --- a/t/t5408-send-pack-stdin.sh +++ b/t/t5408-send-pack-stdin.sh @@ -67,6 +67,36 @@ test_expect_success 'stdin mixed with cmdline' ' verify_push B ' +test_expect_success 'cmdline refs are sent in order' ' + clear_remote && + test_hook -C remote.git pre-receive <<-\EOF && + cut -d" " -f3 >pushed-refs + EOF + git send-pack remote.git A:foo B:bar C:baz && + cat >expect <<-\EOF && + refs/heads/foo + refs/heads/bar + refs/heads/baz + EOF + test_cmp expect remote.git/pushed-refs +' + +test_expect_success '--stdin refs are sent after cmdline refs' ' + clear_remote && + test_hook -C remote.git pre-receive <<-\EOF && + cut -d" " -f3 >pushed-refs + EOF + echo A:bar >input && + git send-pack remote.git --stdin B:foo <input && + cat >expect <<-\EOF && + refs/heads/foo + refs/heads/bar + EOF + test_cmp expect remote.git/pushed-refs && + verify_push B foo && + verify_push A bar +' + test_expect_success 'cmdline refs written in order' ' clear_remote && test_must_fail git send-pack remote.git A:foo B:foo 2>err &&
-- 2.55.0