Skip to content

Commit 0c06339

Browse files
committed
stash: expand testing for git stash -u
Test cases specific to handling untracked files in `git stash` a) ensure that files outside the sparse checkout definition are handled as-expected and b) document the index expansion inside of `git stash -u`. Note that, in b), it is not the full repository index that is expanded - it is the temporary, standalone index containing the stashed untracked files only. Signed-off-by: Victoria Dye <[email protected]>
1 parent 626751a commit 0c06339

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

t/perf/p2000-sparse-operations.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ test_perf_on_all () {
107107

108108
test_perf_on_all git status
109109
test_perf_on_all 'git stash && git stash pop'
110+
test_perf_on_all 'echo >>new && git stash -u && git stash pop'
110111
test_perf_on_all git add -A
111112
test_perf_on_all git add .
112113
test_perf_on_all git commit -a -m A

t/t1092-sparse-checkout-compatibility.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,6 +1301,46 @@ test_expect_success 'sparse index is not expanded: read-tree' '
13011301
ensure_not_expanded read-tree --prefix=deep/deeper2 -u deepest
13021302
'
13031303

1304+
# NEEDSWORK: although the full repository's index is _not_ expanded as part of
1305+
# stash, a temporary index, which is _not_ sparse, is created when stashing and
1306+
# applying a stash of untracked files. As a result, the test reports that it
1307+
# finds an instance of `ensure_full_index`, but it does not carry with it the
1308+
# performance implications of expanding the full repository index.
1309+
test_expect_success 'sparse index is not expanded: stash -u' '
1310+
init_repos &&
1311+
1312+
mkdir -p sparse-index/folder1 &&
1313+
echo >>sparse-index/README.md &&
1314+
echo >>sparse-index/a &&
1315+
echo >>sparse-index/folder1/new &&
1316+
1317+
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
1318+
git -C sparse-index stash -u &&
1319+
test_region index ensure_full_index trace2.txt &&
1320+
1321+
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
1322+
git -C sparse-index stash pop &&
1323+
test_region index ensure_full_index trace2.txt
1324+
'
1325+
1326+
# NEEDSWORK: similar to `git add`, untracked files outside of the sparse
1327+
# checkout definition are successfully stashed and unstashed.
1328+
test_expect_success 'stash -u outside sparse checkout definition' '
1329+
init_repos &&
1330+
1331+
write_script edit-contents <<-\EOF &&
1332+
echo text >>$1
1333+
EOF
1334+
1335+
run_on_sparse mkdir -p folder1 &&
1336+
run_on_all ../edit-contents folder1/new &&
1337+
test_all_match git stash -u &&
1338+
test_all_match git status --porcelain=v2 &&
1339+
1340+
test_all_match git stash pop -q &&
1341+
test_all_match git status --porcelain=v2
1342+
'
1343+
13041344
# NEEDSWORK: a sparse-checkout behaves differently from a full checkout
13051345
# in this scenario, but it shouldn't.
13061346
test_expect_success 'reset mixed and checkout orphan' '

0 commit comments

Comments
 (0)