37 lines
895 B
Bash
37 lines
895 B
Bash
|
#!/bin/sh
|
||
|
|
||
|
test_description='check quarantine of objects during push'
|
||
|
. ./test-lib.sh
|
||
|
|
||
|
test_expect_success 'create picky dest repo' '
|
||
|
git init --bare dest.git &&
|
||
|
write_script dest.git/hooks/pre-receive <<-\EOF
|
||
|
while read old new ref; do
|
||
|
test "$(git log -1 --format=%s $new)" = reject && exit 1
|
||
|
done
|
||
|
exit 0
|
||
|
EOF
|
||
|
'
|
||
|
|
||
|
test_expect_success 'accepted objects work' '
|
||
|
test_commit ok &&
|
||
|
git push dest.git HEAD &&
|
||
|
commit=$(git rev-parse HEAD) &&
|
||
|
git --git-dir=dest.git cat-file commit $commit
|
||
|
'
|
||
|
|
||
|
test_expect_success 'rejected objects are not installed' '
|
||
|
test_commit reject &&
|
||
|
commit=$(git rev-parse HEAD) &&
|
||
|
test_must_fail git push dest.git reject &&
|
||
|
test_must_fail git --git-dir=dest.git cat-file commit $commit
|
||
|
'
|
||
|
|
||
|
test_expect_success 'rejected objects are removed' '
|
||
|
echo "incoming-*" >expect &&
|
||
|
(cd dest.git/objects && echo incoming-*) >actual &&
|
||
|
test_cmp expect actual
|
||
|
'
|
||
|
|
||
|
test_done
|