Subject: Re: [PATCH v10 1/2] t1092: add tests for `git diff-files`

From: Junio C Hamano <[email-masked]>
Date: Wed, 03 May 2023 16:25:57 -0700

Shuqi Liang <[email-masked]> writes:

> +	test_sparse_match git diff-files -- folder2/a &&
> +
> +	write_script edit-contents <<-\EOF &&
> +	echo text >>"$1"
> +	EOF

> +	# Add file to the index but outside of cone for sparse-checkout cases.
> +	# Add file to the index without sparse-checkout cases to ensure all have
> +	# same output.

Are these two sentences supposed to explain the following two
commands that are run in all three repositories?  As far as I can
tell, no command in this test adds anything to the index.  Perhaps
it is a leftover/stale comment from previous rounds or something?

> +	run_on_all mkdir -p folder1 &&
> +	run_on_all cp a folder1/a &&
> +
> +	# file present on-disk with modifications
> +	run_on_all ../edit-contents folder1/a &&

With the above three commands taken together, we have made folder1/a
on the working tree different from what is in the index, so we can
expect to see differences between the index and the working tree
files.  "# file present on-disk with modifications" is a good way to
summarize a half of what we are trying to achieve, with the other
half being that we try to do that to a path outside the cone of
interest.

So, perhaps get rid of this comment between the step 2 and 3 of the
preparation, and rewrite the comment before the step 1 (i.e. "mkdir
-p") of the preparation to explain the whole thing, perhaps like:

	# The directory "folder1" is outside the cone of interest
	# and may not exist in the sparse checkout repositories.
        # Create it as needed, add file "folder1/a" there with
	# contents that is different from the staged version.

to explain what scenario these three run_on_all commands are trying
to create?

> +	test_all_match git diff-files &&
> +	test_all_match git diff-files folder1/a &&
> +	test_all_match git diff-files "folder*/a"

I think Victoria suggested to use the double-dash disambiguators for
these tests, and it may not be a bad idea to do so, i.e.

	test_all_match git diff-files &&
	test_all_match git diff-files -- folder1/a &&
	test_all_match git diff-files -- folder\*/a

> +'
> +
>  test_done

Thanks.