t5538: move http push tests out to t5542
[git/git.git] / t / t5542-push-http-shallow.sh
1 #!/bin/sh
2
3 test_description='push from/to a shallow clone over http'
4
5 . ./test-lib.sh
6
7 if test -n "$NO_CURL"; then
8 say 'skipping test, git built without http support'
9 test_done
10 fi
11
12 . "$TEST_DIRECTORY"/lib-httpd.sh
13 start_httpd
14
15 commit() {
16 echo "$1" >tracked &&
17 git add tracked &&
18 git commit -m "$1"
19 }
20
21 test_expect_success 'setup' '
22 git config --global transfer.fsckObjects true &&
23 commit 1 &&
24 commit 2 &&
25 commit 3 &&
26 commit 4 &&
27 git clone . full &&
28 (
29 git init full-abc &&
30 cd full-abc &&
31 commit a &&
32 commit b &&
33 commit c
34 ) &&
35 git clone --no-local --depth=2 .git shallow &&
36 git --git-dir=shallow/.git log --format=%s >actual &&
37 cat <<EOF >expect &&
38 4
39 3
40 EOF
41 test_cmp expect actual &&
42 git clone --no-local --depth=2 full-abc/.git shallow2 &&
43 git --git-dir=shallow2/.git log --format=%s >actual &&
44 cat <<EOF >expect &&
45 c
46 b
47 EOF
48 test_cmp expect actual
49 '
50
51 test_expect_success 'push to shallow repo via http' '
52 git clone --bare --no-local shallow "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
53 (
54 cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
55 git config http.receivepack true
56 ) &&
57 (
58 cd full &&
59 commit 9 &&
60 git push $HTTPD_URL/smart/repo.git +master:refs/remotes/top/master
61 ) &&
62 (
63 cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
64 git fsck &&
65 git log --format=%s top/master >actual &&
66 cat <<EOF >expect &&
67 9
68 4
69 3
70 EOF
71 test_cmp expect actual
72 )
73 '
74
75 test_expect_success 'push from shallow repo via http' '
76 mv "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" shallow-upstream.git &&
77 git clone --bare --no-local full "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
78 (
79 cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
80 git config http.receivepack true
81 ) &&
82 commit 10 &&
83 git push $HTTPD_URL/smart/repo.git +master:refs/remotes/top/master &&
84 (
85 cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
86 git fsck &&
87 git log --format=%s top/master >actual &&
88 cat <<EOF >expect &&
89 10
90 4
91 3
92 2
93 1
94 EOF
95 test_cmp expect actual
96 )
97 '
98
99 stop_httpd
100 test_done