mirror of
https://github.com/git/git
synced 2024-09-13 21:34:42 +00:00
61 lines
1.9 KiB
Bash
61 lines
1.9 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
test_description='check that local clone does not fetch from promisor remotes'
|
||
|
|
||
|
. ./test-lib.sh
|
||
|
|
||
|
test_expect_success 'create evil repo' '
|
||
|
git init tmp &&
|
||
|
test_commit -C tmp a &&
|
||
|
git -C tmp config uploadpack.allowfilter 1 &&
|
||
|
git clone --filter=blob:none --no-local --no-checkout tmp evil &&
|
||
|
rm -rf tmp &&
|
||
|
|
||
|
git -C evil config remote.origin.uploadpack \"\$TRASH_DIRECTORY/fake-upload-pack\" &&
|
||
|
write_script fake-upload-pack <<-\EOF &&
|
||
|
echo >&2 "fake-upload-pack running"
|
||
|
>"$TRASH_DIRECTORY/script-executed"
|
||
|
exit 1
|
||
|
EOF
|
||
|
export TRASH_DIRECTORY &&
|
||
|
|
||
|
# empty shallow file disables local clone optimization
|
||
|
>evil/.git/shallow
|
||
|
'
|
||
|
|
||
|
test_expect_failure 'local clone must not fetch from promisor remote and execute script' '
|
||
|
rm -f script-executed &&
|
||
|
test_must_fail git clone \
|
||
|
--upload-pack="GIT_TEST_ASSUME_DIFFERENT_OWNER=true git-upload-pack" \
|
||
|
evil clone1 2>err &&
|
||
|
! grep "fake-upload-pack running" err &&
|
||
|
test_path_is_missing script-executed
|
||
|
'
|
||
|
|
||
|
test_expect_failure 'clone from file://... must not fetch from promisor remote and execute script' '
|
||
|
rm -f script-executed &&
|
||
|
test_must_fail git clone \
|
||
|
--upload-pack="GIT_TEST_ASSUME_DIFFERENT_OWNER=true git-upload-pack" \
|
||
|
"file://$(pwd)/evil" clone2 2>err &&
|
||
|
! grep "fake-upload-pack running" err &&
|
||
|
test_path_is_missing script-executed
|
||
|
'
|
||
|
|
||
|
test_expect_failure 'fetch from file://... must not fetch from promisor remote and execute script' '
|
||
|
rm -f script-executed &&
|
||
|
test_must_fail git fetch \
|
||
|
--upload-pack="GIT_TEST_ASSUME_DIFFERENT_OWNER=true git-upload-pack" \
|
||
|
"file://$(pwd)/evil" 2>err &&
|
||
|
! grep "fake-upload-pack running" err &&
|
||
|
test_path_is_missing script-executed
|
||
|
'
|
||
|
|
||
|
test_expect_success 'pack-objects should fetch from promisor remote and execute script' '
|
||
|
rm -f script-executed &&
|
||
|
echo "HEAD" | test_must_fail git -C evil pack-objects --revs --stdout >/dev/null 2>err &&
|
||
|
grep "fake-upload-pack running" err &&
|
||
|
test_path_is_file script-executed
|
||
|
'
|
||
|
|
||
|
test_done
|