1 # Set up and run tests of the 'bundle-uri' command in protocol v2
3 # The test that includes this script should set BUNDLE_URI_PROTOCOL
4 # to one of "file", "git", or "http".
6 BUNDLE_URI_TEST_PARENT
=
8 BUNDLE_URI_TEST_BUNDLE_URI
=
9 case "$BUNDLE_URI_PROTOCOL" in
11 BUNDLE_URI_PARENT
=file_parent
12 BUNDLE_URI_REPO_URI
="file://$PWD/file_parent"
13 BUNDLE_URI_BUNDLE_URI
="$BUNDLE_URI_REPO_URI/fake.bdl"
14 test_set_prereq BUNDLE_URI_FILE
17 .
"$TEST_DIRECTORY"/lib-git-daemon.sh
18 start_git_daemon
--export-all --enable=receive-pack
19 BUNDLE_URI_PARENT
="$GIT_DAEMON_DOCUMENT_ROOT_PATH/parent"
20 BUNDLE_URI_REPO_URI
="$GIT_DAEMON_URL/parent"
21 BUNDLE_URI_BUNDLE_URI
="https://example.com/fake.bdl"
22 test_set_prereq BUNDLE_URI_GIT
25 .
"$TEST_DIRECTORY"/lib-httpd.sh
27 BUNDLE_URI_PARENT
="$HTTPD_DOCUMENT_ROOT_PATH/http_parent"
28 BUNDLE_URI_REPO_URI
="$HTTPD_URL/smart/http_parent"
29 BUNDLE_URI_BUNDLE_URI
="https://example.com/fake.bdl"
30 test_set_prereq BUNDLE_URI_HTTP
33 BUG
"Need to pass valid BUNDLE_URI_PROTOCOL (was \"$BUNDLE_URI_PROTOCOL\")"
37 test_expect_success
"setup protocol v2 $BUNDLE_URI_PROTOCOL:// tests" '
38 git init "$BUNDLE_URI_PARENT" &&
39 test_commit -C "$BUNDLE_URI_PARENT" one &&
40 git -C "$BUNDLE_URI_PARENT" config uploadpack.advertiseBundleURIs true
43 case "$BUNDLE_URI_PROTOCOL" in
45 test_expect_success
"setup config for $BUNDLE_URI_PROTOCOL:// tests" '
46 git -C "$BUNDLE_URI_PARENT" config http.receivepack true
52 BUNDLE_URI_BUNDLE_URI_ESCAPED
=$
(echo "$BUNDLE_URI_BUNDLE_URI" | test_uri_escape
)
54 test_expect_success
"connect with $BUNDLE_URI_PROTOCOL:// using protocol v2: no bundle-uri" '
55 test_when_finished "rm -f log" &&
56 test_when_finished "git -C \"$BUNDLE_URI_PARENT\" config uploadpack.advertiseBundleURIs true" &&
57 git -C "$BUNDLE_URI_PARENT" config uploadpack.advertiseBundleURIs false &&
59 GIT_TRACE_PACKET="$PWD/log" \
61 -c protocol.version=2 \
62 ls-remote --symref "$BUNDLE_URI_REPO_URI" \
65 # Server responded using protocol v2
66 grep "< version 2" log &&
71 test_expect_success
"connect with $BUNDLE_URI_PROTOCOL:// using protocol v2: have bundle-uri" '
72 test_when_finished "rm -f log" &&
74 GIT_TRACE_PACKET="$PWD/log" \
76 -c protocol.version=2 \
77 ls-remote --symref "$BUNDLE_URI_REPO_URI" \
80 # Server responded using protocol v2
81 grep "< version 2" log &&
83 # Server advertised bundle-uri capability
84 grep "< bundle-uri" log
87 test_expect_success
"clone with $BUNDLE_URI_PROTOCOL:// using protocol v2: request bundle-uris" '
88 test_when_finished "rm -rf log* cloned*" &&
90 GIT_TRACE_PACKET="$PWD/log" \
92 -c transfer.bundleURI=false \
93 -c protocol.version=2 \
94 clone "$BUNDLE_URI_REPO_URI" cloned \
97 # Server responded using protocol v2
98 grep "< version 2" log &&
100 # Server advertised bundle-uri capability
101 grep "< bundle-uri" log &&
103 # Client did not issue bundle-uri command
104 ! grep "> command=bundle-uri" log &&
106 GIT_TRACE_PACKET="$PWD/log" \
108 -c transfer.bundleURI=true \
109 -c protocol.version=2 \
110 clone "$BUNDLE_URI_REPO_URI" cloned2 \
113 # Server responded using protocol v2
114 grep "< version 2" log &&
116 # Server advertised bundle-uri capability
117 grep "< bundle-uri" log &&
119 # Client issued bundle-uri command
120 grep "> command=bundle-uri" log &&
122 GIT_TRACE_PACKET="$PWD/log3" \
124 -c transfer.bundleURI=true \
125 -c protocol.version=2 \
126 clone --bundle-uri="$BUNDLE_URI_BUNDLE_URI" \
127 "$BUNDLE_URI_REPO_URI" cloned3 \
130 # Server responded using protocol v2
131 grep "< version 2" log3 &&
133 # Server advertised bundle-uri capability
134 grep "< bundle-uri" log3 &&
136 # Client did not issue bundle-uri command (--bundle-uri override)
137 ! grep "> command=bundle-uri" log3
140 # The remaining tests will all assume transfer.bundleURI=true
142 # This test can be removed when transfer.bundleURI is enabled by default.
143 test_expect_success
'enable transfer.bundleURI for remaining tests' '
144 git config --global transfer.bundleURI true
147 test_expect_success
"test bundle-uri with $BUNDLE_URI_PROTOCOL:// using protocol v2" '
148 test_config -C "$BUNDLE_URI_PARENT" \
149 bundle.only.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED" &&
151 # All data about bundle URIs
152 cat >expect <<-EOF &&
157 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED
160 test-tool bundle-uri \
162 "$BUNDLE_URI_REPO_URI" \
164 test_cmp_config_output expect actual
167 test_expect_success
"test bundle-uri with $BUNDLE_URI_PROTOCOL:// using protocol v2 and extra data" '
168 test_config -C "$BUNDLE_URI_PARENT" \
169 bundle.only.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED" &&
171 # Extra data should be ignored
172 test_config -C "$BUNDLE_URI_PARENT" bundle.only.extra bogus &&
174 # All data about bundle URIs
175 cat >expect <<-EOF &&
180 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED
183 test-tool bundle-uri \
185 "$BUNDLE_URI_REPO_URI" \
187 test_cmp_config_output expect actual
190 test_expect_success
"test bundle-uri with $BUNDLE_URI_PROTOCOL:// using protocol v2 with list" '
191 test_config -C "$BUNDLE_URI_PARENT" \
192 bundle.bundle1.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED-1.bdl" &&
193 test_config -C "$BUNDLE_URI_PARENT" \
194 bundle.bundle2.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED-2.bdl" &&
195 test_config -C "$BUNDLE_URI_PARENT" \
196 bundle.bundle3.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED-3.bdl" &&
198 # All data about bundle URIs
199 cat >expect <<-EOF &&
204 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED-1.bdl
206 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED-2.bdl
208 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED-3.bdl
211 test-tool bundle-uri \
213 "$BUNDLE_URI_REPO_URI" \
215 test_cmp_config_output expect actual