]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t1092: add tests for `git diff-files`
authorShuqi Liang <cheskaqiqi@gmail.com>
Tue, 9 May 2023 19:42:40 +0000 (15:42 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 May 2023 21:26:34 +0000 (14:26 -0700)
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1092-sparse-checkout-compatibility.sh

index 0c784813f15757e037bf061d2f9e9d82c3eca71b..b06b5220306b2afff5cd3fcca3ae7d88e0fa941e 100755 (executable)
@@ -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
+
+       # The directory "folder1" is outside the cone of interest
+       # and will 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.
+       run_on_all mkdir -p folder1 &&
+       run_on_all cp a folder1/a &&
+
+       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