@@ -1377,7 +1377,7 @@ test_expect_success 'index.sparse disabled inline uses full index' '
1377
1377
! test_region index ensure_full_index trace2.txt
1378
1378
'
1379
1379
1380
- ensure_not_expanded () {
1380
+ run_sparse_index_trace2 () {
1381
1381
rm -f trace2.txt &&
1382
1382
if test -z " $WITHOUT_UNTRACKED_TXT "
1383
1383
then
@@ -1397,7 +1397,16 @@ ensure_not_expanded () {
1397
1397
git -C sparse-index " $@ " \
1398
1398
> sparse-index-out \
1399
1399
2> sparse-index-error || return 1
1400
- fi &&
1400
+ fi
1401
+ }
1402
+
1403
+ ensure_expanded () {
1404
+ run_sparse_index_trace2 " $@ " &&
1405
+ test_region index ensure_full_index trace2.txt
1406
+ }
1407
+
1408
+ ensure_not_expanded () {
1409
+ run_sparse_index_trace2 " $@ " &&
1401
1410
test_region ! index ensure_full_index trace2.txt
1402
1411
}
1403
1412
@@ -2108,4 +2117,57 @@ test_expect_success 'sparse-index is not expanded: write-tree' '
2108
2117
ensure_not_expanded write-tree
2109
2118
'
2110
2119
2120
+ test_expect_success ' diff-files with pathspec inside sparse definition' '
2121
+ init_repos &&
2122
+
2123
+ write_script edit-contents <<-\EOF &&
2124
+ echo text >>"$1"
2125
+ EOF
2126
+
2127
+ run_on_all ../edit-contents deep/a &&
2128
+
2129
+ test_all_match git diff-files &&
2130
+
2131
+ test_all_match git diff-files -- deep/a &&
2132
+
2133
+ # test wildcard
2134
+ test_all_match git diff-files -- "deep/*"
2135
+ '
2136
+
2137
+ test_expect_success ' diff-files with pathspec outside sparse definition' '
2138
+ init_repos &&
2139
+
2140
+ test_sparse_match git diff-files -- folder2/a &&
2141
+
2142
+ write_script edit-contents <<-\EOF &&
2143
+ echo text >>"$1"
2144
+ EOF
2145
+
2146
+ # The directory "folder1" is outside the cone of interest
2147
+ # and will not exist in the sparse checkout repositories.
2148
+ # Create it as needed, add file "folder1/a" there with
2149
+ # contents that is different from the staged version.
2150
+ run_on_all mkdir -p folder1 &&
2151
+ run_on_all cp a folder1/a &&
2152
+
2153
+ run_on_all ../edit-contents folder1/a &&
2154
+ test_all_match git diff-files &&
2155
+ test_all_match git diff-files -- folder1/a &&
2156
+ test_all_match git diff-files -- "folder*/a"
2157
+ '
2158
+
2159
+ test_expect_success ' sparse index is not expanded: diff-files' '
2160
+ init_repos &&
2161
+
2162
+ write_script edit-contents <<-\EOF &&
2163
+ echo text >>"$1"
2164
+ EOF
2165
+
2166
+ run_on_all ../edit-contents deep/a &&
2167
+
2168
+ ensure_not_expanded diff-files &&
2169
+ ensure_not_expanded diff-files -- deep/a &&
2170
+ ensure_not_expanded diff-files -- "deep/*"
2171
+ '
2172
+
2111
2173
test_done
0 commit comments