git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Victoria Dye <vdye@github.com>
Date
May 3, 2023, 16:37 UTC
Message-ID
<2fa835b8-1c9b-67d3-aa4a-70a978b5f20d@github.com>
In-Reply-To
<xmqqjzxqzgbi.fsf@gitster.g>
Junio C Hamano wrote:
Show 18 quoted lines
> Shuqi Liang <cheskaqiqi@gmail.com> writes:
> 
>> +test_expect_success 'diff-files with pathspec outside sparse definition' '
>> +	init_repos &&
>> +
>> +	test_sparse_match test_must_fail git diff-files folder2/a &&
> 
> In "sparse" directories at this point of test, "folder2" is outside
> the cone(s) of interest and is not instantiated.  The reason why
> the command fails is because the command line parsing that is
> generic to all users of the revision machinery requires you to have
> a disambiguating double-dash before such a pathspec that tries to
> match a path that does not exist in the working tree and is not
> specific to "diff-files".
> 
> I wonder how interesting and useful this test is.  Without
> accompanying test that uses disambiguating double-dash properly,
> e.g. "git diff-files -- folder2", I doubt it is very much useful.

I agree, this test isn't helpful as-is. With the '--', 'diff-files' shouldn't fail, so in the interest of avoiding unexpected regressions in the future (masked by 'test_must_fail'), I think this test should be updated as you described.

Show 17 quoted lines
>> +	# file present on-disk without modifications
>> +	# use `--stat` to ignore file creation time differences in
>> +	# unrefreshed index
>> +	test_all_match git diff-files --stat &&
>> +	test_all_match git diff-files --stat folder1/a &&
>> +	test_all_match git diff-files --stat "folder*/a" &&
> 
> Because in all three repositories, "folder1/a" exists in the working
> tree, the "you need to disambiguate" error like the first test
> (whose utility I questioned) would not trigger.
> 
> What does this demonstrate, though?  That instantiating a file on
> the working tree, even outside the cone(s) of interest in a sparsely
> checked out working tree, makes it part of the interesting set
> automatically?  As there is no difference between the indexed
> contents and what is in the working tree, we cannot tell from this
> test if that is the case (not a complaint, just an observation).

This was meant [1] to check whether there are any issues expanding the index (specifically, the 'folder1/' sparse directory) before comparing to the now-on-disk 'folder1/a'.

However...
[1] https://lore.kernel.org/git/b537d855-edb7-4f67-de08-d651868247a5@github.com/
Show 17 quoted lines
> 
> But ...
> 
>> +	# file present on-disk with modifications
>> +	run_on_all ../edit-contents folder1/a &&
>> +	test_all_match git diff-files &&
>> +	test_all_match git diff-files folder1/a &&
>> +	test_all_match git diff-files "folder*/a"
> 
> ... it is shown by doing the same test with modified contents?
> 
> For consistency with the earlier "the same contents" test, we should
> use "--stat" here, too.  Or even "--stat -p".
> 
> Alternatively, we could refresh the index before running diff-files
> (here and also before the earlier "the same contents" test), I
> guess.

...to your point, we probably don't need both the "unmodified folder1/a diff-files" *and* "modified folder1/a diff-files" tests. In fact, the empty output of "unmodified folder1/a" could be caused by either "this file is unmodified" or "this file isn't in the index", so the test might pass even if there's an issue with index expansion. That isn't a problem in the "modified folder1/a" case, since we're expecting to see - and comparing the contents of - a diff.

I think we can drop the 'diff-files --stat' tests and go straight to the 'run_on_all ../edit-contents folder1/a'. Adding '--' here to disambiguate the pathspecs might be nice as well.

Show 6 quoted lines
> 
>> +'
>> +
>>  test_done
> 
> Thanks.
Thanks for the detailed review, apologies for missing these issues earlier.
Previous: Junio C HamanoNext: Shuqi Liang
Message 59 of 73 in “t1092: add tests for `git diff-files`”
  1. Shuqi LiangMar 4, 2023
  2. Derrick StoleeMar 6, 2023
  3. 0/2 diff-files: integrate with sparse indexShuqi Liang, Mar 7, 2023
  4. 2/2 diff-files: integrate with sparse indexShuqi Liang, Mar 7, 2023
  5. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, Mar 7, 2023
  6. Junio C HamanoMar 7, 2023
  7. Shuqi LiangMar 8, 2023
  8. Junio C HamanoMar 8, 2023
  9. 0/2 diff-files: integrate with sparse indexShuqi Liang, Mar 9, 2023
  10. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, Mar 9, 2023
  11. Junio C HamanoMar 9, 2023
  12. 2/2 diff-files: integrate with sparse indexShuqi Liang, Mar 9, 2023
  13. 0/2 diff-files: integrate with sparse indexShuqi Liang, Mar 9, 2023
  14. 2/2 diff-files: integrate with sparse indexShuqi Liang, Mar 9, 2023
  15. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, Mar 9, 2023
  16. Junio C HamanoMar 9, 2023
  17. Shuqi LiangMar 9, 2023
  18. Junio C HamanoMar 9, 2023
  19. 0/2 diff-files: integrate with sparse indexShuqi Liang, Mar 10, 2023
  20. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, Mar 10, 2023
  21. Victoria DyeMar 10, 2023
  22. Shuqi LiangMar 20, 2023
  23. 2/2 diff-files: integrate with sparse indexShuqi Liang, Mar 10, 2023
  24. Victoria DyeMar 10, 2023
  25. 0/2 diff-files: integrate with sparse indexShuqi Liang, Mar 20, 2023
  26. 2/2 diff-files: integrate with sparse indexShuqi Liang, Mar 20, 2023
  27. Victoria DyeMar 21, 2023
  28. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, Mar 20, 2023
  29. Victoria DyeMar 21, 2023
  30. Junio C HamanoMar 21, 2023
  31. Victoria DyeMar 21, 2023
  32. Victoria DyeMar 21, 2023
  33. 0/2 diff-files: integrate with sparse indexShuqi Liang, Mar 22, 2023
  34. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, Mar 22, 2023
  35. Victoria DyeApr 13, 2023
  36. 2/2 diff-files: integrate with sparse indexShuqi Liang, Mar 22, 2023
  37. Victoria DyeApr 13, 2023
  38. Shuqi LiangApr 20, 2023
  39. Victoria DyeApr 20, 2023
  40. Shuqi LiangApr 21, 2023
  41. Victoria DyeApr 21, 2023
  42. Shuqi LiangApr 22, 2023
  43. Junio C HamanoMar 22, 2023
  44. Shuqi LiangMar 23, 2023
  45. Junio C HamanoMar 23, 2023
  46. Shuqi LiangMar 23, 2023
  47. Victoria DyeMar 23, 2023
  48. Junio C HamanoApr 13, 2023
  49. Victoria DyeApr 13, 2023
  50. 0/2 diff-files: integrate with sparse indexShuqi Liang, Apr 23, 2023
  51. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, Apr 23, 2023
  52. 2/2 diff-files: integrate with sparse indexShuqi Liang, Apr 23, 2023
  53. Victoria DyeMay 1, 2023
  54. Junio C HamanoApr 25, 2023
  55. Junio C HamanoMay 1, 2023
  56. 0/2 diff-files: integrate with sparse indexShuqi Liang, May 2, 2023
  57. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, May 2, 2023
  58. Junio C HamanoMay 2, 2023
  59. Victoria DyeMay 3, 2023
  60. 2/2 diff-files: integrate with sparse indexShuqi Liang, May 2, 2023
  61. 0/2 diff-files: integrate with sparse indexShuqi Liang, May 3, 2023
  62. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, May 3, 2023
  63. Junio C HamanoMay 3, 2023
  64. 2/2 diff-files: integrate with sparse indexShuqi Liang, May 3, 2023
  65. 0/2 diff-files: integrate with sparse indexShuqi Liang, May 8, 2023
  66. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, May 8, 2023
  67. Victoria DyeMay 8, 2023
  68. 2/2 diff-files: integrate with sparse indexShuqi Liang, May 8, 2023
  69. 0/2 diff-files: integrate with sparse indexShuqi Liang, May 9, 2023
  70. 1/2 t1092: add tests for `git diff-files`Shuqi Liang, May 9, 2023
  71. 2/2 diff-files: integrate with sparse indexShuqi Liang, May 9, 2023
  72. Victoria DyeMay 11, 2023
  73. Junio C HamanoMay 11, 2023

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.