mirror of
https://github.com/git/git
synced 2024-08-23 18:00:25 +00:00
![Ævar Arnfjörð Bjarmason](/assets/img/avatar_default.png)
Call diff_free() on the "pruning" member of "struct rev_info". Doing
so makes several tests pass under SANITIZE=leak.
This was also the last missing piece that allows us to remove the
UNLEAK() in "cmd_diff" and "cmd_diff_index", which allows us to use
those commands as a canary for general leaks in the revisions API. See
[1] for further rationale, and 886e1084d7
(builtin/: add UNLEAKs,
2017-10-01) for the commit that added the UNLEAK() there.
1. https://lore.kernel.org/git/220218.861r00ib86.gmgdl@evledraar.gmail.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
44 lines
1 KiB
Bash
Executable file
44 lines
1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='diff with assume-unchanged entries'
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
. ./test-lib.sh
|
|
|
|
# external diff has been tested in t4020-diff-external.sh
|
|
|
|
test_expect_success 'setup' '
|
|
echo zero > zero &&
|
|
git add zero &&
|
|
git commit -m zero &&
|
|
echo one > one &&
|
|
echo two > two &&
|
|
blob=$(git hash-object one) &&
|
|
git add one two &&
|
|
git commit -m onetwo &&
|
|
git update-index --assume-unchanged one &&
|
|
echo borked >> one &&
|
|
test "$(git ls-files -v one)" = "h one"
|
|
'
|
|
|
|
test_expect_success 'diff-index does not examine assume-unchanged entries' '
|
|
git diff-index HEAD^ -- one | grep -q $blob
|
|
'
|
|
|
|
test_expect_success 'diff-files does not examine assume-unchanged entries' '
|
|
rm one &&
|
|
test -z "$(git diff-files -- one)"
|
|
'
|
|
|
|
test_expect_success POSIXPERM 'find-copies-harder is not confused by mode bits' '
|
|
echo content >exec &&
|
|
chmod +x exec &&
|
|
git add exec &&
|
|
git commit -m exec &&
|
|
git update-index --assume-unchanged exec &&
|
|
git diff-files --find-copies-harder -- exec >actual &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
test_done
|