From: Derrick Stolee Date: Mon, 22 Jun 2026 18:15:04 GMT Subject: Re: [PATCH/RFC 4/6] t6600: add test cases for side-exhaustion edge cases Message-ID: <1588b53d-9576-4752-9459-da48276e4b2a@gmail.com> In-Reply-To: <91372b975fbe102538c05c7d2cdae356539d1bbd.1781951820.git.gitgitgadget@gmail.com> On 6/20/2026 6:36 AM, Elijah Newren via GitGitGadget wrote: > From: Elijah Newren > > Add test cases to t6600-test-reach.sh that exercise edge cases in the > side-exhaustion optimization for paint_down_to_common(): > > - in_merge_bases_many:self: commit is both A and one of the X inputs > - get_merge_bases_many:duplicate-twos: duplicate entries in X list > - get_merge_bases_many:pending-stale: STALE transition on an > already-painted commit (ps-* diamond topology) > - get_merge_bases_many:infinity-both-sides: both tips outside the > commit-graph with non-monotonic dates (pi-* topology) It's usually my preference to see these tests show up before the new code arrives, that way we can see that they already work with the old logic and continue to work with the new logic. It's minor, but putting them after your code change may be adding enforcement of a change of behavior. One thing that could be helpful here is to consider tracing a count of "commits walked" in the merge-base code, then you could have these tests demonstrate the performance benefit by checking for that number changing. In t6600, that tracing number would not be the same across the three different data shapes (full graph, half graph, no graph) and that could be valuable to demonstrate in tests. Thanks, -Stolee