t1092: refactor 'sparse-index contents' test
Before expanding this test with more involved cases, first extract the repeated logic into a new test_sparse_checkout_set helper. This helper checks that 'git sparse-checkout set ...' succeeds and then verifies that certain directories have sparse directory entries in the sparse index. It also verifies that the in-cone directories are _not_ sparse directory entries in the sparse index. Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e54793a95a
commit
baa73e2b75
@ -205,36 +205,53 @@ test_sparse_unstaged () {
|
||||
done
|
||||
}
|
||||
|
||||
# Usage: test_sprase_checkout_set "<c1> ... <cN>" "<s1> ... <sM>"
|
||||
# Verifies that "git sparse-checkout set <c1> ... <cN>" succeeds and
|
||||
# leaves the sparse index in a state where <s1> ... <sM> are sparse
|
||||
# directories (and <c1> ... <cN> are not).
|
||||
test_sparse_checkout_set () {
|
||||
CONE_DIRS=$1 &&
|
||||
SPARSE_DIRS=$2 &&
|
||||
git -C sparse-index sparse-checkout set $CONE_DIRS &&
|
||||
git -C sparse-index ls-files --sparse --stage >cache &&
|
||||
|
||||
# Check that the directories outside of the sparse-checkout cone
|
||||
# have sparse directory entries.
|
||||
for dir in $SPARSE_DIRS
|
||||
do
|
||||
TREE=$(git -C sparse-index rev-parse HEAD:$dir) &&
|
||||
grep "040000 $TREE 0 $dir/" cache \
|
||||
|| return 1
|
||||
done &&
|
||||
|
||||
# Check that the directories in the sparse-checkout cone
|
||||
# are not sparse directory entries.
|
||||
for dir in $CONE_DIRS
|
||||
do
|
||||
TREE=$(git -C sparse-index rev-parse HEAD:$dir) &&
|
||||
! grep "040000 $TREE 0 $dir/" cache \
|
||||
|| return 1
|
||||
done
|
||||
}
|
||||
|
||||
test_expect_success 'sparse-index contents' '
|
||||
init_repos &&
|
||||
|
||||
git -C sparse-index ls-files --sparse --stage >cache &&
|
||||
for dir in folder1 folder2 x
|
||||
do
|
||||
TREE=$(git -C sparse-index rev-parse HEAD:$dir) &&
|
||||
grep "040000 $TREE 0 $dir/" cache \
|
||||
|| return 1
|
||||
done &&
|
||||
# Remove deep, add three other directories.
|
||||
test_sparse_checkout_set \
|
||||
"folder1 folder2 x" \
|
||||
"before deep" &&
|
||||
|
||||
git -C sparse-index sparse-checkout set folder1 &&
|
||||
# Remove folder1, add deep
|
||||
test_sparse_checkout_set \
|
||||
"deep folder2 x" \
|
||||
"before folder1" &&
|
||||
|
||||
git -C sparse-index ls-files --sparse --stage >cache &&
|
||||
for dir in deep folder2 x
|
||||
do
|
||||
TREE=$(git -C sparse-index rev-parse HEAD:$dir) &&
|
||||
grep "040000 $TREE 0 $dir/" cache \
|
||||
|| return 1
|
||||
done &&
|
||||
|
||||
git -C sparse-index sparse-checkout set deep/deeper1 &&
|
||||
|
||||
git -C sparse-index ls-files --sparse --stage >cache &&
|
||||
for dir in deep/deeper2 folder1 folder2 x
|
||||
do
|
||||
TREE=$(git -C sparse-index rev-parse HEAD:$dir) &&
|
||||
grep "040000 $TREE 0 $dir/" cache \
|
||||
|| return 1
|
||||
done &&
|
||||
# Replace deep with deep/deeper2 (dropping deep/deeper1)
|
||||
# Add folder1
|
||||
test_sparse_checkout_set \
|
||||
"deep/deeper2 folder1 folder2 x" \
|
||||
"before deep/deeper1" &&
|
||||
|
||||
# Disabling the sparse-index replaces tree entries with full ones
|
||||
git -C sparse-index sparse-checkout init --no-sparse-index &&
|
||||
|
Loading…
Reference in New Issue
Block a user