From 5d3cb88dbc5efaa2cd1269a12c633aa2f3e6f26e Mon Sep 17 00:00:00 2001 From: jango <91889514+jangomango76@users.noreply.github.com> Date: Sat, 12 Sep 2026 00:41:28 +0200 Subject: [PATCH] [verified] test(desktop): guard nonblocking runtime probes (cherry picked from commit ee61bbfa311a0a99a1f8c14c18e3cdc97e51f3d1) --- apps/desktop/electron/backend-probes.test.ts | 36 ++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/apps/desktop/electron/backend-probes.test.ts b/apps/desktop/electron/backend-probes.test.ts index 12dbb1bfa7..5491c7879d 100644 --- a/apps/desktop/electron/backend-probes.test.ts +++ b/apps/desktop/electron/backend-probes.test.ts @@ -7,6 +7,7 @@ import assert from 'node:assert/strict' import fs from 'node:fs' +import net from 'node:net' import os from 'node:os' import path from 'node:path' @@ -15,6 +16,7 @@ import { test } from 'vitest' import { canImportHermesCli, DEFAULT_PROBE_TIMEOUT_MS, + execProbe, hermesRuntimeImportProbe, PROBE_TIMEOUT_MS, resolveProbeTimeoutMs, @@ -29,6 +31,40 @@ import { // (a tiny script we write to disk that exits 0 on --version). const NODE_BIN = process.execPath +test('execProbe keeps the parent event loop available to the child', async () => { + const server = net.createServer((socket) => socket.end('pong')) + + await new Promise((resolve, reject) => { + server.once('error', reject) + server.listen(0, '127.0.0.1', resolve) + }) + + const address = server.address() + assert.ok(address && typeof address === 'object') + + const childScript = ` + const net = require('node:net') + let reply = '' + const socket = net.createConnection(${address.port}, '127.0.0.1') + socket.setEncoding('utf8') + socket.on('data', (chunk) => { reply += chunk }) + socket.on('end', () => process.exit(reply === 'pong' ? 0 : 1)) + socket.on('error', () => process.exit(1)) + ` + + try { + await execProbe(NODE_BIN, ['-e', childScript], { + stdio: 'ignore', + timeout: 1_000, + windowsHide: true + }) + } finally { + await new Promise((resolve, reject) => { + server.close((error) => (error ? reject(error) : resolve())) + }) + } +}) + test('canImportHermesCli returns false when path is falsy', async () => { assert.equal(await canImportHermesCli(''), false) assert.equal(await canImportHermesCli(null), false)