]> git.ipfire.org Git - thirdparty/git.git/blob - t/t5547-push-quarantine.sh
tmp-objdir: quote paths we add to alternates
[thirdparty/git.git] / t / t5547-push-quarantine.sh
1 #!/bin/sh
2
3 test_description='check quarantine of objects during push'
4 . ./test-lib.sh
5
6 test_expect_success 'create picky dest repo' '
7 git init --bare dest.git &&
8 write_script dest.git/hooks/pre-receive <<-\EOF
9 while read old new ref; do
10 test "$(git log -1 --format=%s $new)" = reject && exit 1
11 done
12 exit 0
13 EOF
14 '
15
16 test_expect_success 'accepted objects work' '
17 test_commit ok &&
18 git push dest.git HEAD &&
19 commit=$(git rev-parse HEAD) &&
20 git --git-dir=dest.git cat-file commit $commit
21 '
22
23 test_expect_success 'rejected objects are not installed' '
24 test_commit reject &&
25 commit=$(git rev-parse HEAD) &&
26 test_must_fail git push dest.git reject &&
27 test_must_fail git --git-dir=dest.git cat-file commit $commit
28 '
29
30 test_expect_success 'rejected objects are removed' '
31 echo "incoming-*" >expect &&
32 (cd dest.git/objects && echo incoming-*) >actual &&
33 test_cmp expect actual
34 '
35
36 # MINGW does not allow colons in pathnames in the first place
37 test_expect_success !MINGW 'push to repo path with colon' '
38 # The interesting failure case here is when the
39 # receiving end cannot access its original object directory,
40 # so make it likely for us to generate a delta by having
41 # a non-trivial file with multiple versions.
42
43 test-genrandom foo 4096 >file.bin &&
44 git add file.bin &&
45 git commit -m bin &&
46 git clone --bare . xxx:yyy.git &&
47
48 echo change >>file.bin &&
49 git commit -am change &&
50 # Note that we have to use the full path here, or it gets confused
51 # with the ssh host:path syntax.
52 git push "$PWD/xxx:yyy.git" HEAD
53 '
54
55 test_done