From cdcc83277bc9b1e2d16b670a1fa1cff56c18a07e Mon Sep 17 00:00:00 2001 From: Tianyi Cui <53024+tianyicui@users.noreply.github.com> Date: Wed, 22 Jul 2026 20:50:50 +0800 Subject: [PATCH] test(web): avoid wildcard socket binding --- .../host/webserver/tests/webserver.spec.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/host/webserver/tests/webserver.spec.ts b/packages/host/webserver/tests/webserver.spec.ts index db1120bf3c..7073f29004 100644 --- a/packages/host/webserver/tests/webserver.spec.ts +++ b/packages/host/webserver/tests/webserver.spec.ts @@ -10,7 +10,7 @@ function freePort(): Promise { return new Promise((resolve, reject) => { const probe = createNetServer() probe.once('error', reject) - probe.listen(0, () => { + probe.listen(0, '127.0.0.1', () => { const port = (probe.address() as AddressInfo).port probe.close(() => { resolve(port) }) }) @@ -124,13 +124,21 @@ describe('startWebServer', () => { server = undefined }) - it.each(['127.0.0.1', '0.0.0.0'])('uses the configured bind address %s', async (host) => { + it.each(['127.0.0.1', '0.0.0.0'])('forwards bind address %s without opening a socket', async (host) => { const { distIndex } = makeDist() - const port = await freePort() - const listen = vi.spyOn(NetServer.prototype, 'listen') + const port = 3080 + const listen = vi.spyOn(NetServer.prototype, 'listen').mockImplementation(function ( + this: NetServer, ...args: unknown[] + ): NetServer { + const callback = args.at(-1) + if (typeof callback !== 'function') throw new TypeError('listen callback missing') + queueMicrotask(callback as () => void) + return this + }) try { - server = await startWebServer({ host, port, distIndex, apiHandler: echoingApi }, () => undefined) + const inertServer = await startWebServer({ host, port, distIndex, apiHandler: echoingApi }, () => undefined) expect(listen).toHaveBeenCalledWith(port, host, expect.any(Function)) + await inertServer.close() } finally { listen.mockRestore() }