From 76ecfb12aa435c3fa3d3b497bdb7579172ccbcab Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Sat, 29 Aug 2026 08:45:43 +0200 Subject: [PATCH] test: expect node:ffi to be enabled by default test-module-builtin-experimental was added in #65418 asserting that node:ffi is unavailable without --experimental-ffi, but #65475 had already enabled node:ffi by default in builds with FFI support. The two landed independently and broke main. Expect node:ffi to behave like node:sqlite: available by default with the node: scheme, and gone when opted out with --no-experimental-ffi. Refs: https://github.com/nodejs/node/pull/65418 Refs: https://github.com/nodejs/node/pull/65475 Signed-off-by: Matteo Collina --- test/parallel/test-module-builtin-experimental.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/test/parallel/test-module-builtin-experimental.js b/test/parallel/test-module-builtin-experimental.js index b8a5713a906d..1257a96e8208 100644 --- a/test/parallel/test-module-builtin-experimental.js +++ b/test/parallel/test-module-builtin-experimental.js @@ -5,7 +5,6 @@ const { spawnSyncAndAssert } = require('../common/child_process'); const experimentalBuiltins = [ ['dtls', '--experimental-dtls', common.hasDtls], - ['ffi', '--experimental-ffi', common.hasFFI], ['quic', '--experimental-quic', common.hasQuic], ['vfs', '--experimental-vfs', true], ].filter(([, , available]) => available); @@ -23,7 +22,19 @@ for (const [id, flag] of experimentalBuiltins) { ], { status: 0 }); } +// node:ffi is enabled by default in builds with FFI support and can be +// disabled with --no-experimental-ffi. +if (common.hasFFI) { + spawnSyncAndAssert(process.execPath, [ + '--no-experimental-ffi', + '-e', `const m = require('node:module'); if (m.builtinModules.includes('node:ffi')) process.exit(1); try { require('node:ffi'); } catch (e) { if (e.code === 'ERR_UNKNOWN_BUILTIN_MODULE') process.exit(0); } process.exit(1);`, + ], { status: 0 }); +} + const schemeOnlyBuiltins = ['node:test', 'node:sea']; +if (common.hasFFI) { + schemeOnlyBuiltins.push('node:ffi'); +} if (common.hasSQLite) { schemeOnlyBuiltins.push('node:sqlite'); }