Message ID | 20230503215549.511999-2-cheskaqiqi@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | diff-files: integrate with sparse index | expand |
Shuqi Liang <cheskaqiqi@gmail.com> 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.
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh index 0c784813f1..eddae7ee08 100755 --- a/t/t1092-sparse-checkout-compatibility.sh +++ b/t/t1092-sparse-checkout-compatibility.sh @@ -2108,4 +2108,43 @@ test_expect_success 'sparse-index is not expanded: write-tree' ' ensure_not_expanded write-tree ' +test_expect_success 'diff-files with pathspec inside sparse definition' ' + init_repos && + + write_script edit-contents <<-\EOF && + echo text >>"$1" + EOF + + run_on_all ../edit-contents deep/a && + + test_all_match git diff-files && + + test_all_match git diff-files deep/a && + + # test wildcard + test_all_match git diff-files "deep/*" +' + +test_expect_success 'diff-files with pathspec outside sparse definition' ' + init_repos && + + 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. + 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 && + test_all_match git diff-files && + test_all_match git diff-files folder1/a && + test_all_match git diff-files "folder*/a" +' + test_done
Before integrating the 'git diff-files' builtin with the sparse index feature, add tests to t1092-sparse-checkout-compatibility.sh to ensure it currently works with sparse-checkout and will still work with sparse index after that integration. When adding tests against a sparse-checkout definition, we test two modes: all changes are within the sparse-checkout cone and some changes are outside the sparse-checkout cone. In order to have staged changes outside of the sparse-checkout cone, make a directory called 'folder1' and copy `a` into 'folder1/a'. 'folder1/a' is identical to `a` in the base commit. These make 'folder1/a' in the index, while leaving it outside of the sparse-checkout definition. Change content inside 'folder1/a' in order to test 'folder1/a' being present on-disk with modifications. Signed-off-by: Shuqi Liang <cheskaqiqi@gmail.com> --- t/t1092-sparse-checkout-compatibility.sh | 39 ++++++++++++++++++++++++ 1 file changed, 39 insertions(+)