]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t5314: check exit code of "git"
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Mon, 28 Nov 2022 14:18:55 +0000 (15:18 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 2 Dec 2022 07:38:12 +0000 (16:38 +0900)
Amend the test added in [1] to check the exit code of the "git"
invocations. An in-flight change[2] introduced a memory leak in these
invocations, which went undetected unless we were running under
"GIT_TEST_SANITIZE_LEAK_LOG=true".

Note that the in-flight change made 8 test files fail, but as far as I
can tell only this one would have had its exit code hidden unless
under "GIT_TEST_SANITIZE_LEAK_LOG=true". The rest would be caught
without it.

We could pick other variable names here than "ln%d", e.g. "commit",
"dummy_blob" and "file_blob", but having the "rev-parse" invocations
aligned makes the difference between them more readable, so let's pick
"ln%d".

1. 4cf2143e029 (pack-objects: break delta cycles before delta-search
   phase, 2016-08-11)
2. https://lore.kernel.org/git/221128.868rjvmi3l.gmgdl@evledraar.gmail.com/
3. faececa53f9 (test-lib: have the "check" mode for SANITIZE=leak
   consider leak logs, 2022-07-28)

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5314-pack-cycle-detection.sh

index 73a241743aa50101c032b53566de7ba2e7a3b410..82734b9a3c4420a63b91901d165ae06f4b823ea7 100755 (executable)
@@ -63,13 +63,16 @@ TEST_PASSES_SANITIZE_LEAK=true
 # Note that the two variants of "file" must be similar enough to convince git
 # to create the delta.
 make_pack () {
-       {
-               printf '%s\n' "-$(git rev-parse $2)"
-               printf '%s dummy\n' "$(git rev-parse $1:dummy)"
-               printf '%s file\n' "$(git rev-parse $1:file)"
-       } |
-       git pack-objects --stdout |
-       git index-pack --stdin --fix-thin
+       ln1=$(git rev-parse "$2") &&
+       ln2=$(git rev-parse "$1:dummy") &&
+       ln3=$(git rev-parse "$1:file") &&
+       cat >list <<-EOF
+       -$ln1
+       $ln2 dummy
+       $ln3 file
+       EOF
+       git pack-objects --stdout <list >pack &&
+       git index-pack --stdin --fix-thin <pack
 }
 
 test_expect_success 'setup' '