From 16826e612ca29a351e259da156f71f87b1c9ef29 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sun, 26 Apr 2026 11:15:18 +0000 Subject: [PATCH] t5564: use a short path for the SOCKS proxy socket The SOCKS proxy test introduced in 0ca365c2ed4 (http: do not ignore proxy path, 2024-08-02) creates a Unix domain socket in `$TRASH_DIRECTORY`. When the trash directory path is long (e.g. when running from a deeply nested worktree), the socket path can exceed the 108-character limit for `struct sockaddr_un.sun_path` on Linux, causing the test to fail with "Path length ... is longer than maximum supported length (108)". Move the socket to `$TMPDIR` (defaulting to `/tmp`) where the path is short, following the same approach used in t7528 for the SSH agent socket in b7fb2194b96 (t7528: work around ETOOMANY in OpenSSH 10.1 and newer, 2025-10-23). Assisted-by: Claude Opus 4.6 Signed-off-by: Johannes Schindelin --- t/t5564-http-proxy.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/t/t5564-http-proxy.sh b/t/t5564-http-proxy.sh index 3bcbdef409b25f..cb7ede4ca47f20 100755 --- a/t/t5564-http-proxy.sh +++ b/t/t5564-http-proxy.sh @@ -50,14 +50,19 @@ start_socks() { # The %30 tests that the correct amount of percent-encoding is applied to the # proxy string passed to curl. +# Use a short path for the socket to avoid exceeding the 108-character +# Unix domain socket limit when the trash directory path is long. +SOCKS_SOCK="${TMPDIR:-/tmp}/git-test-socks-%30.sock" + test_lazy_prereq SOCKS_PROXY ' test_have_prereq PERL && - start_socks "$TRASH_DIRECTORY/%30.sock" + start_socks "$SOCKS_SOCK" ' test_atexit ' test ! -e "$TRASH_DIRECTORY/socks.pid" || kill "$(cat "$TRASH_DIRECTORY/socks.pid")" + rm -f "$SOCKS_SOCK" ' # The below tests morally ought to be gated on a prerequisite that Git is @@ -70,7 +75,8 @@ old_libcurl_error() { test_expect_success SOCKS_PROXY 'clone via Unix socket' ' test_when_finished "rm -rf clone" && - test_config_global http.proxy "socks4://localhost$PWD/%2530.sock" && { + socks_proxy_url="socks4://localhost$(echo "$SOCKS_SOCK" | sed "s/%/%25/g")" && + test_config_global http.proxy "$socks_proxy_url" && { { GIT_TRACE_CURL=$PWD/trace \ GIT_TRACE_CURL_COMPONENTS=socks \