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 cloned2" &&
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
123 # The remaining tests will all assume transfer.bundleURI=true
125 # This test can be removed when transfer.bundleURI is enabled by default.
126 test_expect_success
'enable transfer.bundleURI for remaining tests' '
127 git config --global transfer.bundleURI true
130 test_expect_success
"test bundle-uri with $BUNDLE_URI_PROTOCOL:// using protocol v2" '
131 test_config -C "$BUNDLE_URI_PARENT" \
132 bundle.only.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED" &&
134 # All data about bundle URIs
135 cat >expect <<-EOF &&
140 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED
143 test-tool bundle-uri \
145 "$BUNDLE_URI_REPO_URI" \
147 test_cmp_config_output expect actual
150 test_expect_success
"test bundle-uri with $BUNDLE_URI_PROTOCOL:// using protocol v2 and extra data" '
151 test_config -C "$BUNDLE_URI_PARENT" \
152 bundle.only.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED" &&
154 # Extra data should be ignored
155 test_config -C "$BUNDLE_URI_PARENT" bundle.only.extra bogus &&
157 # All data about bundle URIs
158 cat >expect <<-EOF &&
163 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED
166 test-tool bundle-uri \
168 "$BUNDLE_URI_REPO_URI" \
170 test_cmp_config_output expect actual
173 test_expect_success
"test bundle-uri with $BUNDLE_URI_PROTOCOL:// using protocol v2 with list" '
174 test_config -C "$BUNDLE_URI_PARENT" \
175 bundle.bundle1.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED-1.bdl" &&
176 test_config -C "$BUNDLE_URI_PARENT" \
177 bundle.bundle2.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED-2.bdl" &&
178 test_config -C "$BUNDLE_URI_PARENT" \
179 bundle.bundle3.uri "$BUNDLE_URI_BUNDLE_URI_ESCAPED-3.bdl" &&
181 # All data about bundle URIs
182 cat >expect <<-EOF &&
187 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED-1.bdl
189 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED-2.bdl
191 uri = $BUNDLE_URI_BUNDLE_URI_ESCAPED-3.bdl
194 test-tool bundle-uri \
196 "$BUNDLE_URI_REPO_URI" \
198 test_cmp_config_output expect actual