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 24, 2022, 15:42 UTC
Message-ID
<72c54461-8af7-29fc-04da-f435adee9bbe@github.com>
In-Reply-To
<xmqqfsn8p8nr.fsf@gitster.g>
On 3/23/2022 7:10 PM, Junio C Hamano wrote:
Show 24 quoted lines
> Taylor Blau <me@ttaylorr.com> writes:
> 
>> On Wed, Mar 23, 2022 at 10:55:37AM -0400, Derrick Stolee wrote:
>>>> So, perhaps #3 ;-)?
>>>
>>> I'll default to #3 (do nothing), but if this shows up again
>>> I'll plan on adding a comment to the helper to be clear on
>>> how "inexact" the helper really is.
>>
>> I wonder if we could sidestep the whole issue with
>> test_subcommand_inexact by testing this behavior by looking at the
>> contents of the packs themselves.
>>
>> If we have a kept pack, and then add some new objects, and run "git
>> repack --write-midx -adb", the new pack should not contain any of the
>> objects found in the old (kept) pack. And that's the case after this
>> patch, but was broken before it.
> 
> Sounds quite sensible.
> 
> Instead of saying "we are happy as long as we internally run this
> command, as that _should_ give us the desired outcome", we check the
> resulting packs ourselves, and we do not really care how the
> "repack" command gave us that desired outcome.

Sounds good. It's all about a balance: using test_subcommand[_inexact] gives us a way to check "Did we trigger this other command that we trust works correctly from other tests?" without the more complicated work of doing a full post-condition check. It's a bit more of a unit- level check than most Git tests.

The full post-condition check requires more test code, but that's not really a problem. The problem comes in if that test is now too rigid to future changes in that subcommand. What if the post-conditions change in a subtle way because of the subcommand does something differently, but in a way that is not of importance to the top command?

In this specific case, the test name says that it "packs non-kept objects", so we can do more here to validate that post-condition that we care about.

As I'm looking at Taylor's test case example, the one thing I notice is that there is only one pack-file before the repack. It would be good to have a non-kept packfile get repacked in the process, not just the loose objects added by the test_commit. I'll take a look at what can be done here.

Thanks, -Stolee

Previous: Junio C HamanoNext: Taylor Blau
Message 7 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.