@@ -2180,4 +2180,46 @@ test_expect_success 'sparse index is not expanded: diff-files' '
21802180 ensure_not_expanded diff-files -- "deep/*"
21812181'
21822182
2183+ test_expect_success ' diff-tree' '
2184+ init_repos &&
2185+
2186+ # Test change inside sparse cone
2187+ tree1=$(git -C sparse-index rev-parse HEAD^{tree}) &&
2188+ tree2=$(git -C sparse-index rev-parse update-deep^{tree}) &&
2189+ test_all_match git diff-tree $tree1 $tree2 &&
2190+ test_all_match git diff-tree $tree1 $tree2 -- deep/a &&
2191+ test_all_match git diff-tree HEAD update-deep &&
2192+ test_all_match git diff-tree HEAD update-deep -- deep/a &&
2193+
2194+ # Test change outside sparse cone
2195+ tree3=$(git -C sparse-index rev-parse update-folder1^{tree}) &&
2196+ test_all_match git diff-tree $tree1 $tree3 &&
2197+ test_all_match git diff-tree $tree1 $tree3 -- folder1/a &&
2198+ test_all_match git diff-tree HEAD update-folder1 &&
2199+ test_all_match git diff-tree HEAD update-folder1 -- folder1/a &&
2200+
2201+ # Check that SKIP_WORKTREE files are not materialized
2202+ test_path_is_missing sparse-checkout/folder1/a &&
2203+ test_path_is_missing sparse-index/folder1/a &&
2204+ test_path_is_missing sparse-checkout/folder2/a &&
2205+ test_path_is_missing sparse-index/folder2/a
2206+ '
2207+
2208+ test_expect_success ' sparse-index is not expanded: diff-tree' '
2209+ init_repos &&
2210+
2211+ tree1=$(git -C sparse-index rev-parse HEAD^{tree}) &&
2212+ tree2=$(git -C sparse-index rev-parse update-deep^{tree}) &&
2213+ tree3=$(git -C sparse-index rev-parse update-folder1^{tree}) &&
2214+
2215+ ensure_not_expanded diff-tree $tree1 $tree2 &&
2216+ ensure_not_expanded diff-tree $tree1 $tree2 -- deep/a &&
2217+ ensure_not_expanded diff-tree HEAD update-deep &&
2218+ ensure_not_expanded diff-tree HEAD update-deep -- deep/a &&
2219+ ensure_not_expanded diff-tree $tree1 $tree3 &&
2220+ ensure_not_expanded diff-tree $tree1 $tree3 -- folder1/a &&
2221+ ensure_not_expanded diff-tree HEAD update-folder1 &&
2222+ ensure_not_expanded diff-tree HEAD update-folder1 -- folder1/a
2223+ '
2224+
21832225test_done
0 commit comments