git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] test-lib-functions: fix test_subcommand_inexact

From
Derrick Stolee <derrickstolee@github.com>
Date
Mar 22, 2022, 15:17 UTC
Message-ID
<540936ba-7287-77fa-9cee-e257ed3c119d@github.com>
In-Reply-To
<pull.1185.git.1647894845421.gitgitgadget@gmail.com>
On 3/21/22 4:34 PM, Derrick Stolee via GitGitGadget wrote:
Show 28 quoted lines
> From: Derrick Stolee <derrickstolee@github.com>
> 
> 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 <trace.txt
'

Specifically, "git pack-objects" has several options before "--honor-pack-keep" including the temporary pack name and a "--keep-true-parents" flag.

So, this patch is incorrect about keeping things working. The options are:

1. Keep the repeated ".*" and be clear about the expectations.
   (This could drop the "remove trailing comma" line.)
2. Find another way to test this --write-midx behavior while
   keeping the stricter test_subcommand_inexact helper.
3. Something else???

Thanks, -Stolee

Previous: Derrick Stolee via GitGitGadgetNext: Junio C Hamano
Message 2 of 30 in “test-lib-functions: fix test_subcommand_inexact”
  1. test-lib-functions: fix test_subcommand_inexactDerrick Stolee via GitGitGadget, Mar 21, 2022
  2. Derrick StoleeMar 22, 2022
  3. Junio C HamanoMar 23, 2022
  4. Derrick StoleeMar 23, 2022
  5. Taylor BlauMar 23, 2022
  6. Junio C HamanoMar 23, 2022
  7. Derrick StoleeMar 24, 2022
  8. Taylor BlauMar 24, 2022
  9. Derrick StoleeMar 24, 2022
  10. Junio C HamanoMar 24, 2022
  11. Abhradeep ChakrabortyMar 24, 2022
  12. Junio C HamanoMar 25, 2022
  13. Abhradeep ChakrabortyMar 25, 2022
  14. 0/2 test-lib-functions: fix test_subcommand_inexactDerrick Stolee via GitGitGadget, Mar 24, 2022
  15. 1/2 t7700: check post-condition in kept-pack testDerrick Stolee via GitGitGadget, Mar 24, 2022
  16. Taylor BlauMar 24, 2022
  17. Derrick StoleeMar 25, 2022
  18. Junio C HamanoMar 25, 2022
  19. Derrick StoleeMar 25, 2022
  20. Taylor BlauMar 25, 2022
  21. Junio C HamanoMar 25, 2022
  22. 2/2 test-lib-functions: fix test_subcommand_inexactDerrick Stolee via GitGitGadget, Mar 24, 2022
  23. Taylor BlauMar 24, 2022
  24. Junio C HamanoMar 24, 2022
  25. Derrick StoleeMar 25, 2022
  26. Junio C HamanoMar 25, 2022
  27. 0/2 test-lib-functions: fix test_subcommand_inexactDerrick Stolee via GitGitGadget, Mar 25, 2022
  28. 1/2 t7700: check post-condition in kept-pack testDerrick Stolee via GitGitGadget, Mar 25, 2022
  29. 2/2 test-lib-functions: remove test_subcommand_inexactDerrick Stolee via GitGitGadget, Mar 25, 2022
  30. Taylor BlauMar 30, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.