| #!/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 |