Subject: Re: [PATCH 1/3] test-lib: stop showing old leak logs

From: Patrick Steinhardt <[email-masked]>
Date: Thu, 26 Sep 2024 16:19:16 +0200

On Tue, Sep 24, 2024 at 05:35:40PM -0400, Jeff King wrote:
> We ask LSan to record the logs of all leaks in test-results/, which is
> useful for finding leaks that didn't trigger a test failure.
> 
> We don't clean out the leak/ directory for each test before running it,
> though. Instead, we count the number of files it has, and complain only
> if we ended up with more when the script finishes. So we shouldn't
> trigger any output if you've made a script leak free. But if you simply
> _reduced_ the number of leaks, then there is an annoying outcome: we do
> not record which logs were from this run and which were from previous
> ones. So when we dump them to stdout, you get a mess of
> possibly-outdated leaks. This is very confusing when you are in an
> edit-compile-test cycle trying to fix leaks.
> 
> The instructions do note that you should "rm -rf test-results/" if you
> want to avoid this. But I'm having trouble seeing how this cumulative
> count could ever be useful. It is not even counting the number of leaks,
> but rather the number of processes with at least one leak!
> 
> So let's just blow away the per-test leak/ directory before running. We
> already overwrite the ".out" file in test-results/ in the same way, so
> this is following that pattern.
> 
> Running "make test" isn't affected by this, since it blows away all of
> test-results/ already. This only comes up when you are iterating on a
> single script that you're running manually.

I'm very much in favor of this change. I frequently re-ran tests with
leak checking enabled only to realize that, oops, I forgot to "rm -rf"
the leak directory first. So eventually I ended up with the following
command:

    $ rm -rf /tmp/git-tests/ && make -C .. -j20 SANITIZE=leak && ./t5310-pack-bitmaps.sh -ix

Every time I didn't use it I soon came to regret it.

Patrick