You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
3.5 KiB
151 lines
3.5 KiB
#!/bin/sh |
|
|
|
test_description='test the `scalar clone` subcommand' |
|
|
|
. ./test-lib.sh |
|
|
|
GIT_TEST_MAINT_SCHEDULER="crontab:test-tool crontab cron.txt,launchctl:true,schtasks:true" |
|
export GIT_TEST_MAINT_SCHEDULER |
|
|
|
test_expect_success 'set up repository to clone' ' |
|
rm -rf .git && |
|
git init to-clone && |
|
( |
|
cd to-clone && |
|
git branch -m base && |
|
|
|
test_commit first && |
|
test_commit second && |
|
test_commit third && |
|
|
|
git switch -c parallel first && |
|
mkdir -p 1/2 && |
|
test_commit 1/2/3 && |
|
|
|
git switch base && |
|
|
|
# By default, permit |
|
git config uploadpack.allowfilter true && |
|
git config uploadpack.allowanysha1inwant true |
|
) |
|
' |
|
|
|
cleanup_clone () { |
|
rm -rf "$1" |
|
} |
|
|
|
test_expect_success 'creates content in enlistment root' ' |
|
enlistment=cloned && |
|
|
|
scalar clone "file://$(pwd)/to-clone" $enlistment && |
|
ls -A $enlistment >enlistment-root && |
|
test_line_count = 1 enlistment-root && |
|
test_path_is_dir $enlistment/src && |
|
test_path_is_dir $enlistment/src/.git && |
|
|
|
cleanup_clone $enlistment |
|
' |
|
|
|
test_expect_success 'with spaces' ' |
|
enlistment="cloned with space" && |
|
|
|
scalar clone "file://$(pwd)/to-clone" "$enlistment" && |
|
test_path_is_dir "$enlistment" && |
|
test_path_is_dir "$enlistment/src" && |
|
test_path_is_dir "$enlistment/src/.git" && |
|
|
|
cleanup_clone "$enlistment" |
|
' |
|
|
|
test_expect_success 'partial clone if supported by server' ' |
|
enlistment=partial-clone && |
|
|
|
scalar clone "file://$(pwd)/to-clone" $enlistment && |
|
|
|
( |
|
cd $enlistment/src && |
|
|
|
# Two promisor packs: one for refs, the other for blobs |
|
ls .git/objects/pack/pack-*.promisor >promisorlist && |
|
test_line_count = 2 promisorlist |
|
) && |
|
|
|
cleanup_clone $enlistment |
|
' |
|
|
|
test_expect_success 'fall back on full clone if partial unsupported' ' |
|
enlistment=no-partial-support && |
|
|
|
test_config -C to-clone uploadpack.allowfilter false && |
|
test_config -C to-clone uploadpack.allowanysha1inwant false && |
|
|
|
scalar clone "file://$(pwd)/to-clone" $enlistment 2>err && |
|
grep "filtering not recognized by server, ignoring" err && |
|
|
|
( |
|
cd $enlistment/src && |
|
|
|
# Still get a refs promisor file, but none for blobs |
|
ls .git/objects/pack/pack-*.promisor >promisorlist && |
|
test_line_count = 1 promisorlist |
|
) && |
|
|
|
cleanup_clone $enlistment |
|
' |
|
|
|
test_expect_success 'initializes sparse-checkout by default' ' |
|
enlistment=sparse && |
|
|
|
scalar clone "file://$(pwd)/to-clone" $enlistment && |
|
( |
|
cd $enlistment/src && |
|
test_cmp_config true core.sparseCheckout && |
|
test_cmp_config true core.sparseCheckoutCone |
|
) && |
|
|
|
cleanup_clone $enlistment |
|
' |
|
|
|
test_expect_success '--full-clone does not create sparse-checkout' ' |
|
enlistment=full-clone && |
|
|
|
scalar clone --full-clone "file://$(pwd)/to-clone" $enlistment && |
|
( |
|
cd $enlistment/src && |
|
test_cmp_config "" --default "" core.sparseCheckout && |
|
test_cmp_config "" --default "" core.sparseCheckoutCone |
|
) && |
|
|
|
cleanup_clone $enlistment |
|
' |
|
|
|
test_expect_success '--single-branch clones HEAD only' ' |
|
enlistment=single-branch && |
|
|
|
scalar clone --single-branch "file://$(pwd)/to-clone" $enlistment && |
|
( |
|
cd $enlistment/src && |
|
git for-each-ref refs/remotes/origin >out && |
|
test_line_count = 1 out && |
|
grep "refs/remotes/origin/base" out |
|
) && |
|
|
|
cleanup_clone $enlistment |
|
' |
|
|
|
test_expect_success '--no-single-branch clones all branches' ' |
|
enlistment=no-single-branch && |
|
|
|
scalar clone --no-single-branch "file://$(pwd)/to-clone" $enlistment && |
|
( |
|
cd $enlistment/src && |
|
git for-each-ref refs/remotes/origin >out && |
|
test_line_count = 2 out && |
|
grep "refs/remotes/origin/base" out && |
|
grep "refs/remotes/origin/parallel" out |
|
) && |
|
|
|
cleanup_clone $enlistment |
|
' |
|
|
|
test_done
|
|
|