Subject: Re: [PATCH v2 05/22] pickaxe tests: refactor to use test_commit --append --printf

From: Junio C Hamano <[email-masked]>
Date: Tue, 30 Mar 2021 16:26:45 -0700

Ævar Arnfjörð Bjarmason  <[email-masked]> writes:

> Refactor existing tests added in e0e7cb8080c (log -G: ignore binary
> files, 2018-12-14) to use the --append option I added in
> 3373518cc8b (test-lib functions: add an --append option to
> test_commit, 2021-01-12) and the --printf option added in a preceding
> commit.
>
> See also f5d79bf7dd6 (tests: refactor a few tests to use "test_commit
> --append", 2021-01-12) for prior similar refactoring.

This does not exactly look like a "refactoring".  There are at least
two differences and it is the courteous thing to do to readers to
note them and explain why these differences do not impact the
correctness of the tests, I would say.

 * The original uses a dedicated branch, while the rewritten uses a
   dedicated repository for these tests.  This does not impact the
   correctness as long as all the tests that originally used the
   branch are made to run in this new repository with "git -C".

 * The youngest change removes the binary sample file, while the
   rewritten only truncates it.  This does not impact the
   correctness, because a removed file and a file whose lines are
   all removed behave in the same way with respect to -G/-S.  Both
   will reduce the number of occurrence of -S<needle>, and make
   "removal" (-) lines of -G<needle> appear in the patch.

>  test_expect_success 'setup log -[GS] binary & --text' '
> -	git checkout --orphan GS-binary-and-text &&
> -	git read-tree --empty &&
> -	printf "a\na\0a\n" >data.bin &&
> -	git add data.bin &&
> -	git commit -m "create binary file" data.bin &&
> -	printf "a\na\0a\n" >>data.bin &&
> -	git commit -m "modify binary file" data.bin &&
> -	git rm data.bin &&
> -	git commit -m "delete binary file" data.bin &&
> -	git log >full-log
> +	test_create_repo GS-bin-txt &&
> +	test_commit -C GS-bin-txt --append --printf A data.bin "a\na\0a\n" &&

The --append on the first one does not make any difference ;-)

> +	test_commit -C GS-bin-txt --append --printf B data.bin "a\na\0a\n" &&
> +	test_commit -C GS-bin-txt C data.bin "" &&

The original removes the file at the end, while this merely
truncates it.

> +	git -C GS-bin-txt log >full-log
>  '