From: Derrick Stolee Date: Tue, 22 Mar 2022 15:17:51 GMT Subject: Re: [PATCH] test-lib-functions: fix test_subcommand_inexact Message-ID: <540936ba-7287-77fa-9cee-e257ed3c119d@github.com> In-Reply-To: On 3/21/22 4:34 PM, Derrick Stolee via GitGitGadget wrote: > From: Derrick Stolee > > The implementation of test_subcommand_inexact() was originally > introduced in e4d0c11c0 (repack: respect kept objects with '--write-midx > -b', 2021-12-20) with the intention to allow finding a subcommand based > on an initial set of arguments. The inexactness was intended as a way to > allow flexible options beyond that initial set, as opposed to > test_subcommand() which requires that the full list of options is > provided in its entirety. > > The implementation began by copying test_subcommand() and replaced the > repeated argument 'printf' statement to append ".*" instead of "," to > each argument. This has a few drawbacks: > > 1. Most importantly, this repeats the use of ".*" within 'expr', so the > inexact match is even more flexible than expected. It allows the list > of arguments to exist as a subsequence (with any other items included > between those arguments). > > 2. The line 'expr="$(expr%,}"' that previously removed a trailing comma > now no longer does anything, since the string ends with ".*". > > Both of these issues are fixed by keeping the addition of the comma in > the printf statement, then adding ".*" after stripping out the trailing > comma. > > All existing tests continue to pass with this change, since none of them > were taking advantage of this unintended flexibility. For some reason, I thought I had run all tests on my machine to passing, but I was wrong. Instead, t7700-repack.sh fails because of this test: test_expect_success '--write-midx -b packs non-kept objects' ' GIT_TRACE2_EVENT="$(pwd)/trace.txt" \ git repack --write-midx -a -b && test_subcommand_inexact git pack-objects --honor-pack-keep