blob: 04e9e801b8ec81ea57a4632f648281db39c6e9e9 [file] [log] [blame] [edit]
'use strict';
const {
spawnPromisified,
} = require('../common');
const fixtures = require('../common/fixtures');
const assert = require('node:assert');
const { describe, it } = require('node:test');
const path = require('node:path');
const fixtureFile = fixtures.path(path.join('options-as-flags', 'fixture.cjs'));
const configFile = fixtures.path(path.join('options-as-flags', 'test-config.json'));
const envFile = fixtures.path(path.join('options-as-flags', '.test.env'));
describe('getOptionsAsFlagsFromBinding', () => {
it('should extract flags from command line arguments', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--expose-internals',
'--stack-trace-limit=512',
fixtureFile,
]);
assert.strictEqual(result.code, 0);
const flags = JSON.parse(result.stdout.trim());
assert.strictEqual(flags.includes('--no-warnings'), true);
assert.strictEqual(flags.includes('--stack-trace-limit=512'), true);
});
it('should extract flags from NODE_OPTIONS environment variable', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--expose-internals',
fixtureFile,
], {
env: {
...process.env,
NODE_OPTIONS: '--stack-trace-limit=4096'
}
});
assert.strictEqual(result.code, 0);
const flags = JSON.parse(result.stdout.trim());
// Should contain the flag from NODE_OPTIONS
assert.strictEqual(flags.includes('--stack-trace-limit=4096'), true);
// Should also contain command line flags
assert.strictEqual(flags.includes('--no-warnings'), true);
});
it('should extract flags from config file', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--expose-internals',
'--experimental-config-file',
configFile,
fixtureFile,
]);
assert.strictEqual(result.code, 0);
const flags = JSON.parse(result.stdout.trim());
// Should contain flags from config file
assert.strictEqual(flags.includes('--experimental-transform-types'), true);
assert.strictEqual(flags.includes('--max-http-header-size=8192'), true);
assert.strictEqual(flags.includes('--test-isolation=none'), true);
// Should also contain command line flags
assert.strictEqual(flags.includes('--no-warnings'), true);
});
it('should extract flags from config file and command line', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--expose-internals',
'--stack-trace-limit=512',
'--experimental-config-file',
configFile,
fixtureFile,
]);
assert.strictEqual(result.code, 0);
const flags = JSON.parse(result.stdout.trim());
// Should contain flags from command line arguments
assert.strictEqual(flags.includes('--no-warnings'), true);
assert.strictEqual(flags.includes('--stack-trace-limit=512'), true);
// Should contain flags from config file
assert.strictEqual(flags.includes('--experimental-transform-types'), true);
assert.strictEqual(flags.includes('--max-http-header-size=8192'), true);
assert.strictEqual(flags.includes('--test-isolation=none'), true);
});
it('should extract flags from .env file', async () => {
const result = await spawnPromisified(process.execPath, [
'--no-warnings',
'--expose-internals',
`--env-file=${envFile}`,
fixtureFile,
]);
assert.strictEqual(result.code, 0);
const flags = JSON.parse(result.stdout.trim());
// Should contain flags from .env file (NODE_OPTIONS)
assert.strictEqual(flags.includes('--v8-pool-size=8'), true);
// Should also contain command line flags
assert.strictEqual(flags.includes('--no-warnings'), true);
});
});