]>
Commit | Line | Data |
---|---|---|
c9a42c4a JS |
1 | #!/bin/sh |
2 | ||
3 | test_description='some bundle related tests' | |
95cf2c01 | 4 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
334afbc7 JS |
5 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
6 | ||
c9a42c4a JS |
7 | . ./test-lib.sh |
8 | ||
9 | test_expect_success 'setup' ' | |
c5aecfc8 | 10 | test_oid_cache <<-EOF && |
11 | version sha1:2 | |
12 | version sha256:3 | |
13 | EOF | |
8a557bb7 | 14 | test_commit initial && |
c9a42c4a JS |
15 | test_tick && |
16 | git tag -m tag tag && | |
8a557bb7 TR |
17 | test_commit second && |
18 | test_commit third && | |
19 | git tag -d initial && | |
20 | git tag -d second && | |
21 | git tag -d third | |
c9a42c4a JS |
22 | ' |
23 | ||
3bbbe467 | 24 | test_expect_success '"verify" needs a worktree' ' |
95cf2c01 | 25 | git bundle create tip.bundle -1 main && |
85db3488 | 26 | nongit test_must_fail git bundle verify ../tip.bundle 2>err && |
6789275d | 27 | test_grep "need a repository" err |
3bbbe467 JS |
28 | ' |
29 | ||
2c8544ab LF |
30 | test_expect_success 'annotated tags can be excluded by rev-list options' ' |
31 | git bundle create bundle --all --since=7.Apr.2005.15:14:00.-0700 && | |
63766510 ÆAB |
32 | cat >expect <<-EOF && |
33 | $(git rev-parse HEAD) HEAD | |
34 | $(git rev-parse tag) refs/tags/tag | |
35 | $(git rev-parse main) refs/heads/main | |
36 | EOF | |
37 | git ls-remote bundle >actual && | |
38 | test_cmp expect actual && | |
39 | ||
c9a42c4a | 40 | git bundle create bundle --all --since=7.Apr.2005.15:16:00.-0700 && |
63766510 ÆAB |
41 | cat >expect <<-EOF && |
42 | $(git rev-parse HEAD) HEAD | |
43 | $(git rev-parse main) refs/heads/main | |
44 | EOF | |
45 | git ls-remote bundle >actual && | |
46 | test_cmp expect actual | |
c9a42c4a JS |
47 | ' |
48 | ||
0f5cdf65 | 49 | test_expect_success 'die if bundle file cannot be created' ' |
0f5cdf65 CH |
50 | mkdir adir && |
51 | test_must_fail git bundle create adir --all | |
0f5cdf65 CH |
52 | ' |
53 | ||
5bb0fd2c | 54 | test_expect_success 'bundle --stdin' ' |
95cf2c01 | 55 | echo main | git bundle create stdin-bundle.bdl --stdin && |
63766510 ÆAB |
56 | cat >expect <<-EOF && |
57 | $(git rev-parse main) refs/heads/main | |
58 | EOF | |
59 | git ls-remote stdin-bundle.bdl >actual && | |
60 | test_cmp expect actual | |
f62e0a39 JN |
61 | ' |
62 | ||
5bb0fd2c | 63 | test_expect_success 'bundle --stdin <rev-list options>' ' |
95cf2c01 | 64 | echo main | git bundle create hybrid-bundle.bdl --stdin tag && |
63766510 ÆAB |
65 | cat >expect <<-EOF && |
66 | $(git rev-parse main) refs/heads/main | |
67 | EOF | |
68 | git ls-remote stdin-bundle.bdl >actual && | |
69 | test_cmp expect actual | |
f62e0a39 JN |
70 | ' |
71 | ||
54440e15 | 72 | test_expect_success 'empty bundle file is rejected' ' |
95cf6464 | 73 | >empty-bundle && |
8a557bb7 | 74 | test_must_fail git fetch empty-bundle |
54440e15 BH |
75 | ' |
76 | ||
bc2fed49 TR |
77 | # This triggers a bug in older versions where the resulting line (with |
78 | # --pretty=oneline) was longer than a 1024-char buffer. | |
79 | test_expect_success 'ridiculously long subject in boundary' ' | |
95cf6464 | 80 | >file4 && |
bc2fed49 TR |
81 | test_tick && |
82 | git add file4 && | |
83 | printf "%01200d\n" 0 | git commit -F - && | |
84 | test_commit fifth && | |
85 | git bundle create long-subject-bundle.bdl HEAD^..HEAD && | |
63766510 ÆAB |
86 | cat >expect <<-EOF && |
87 | $(git rev-parse main) HEAD | |
88 | EOF | |
89 | git bundle list-heads long-subject-bundle.bdl >actual && | |
90 | test_cmp expect actual && | |
91 | ||
bc2fed49 | 92 | git fetch long-subject-bundle.bdl && |
63766510 | 93 | |
b227bead | 94 | algo=$(test_oid algo) && |
95 | if test "$algo" != sha1 | |
63766510 ÆAB |
96 | then |
97 | echo "@object-format=sha256" | |
98 | fi >expect && | |
99 | cat >>expect <<-EOF && | |
100 | -$(git log --pretty=format:"%H %s" -1 HEAD^) | |
101 | $(git rev-parse HEAD) HEAD | |
102 | EOF | |
103 | ||
b227bead | 104 | if test "$algo" = sha1 |
63766510 ÆAB |
105 | then |
106 | head -n 3 long-subject-bundle.bdl | |
107 | else | |
108 | head -n 4 long-subject-bundle.bdl | |
109 | fi | grep -v "^#" >actual && | |
110 | ||
111 | test_cmp expect actual | |
bc2fed49 TR |
112 | ' |
113 | ||
5446e33f | 114 | test_expect_success 'prerequisites with an empty commit message' ' |
95cf6464 | 115 | >file1 && |
5446e33f LF |
116 | git add file1 && |
117 | test_tick && | |
118 | git commit --allow-empty-message -m "" && | |
119 | test_commit file2 && | |
120 | git bundle create bundle HEAD^.. && | |
121 | git bundle verify bundle | |
122 | ' | |
123 | ||
2c8ee1f5 JK |
124 | test_expect_success 'failed bundle creation does not leave cruft' ' |
125 | # This fails because the bundle would be empty. | |
95cf2c01 | 126 | test_must_fail git bundle create fail.bundle main..main && |
2c8ee1f5 JK |
127 | test_path_is_missing fail.bundle.lock |
128 | ' | |
129 | ||
fddf2ebe JT |
130 | test_expect_success 'fetch SHA-1 from bundle' ' |
131 | test_create_repo foo && | |
132 | test_commit -C foo x && | |
95cf2c01 | 133 | git -C foo bundle create tip.bundle -1 main && |
fddf2ebe JT |
134 | git -C foo rev-parse HEAD >hash && |
135 | ||
136 | # Exercise to ensure that fetching a SHA-1 from a bundle works with no | |
137 | # errors | |
138 | git fetch --no-tags foo/tip.bundle "$(cat hash)" | |
139 | ' | |
140 | ||
c5aecfc8 | 141 | test_expect_success 'git bundle uses expected default format' ' |
142 | git bundle create bundle HEAD^.. && | |
63766510 ÆAB |
143 | cat >expect <<-EOF && |
144 | # v$(test_oid version) git bundle | |
145 | EOF | |
146 | head -n1 bundle >actual && | |
147 | test_cmp expect actual | |
c5aecfc8 | 148 | ' |
149 | ||
150 | test_expect_success 'git bundle v3 has expected contents' ' | |
151 | git branch side HEAD && | |
152 | git bundle create --version=3 bundle HEAD^..side && | |
153 | head -n2 bundle >actual && | |
154 | cat >expect <<-EOF && | |
155 | # v3 git bundle | |
156 | @object-format=$(test_oid algo) | |
157 | EOF | |
158 | test_cmp expect actual && | |
159 | git bundle verify bundle | |
160 | ' | |
161 | ||
162 | test_expect_success 'git bundle v3 rejects unknown capabilities' ' | |
163 | cat >new <<-EOF && | |
164 | # v3 git bundle | |
165 | @object-format=$(test_oid algo) | |
166 | @unknown=silly | |
167 | EOF | |
168 | test_must_fail git bundle verify new 2>output && | |
6789275d | 169 | test_grep "unknown capability .unknown=silly." output |
c5aecfc8 | 170 | ' |
171 | ||
c9a42c4a | 172 | test_done |