git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
blob 872bc39ad1beca0dd101935da7aafd39f7cba613 6017 bytes (raw)
name: t/lib-t5730-protocol-v2-bundle-uri.sh 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
 
# Included from t573*-protocol-v2-bundle-uri-*.sh

GIT_TEST_BUNDLE_URI=1
export GIT_TEST_BUNDLE_URI

T5730_PARENT=
T5730_URI=
T5730_BUNDLE_URI=
case "$T5730_PROTOCOL" in
file)
	T5730_PARENT=file_parent
	T5730_URI="file://$PWD/file_parent"
	T5730_BUNDLE_URI="$T5730_URI/fake.bdl"
	test_set_prereq T5730_FILE
	;;
git)
	. "$TEST_DIRECTORY"/lib-git-daemon.sh
	start_git_daemon --export-all --enable=receive-pack
	T5730_PARENT="$GIT_DAEMON_DOCUMENT_ROOT_PATH/parent"
	T5730_URI="$GIT_DAEMON_URL/parent"
	T5730_BUNDLE_URI="https://example.com/fake.bdl"
	test_set_prereq T5730_GIT
	;;
http)
	. "$TEST_DIRECTORY"/lib-httpd.sh
	start_httpd
	T5730_PARENT="$HTTPD_DOCUMENT_ROOT_PATH/http_parent"
	T5730_URI="$HTTPD_URL/smart/http_parent"
	T5730_BUNDLE_URI="https://example.com/fake.bdl"
	test_set_prereq T5730_HTTP
	;;
*)
	BUG "Need to pass valid T5730_PROTOCOL (was $T5730_PROTOCOL)"
	;;
esac

test_expect_success "setup protocol v2 $T5730_PROTOCOL:// tests" '
	git init "$T5730_PARENT" &&
	test_commit -C "$T5730_PARENT" one &&
	git -C "$T5730_PARENT" config uploadpack.advertiseBundleURIs true &&
	git -C "$T5730_PARENT" config bundle.version 1 &&
	git -C "$T5730_PARENT" config bundle.mode all
'

# Poor man's URI escaping. Good enough for the test suite whose trash
# directory has a space in it. See 93c3fcbe4d4 (git-svn: attempt to
# mimic SVN 1.7 URL canonicalization, 2012-07-28) for prior art.
test_uri_escape() {
	sed 's/ /%20/g'
}

case "$T5730_PROTOCOL" in
http)
	test_expect_success "setup config for $T5730_PROTOCOL:// tests" '
		git -C "$T5730_PARENT" config http.receivepack true
	'
	;;
*)
	;;
esac
T5730_BUNDLE_URI_ESCAPED=$(echo "$T5730_BUNDLE_URI" | test_uri_escape)

test_expect_success "connect with $T5730_PROTOCOL:// using protocol v2: no bundle-uri" '
	test_when_finished "rm -f log" &&
	test_when_finished "git -C \"$T5730_PARENT\" config uploadpack.advertiseBundleURIs true" &&
	git -C "$T5730_PARENT" config uploadpack.advertiseBundleURIs false &&

	GIT_TRACE_PACKET="$PWD/log" \
	test-tool bundle-uri \
		ls-remote "$T5730_URI" \
		>actual 2>err &&

	# Server responded using protocol v2
	grep "< version 2" log &&

	! grep bundle-uri log
'

test_expect_success "connect with $T5730_PROTOCOL:// using protocol v2: have bundle-uri" '
	test_when_finished "rm -f log" &&

	test_config -C "$T5730_PARENT" \
		bundle.only.uri "$T5730_BUNDLE_URI_ESCAPED" &&

	GIT_TRACE_PACKET="$PWD/log" \
	test-tool bundle-uri \
		ls-remote "$T5730_URI" \
		>actual 2>err &&

	# Server responded using protocol v2
	grep "< version 2" log &&

	# Server advertised bundle-uri capability
	grep bundle-uri log
'

test_expect_success !T5730_HTTP "bad client with $T5730_PROTOCOL:// using protocol v2" '
	test_when_finished "rm -f log" &&

	test_config -C "$T5730_PARENT" \
		bundle.only.uri "$T5730_BUNDLE_URI_ESCAPED" &&

	cat >err.expect <<-\EOF &&
	Cloning into '"'"'child'"'"'...
	EOF
	case "$T5730_PROTOCOL" in
	file)
		cat >fatal-bundle-uri.expect <<-\EOF
		fatal: bundle-uri: unexpected argument: '"'"'test-bad-client'"'"'
		EOF
		;;
	*)
		cat >fatal.expect <<-\EOF
		fatal: read error: Connection reset by peer
		EOF
		;;
	esac &&

	test_when_finished "rm -rf child" &&
	test_must_fail ok=sigpipe env \
		GIT_TRACE_PACKET="$PWD/log" \
		GIT_TEST_PROTOCOL_BAD_BUNDLE_URI=true \
		git -c protocol.version=2 \
		clone "$T5730_URI" child \
		>out 2>err &&
	test_must_be_empty out &&

	grep -v -e ^fatal: -e ^error: err >err.actual &&
	test_cmp err.expect err.actual &&

	case "$T5730_PROTOCOL" in
	file)
		# Due to general race conditions with client/server replies we
		# may or may not get "fatal: the remote end hung up
		# expectedly" here
		grep "^fatal: bundle-uri:" err >fatal-bundle-uri.actual &&
		test_cmp fatal-bundle-uri.expect fatal-bundle-uri.actual
		;;
	*)
		grep "^fatal:" err >fatal.actual &&
		# Due to the same race conditions this might be
		# "fatal: read error: Connection reset by peer", "fatal: the remote end
		# hung up unexpectedly" etc.
		cat fatal.actual &&
		test_file_not_empty fatal.actual
		;;
	esac &&

	grep "clone> test-bad-client$" log >sent-bad-request &&
	test_file_not_empty sent-bad-request
'

test_expect_success "ls-remote with $T5730_PROTOCOL:// using protocol v2" '
	test_when_finished "rm -f log" &&

	test_config -C "$T5730_PARENT" \
		bundle.only.uri "$T5730_BUNDLE_URI_ESCAPED" &&

	# All data about bundle URIs
	cat >expect <<-EOF &&
	[bundle]
		version = 1
		mode = all
	[bundle "only"]
		uri = $T5730_BUNDLE_URI_ESCAPED
	EOF
	GIT_TRACE_PACKET="$PWD/log" \
	test-tool bundle-uri \
		ls-remote \
		"$T5730_URI" \
		>actual &&
	test_cmp_config_output expect actual
'

test_expect_success "ls-remote with $T5730_PROTOCOL:// using protocol v2 and extra data" '
	test_when_finished "rm -f log" &&

	test_config -C "$T5730_PARENT" \
		bundle.only.uri "$T5730_BUNDLE_URI_ESCAPED" &&

	# Extra data should be ignored
	test_config -C "$T5730_PARENT" bundle.only.extra bogus &&

	# All data about bundle URIs
	cat >expect <<-EOF &&
	[bundle]
		version = 1
		mode = all
	[bundle "only"]
		uri = $T5730_BUNDLE_URI_ESCAPED
	EOF
	GIT_TRACE_PACKET="$PWD/log" \
	test-tool bundle-uri \
		ls-remote \
		"$T5730_URI" \
		>actual &&
	test_cmp_config_output expect actual
'


test_expect_success "ls-remote with $T5730_PROTOCOL:// using protocol v2 with list" '
	test_when_finished "rm -f log" &&

	test_config -C "$T5730_PARENT" \
		bundle.bundle1.uri "$T5730_BUNDLE_URI_ESCAPED-1.bdl" &&
	test_config -C "$T5730_PARENT" \
		bundle.bundle2.uri "$T5730_BUNDLE_URI_ESCAPED-2.bdl" &&
	test_config -C "$T5730_PARENT" \
		bundle.bundle3.uri "$T5730_BUNDLE_URI_ESCAPED-3.bdl" &&

	# All data about bundle URIs
	cat >expect <<-EOF &&
	[bundle]
		version = 1
		mode = all
	[bundle "bundle1"]
		uri = $T5730_BUNDLE_URI_ESCAPED-1.bdl
	[bundle "bundle2"]
		uri = $T5730_BUNDLE_URI_ESCAPED-2.bdl
	[bundle "bundle3"]
		uri = $T5730_BUNDLE_URI_ESCAPED-3.bdl
	EOF
	GIT_TRACE_PACKET="$PWD/log" \
	test-tool bundle-uri \
		ls-remote \
		"$T5730_URI" \
		>actual &&
	test_cmp_config_output expect actual
'

debug log:

solving 872bc39ad1b ...
found 872bc39ad1b in https://public-inbox.org/git/933974689312bbb130236c81550ee3467f295a43.1668628303.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/c877f7c033decc857bb58aff411faf6a27aa96d7.1667264854.git.gitgitgadget@gmail.com/
found 000fcc5e20b in https://public-inbox.org/git/431cd585184b29f981247a6fa298c5a555937728.1667264854.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/cd906f6d9818a36cbdee896c1ede44d6de3f8990.1668628303.git.gitgitgadget@gmail.com/
found c327544641b in https://public-inbox.org/git/ae0003bb39b486732928bde16a01d925afc12f96.1667264854.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/c3269a24b5780023cbb4d173cb9cfb10c5a4b0d8.1668628303.git.gitgitgadget@gmail.com/
found 27294e9c976 in https://public-inbox.org/git/64dd9bf41de0310bbed5e3623870819f1c876f83.1667264854.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/0d85aef965d62a684b25f388a946abd3c17809fc.1668628303.git.gitgitgadget@gmail.com/ ||
	https://public-inbox.org/git/1830d193b116b00dd1b484852385062ac92a451c.1653072042.git.gitgitgadget@gmail.com/

applying [1/4] https://public-inbox.org/git/64dd9bf41de0310bbed5e3623870819f1c876f83.1667264854.git.gitgitgadget@gmail.com/
diff --git a/t/lib-t5730-protocol-v2-bundle-uri.sh b/t/lib-t5730-protocol-v2-bundle-uri.sh
new file mode 100644
index 00000000000..27294e9c976

Checking patch t/lib-t5730-protocol-v2-bundle-uri.sh...
Applied patch t/lib-t5730-protocol-v2-bundle-uri.sh cleanly.

skipping https://public-inbox.org/git/0d85aef965d62a684b25f388a946abd3c17809fc.1668628303.git.gitgitgadget@gmail.com/ for 27294e9c976
skipping https://public-inbox.org/git/1830d193b116b00dd1b484852385062ac92a451c.1653072042.git.gitgitgadget@gmail.com/ for 27294e9c976
index at:
100644 27294e9c9768ae8f78433237a6843524b6763fbb	t/lib-t5730-protocol-v2-bundle-uri.sh

applying [2/4] https://public-inbox.org/git/ae0003bb39b486732928bde16a01d925afc12f96.1667264854.git.gitgitgadget@gmail.com/
diff --git a/t/lib-t5730-protocol-v2-bundle-uri.sh b/t/lib-t5730-protocol-v2-bundle-uri.sh
index 27294e9c976..c327544641b 100644

Checking patch t/lib-t5730-protocol-v2-bundle-uri.sh...
Applied patch t/lib-t5730-protocol-v2-bundle-uri.sh cleanly.

skipping https://public-inbox.org/git/c3269a24b5780023cbb4d173cb9cfb10c5a4b0d8.1668628303.git.gitgitgadget@gmail.com/ for c327544641b
index at:
100644 c327544641b54ac38132f0254078499f9ae584d9	t/lib-t5730-protocol-v2-bundle-uri.sh

applying [3/4] https://public-inbox.org/git/431cd585184b29f981247a6fa298c5a555937728.1667264854.git.gitgitgadget@gmail.com/
diff --git a/t/lib-t5730-protocol-v2-bundle-uri.sh b/t/lib-t5730-protocol-v2-bundle-uri.sh
index c327544641b..000fcc5e20b 100644

Checking patch t/lib-t5730-protocol-v2-bundle-uri.sh...
Applied patch t/lib-t5730-protocol-v2-bundle-uri.sh cleanly.

skipping https://public-inbox.org/git/cd906f6d9818a36cbdee896c1ede44d6de3f8990.1668628303.git.gitgitgadget@gmail.com/ for 000fcc5e20b
index at:
100644 000fcc5e20bd0065037923a2b169e60d96af9b4a	t/lib-t5730-protocol-v2-bundle-uri.sh

applying [4/4] https://public-inbox.org/git/933974689312bbb130236c81550ee3467f295a43.1668628303.git.gitgitgadget@gmail.com/
diff --git a/t/lib-t5730-protocol-v2-bundle-uri.sh b/t/lib-t5730-protocol-v2-bundle-uri.sh
index 000fcc5e20b..872bc39ad1b 100644

Checking patch t/lib-t5730-protocol-v2-bundle-uri.sh...
Applied patch t/lib-t5730-protocol-v2-bundle-uri.sh cleanly.

skipping https://public-inbox.org/git/c877f7c033decc857bb58aff411faf6a27aa96d7.1667264854.git.gitgitgadget@gmail.com/ for 872bc39ad1b
index at:
100644 872bc39ad1beca0dd101935da7aafd39f7cba613	t/lib-t5730-protocol-v2-bundle-uri.sh

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).