diff options
author | Jeff King <peff@peff.net> | 2018-01-24 19:58:19 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-01-25 13:50:17 -0800 |
commit | 4414a150025765bdf83df81026270b0acbb8b376 (patch) | |
tree | 288185514098bdadadbfbc50b6713bedc705dd8f /protocol.c | |
parent | daemon: handle NULs in extended attribute string (diff) | |
download | tgif-4414a150025765bdf83df81026270b0acbb8b376.tar.xz |
t/lib-git-daemon: add network-protocol helpers
All of our git-protocol tests rely on invoking the client
and having it make a request of a server. That gives a nice
real-world test of how the two behave together, but it
doesn't leave any room for testing how a server might react
to _other_ clients.
Let's add a few test helper functions which can be used to
manually conduct a git-protocol conversation with a remote
git-daemon:
1. To connect to a remote git-daemon, we need something
like "netcat". But not everybody will have netcat. And
even if they do, the behavior with respect to
half-duplex shutdowns is not portable (openbsd netcat
has "-N", with others you must rely on "-q 1", which is
racy).
Here we provide a "fake_nc" that is capable of doing
a client-side netcat, with sane half-duplex semantics.
It relies on perl's IO::Socket::INET. That's been in
the base distribution since 5.6.0, so it's probably
available everywhere. But just to be on the safe side,
we'll add a prereq.
2. To help tests speak and read pktline, this patch adds
packetize() and depacketize() functions.
I've put fake_nc() into lib-git-daemon.sh, since that's
really the only server where we'd need to use a network
socket. Whereas the pktline helpers may be of more general
use, so I've added them to test-lib-functions.sh. Programs
like upload-pack speak pktline, but can talk directly over
stdio without a network socket.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'protocol.c')
0 files changed, 0 insertions, 0 deletions