summaryrefslogtreecommitdiff
path: root/protocol.c
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2018-01-24 19:58:19 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2018-01-25 13:50:17 -0800
commit4414a150025765bdf83df81026270b0acbb8b376 (patch)
tree288185514098bdadadbfbc50b6713bedc705dd8f /protocol.c
parentdaemon: handle NULs in extended attribute string (diff)
downloadtgif-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