On 3/25/2022 1:07 PM, Junio C Hamano wrote: > "Derrick Stolee via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > >> +get_sorted_objects_from_packs () { >> + git show-index <$(cat) >raw && >> + cut -d" " -f2 raw | sort >> +} > > As pointed out by Taylor, this "the standard input gives us the name > of a file to be read" looks strange. It may work, and it may even > give the easiest interface to use by all the callers, but if we were > designing a more generic helper function suitable to be added to the > test-lib*.sh, we wouldn't design it like so---instead it would be > either "we read the contents of the .idx file from the standard > input" or "the first argument is the name of the .idx file". Ok. Can do. >> test_expect_success '--write-midx -b packs non-kept objects' ' >> + git init repo && >> + test_when_finished "rm -fr repo" && >> + ( >> + cd repo && >> + >> + # Create a kept pack-file >> + test_commit base && >> + git repack -ad && >> + find $objdir/pack -name "*.idx" >before && >> + >$objdir/pack/$(basename $(cat before) .idx).keep && > > We probably want to sanity check "repack -a" by insisting "before" > has found exactly one .idx file, before using it this way. > test_line_count = 1 before && > before=$(cat before) && > >"${before%.idx}.keep" Good idea. This mixture of a file and variable sharing a name is a bit muddy for me, though. Using "before_name" as the variable would be enough of a differentiator. >> + find $objdir/pack -name "*.keep" >kept && >> + test_line_count = 1 kept && > > Since we've made sure "before" is a one-liner earlier, we could just > say > test_cmp before kept && > > instead, no? 'before' contains a .idx name and 'kept' contains a .keep name, so this direct comparison does not work. We could do that additional check like this: kept_name=$(cat kept) && echo ${kept_name%.keep}.idx >kept-idx && test_cmp before kept-idx && Thanks for taking the time to clean this up, as it might become a good example for these kinds of post-condition checks of the packs directory in the future. Thanks, -Stolee