Re: [PATCH v2 1/2] t7700: check post-condition in kept-pack test
- From
Derrick Stolee <derrickstolee@github.com>
- Date
- Mar 25, 2022, 17:23 UTC
- Message-ID
- <3fab1246-1451-597c-4359-c01f9675e3f1@github.com>
- In-Reply-To
- <xmqqmthearlz.fsf@gitster.g>
On 3/25/2022 1:07 PM, Junio C Hamano wrote:
Show 14 quoted lines
> "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> 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.
Show 14 quoted lines
>> 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.
Show 5 quoted lines
>> + 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