]> git.ipfire.org Git - thirdparty/git.git/commit
t5333: fix missing terminator for sed(1) 's' command
authorPatrick Steinhardt <ps@pks.im>
Mon, 7 Jul 2025 11:08:34 +0000 (13:08 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 7 Jul 2025 16:12:44 +0000 (09:12 -0700)
commitde404249abc2524dfd0a6b09bbe7723d83cb32a3
treec5dbf785d24cade0f602cf093e75bba5812a1908
parent385e175cb596e086e89c4cbc06ece733c5515a39
t5333: fix missing terminator for sed(1) 's' command

In 6aec8d38fdd (t: refactor tests depending on Perl to print data,
2025-04-03) we have changed some of the tests in t4150 to use sed(1)
instead of Perl. One of the conversions is broken though:

    sed: -e expression #1, char 41: unterminated `s' command

Curiously enough, the test itself still passes. This is caused by a
sequence of failures:

  1. The output of sed(1) is piped into git-update-ref(1), and because
     sed(1) is the upstream command we don't notice that it fails.

  2. git-update-ref(1) does not receive any input and thus won't create
     any references.

  3. We then repack the repository with the configured pseudo merges
     pattern, but as we didn't create any references the pattern doesn't
     match anything.

  4. We use `test_pseudo_merges()` to compute the list of pseudo-merges
     and write it into a file. This file is empty as there are none.

  5. The loop over the pseudo-merges becomes a no-op.

  6. The final test succeeds as well because the number of lines in an
     empty file is obviously the same as the number of unique lines,
     namely zero.

Fix the issue by adding the terminating '|' to the sed(1) command.
Furthermore, make the test a tiny bit more robust by not using it as
part of a pipe.

Reported-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5333-pseudo-merge-bitmaps.sh