From 930b4ab0564d5262205c48b0452a350d742fa936 Mon Sep 17 00:00:00 2001 From: BenStullsBets Date: Fri, 26 Jun 2026 06:22:36 -0700 Subject: [PATCH] test(e2e): pin --user-data-dir to a short /tmp path (fix macOS socket-length EINVAL) The default .vscode-test/user-data socket path exceeds macOS's ~103-char UNIX socket limit when the repo lives at a long path (e.g. a git worktree), so the host-E2E harness failed to launch (listen EINVAL). Point --user-data-dir at a short /tmp root so the IPC socket stays under the limit. Co-Authored-By: Claude Opus 4.8 (1M context) --- test/e2e/runTest.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/test/e2e/runTest.ts b/test/e2e/runTest.ts index 543c383..383f9af 100644 --- a/test/e2e/runTest.ts +++ b/test/e2e/runTest.ts @@ -13,11 +13,20 @@ async function main(): Promise { const workspace = fs.mkdtempSync(path.join(os.tmpdir(), "cowriting-e2e-")); fs.cpSync(fixture, workspace, { recursive: true }); + // VS Code derives its IPC socket path from --user-data-dir. The default + // (`/.vscode-test/user-data`) plus `/-main.sock` can blow + // past macOS's ~103-char UNIX-socket limit (`listen EINVAL`) when the project + // lives at a long path (e.g. a git worktree). Pin the user-data dir to a SHORT + // root under /tmp so the socket path stays well under the limit. (os.tmpdir() on + // macOS is itself a long /var/folders/… path, so we use /tmp directly.) + const userDataRoot = process.platform === "win32" ? os.tmpdir() : "/tmp"; + const userDataDir = fs.mkdtempSync(path.join(userDataRoot, "cwud-")); + try { await runTests({ extensionDevelopmentPath, extensionTestsPath, - launchArgs: [workspace, "--disable-extensions"], + launchArgs: [workspace, "--disable-extensions", "--user-data-dir", userDataDir], extensionTestsEnv: { E2E_WORKSPACE: workspace }, }); @@ -26,10 +35,11 @@ async function main(): Promise { await runTests({ extensionDevelopmentPath, extensionTestsPath: path.resolve(__dirname, "./suite-no-workspace/index"), - launchArgs: ["--disable-extensions"], + launchArgs: ["--disable-extensions", "--user-data-dir", userDataDir], }); } finally { fs.rmSync(workspace, { recursive: true, force: true }); + fs.rmSync(userDataDir, { recursive: true, force: true }); } }