node/test/parallel/test-ffi-missing-build.js
cjihrig d0fa608c07 lib,src,test,doc: add node:ffi module
PR-URL: https://github.com/nodejs/node/pull/62072
Co-authored-by: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Bryan English <bryan@bryanenglish.com>
2026-04-14 10:44:30 +01:00

81 lines
1.7 KiB
JavaScript

'use strict';
const common = require('../common');
if (process.config.variables.node_use_ffi) {
common.skip('requires a build without FFI support');
}
const assert = require('node:assert');
const { spawnSync } = require('node:child_process');
{
const { stderr, status, signal } = spawnSync(process.execPath, [
'--experimental-ffi',
'-e',
'',
], {
encoding: 'utf8',
});
assert.match(stderr, /--experimental-ffi/);
assert.notStrictEqual(status, 0);
assert.strictEqual(signal, null);
}
{
const { stderr, status, signal } = spawnSync(process.execPath, [
'--no-experimental-ffi',
'-e',
'',
], {
encoding: 'utf8',
});
assert.match(stderr, /--no-experimental-ffi/);
assert.notStrictEqual(status, 0);
assert.strictEqual(signal, null);
}
{
const { stderr, status, signal } = spawnSync(process.execPath, [
'--permission',
'--allow-ffi',
'-e',
'',
], {
encoding: 'utf8',
});
assert.match(stderr, /--allow-ffi/);
assert.notStrictEqual(status, 0);
assert.strictEqual(signal, null);
}
{
const { stderr, status, signal } = spawnSync(process.execPath, [
'-e',
'require("node:ffi")',
], {
encoding: 'utf8',
});
assert.match(stderr, /No such built-in module: node:ffi/);
assert.notStrictEqual(status, 0);
assert.strictEqual(signal, null);
}
{
const { stdout, status, signal } = spawnSync(process.execPath, [
'--permission',
'--expose-internals',
'-p',
'JSON.stringify(require("internal/process/permission").availableFlags())',
], {
encoding: 'utf8',
});
assert.strictEqual(status, 0);
assert.strictEqual(signal, null);
assert.ok(!JSON.parse(stdout).includes('--allow-ffi'));
}