mirror of
https://github.com/nodejs/node.git
synced 2025-12-28 07:50:41 +00:00
The `execArgv` field can be used to specify Node.js-specific arguments that will be automatically applied when the single executable application starts. This allows application developers to configure Node.js runtime options without requiring end users to be aware of these flags. PR-URL: https://github.com/nodejs/node/pull/59314 Refs: https://github.com/nodejs/node/issues/51688 Refs: https://github.com/nodejs/node/issues/55573 Refs: https://github.com/nodejs/single-executable/issues/100 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Darshan Sen <raisinten@gmail.com>
62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
require('../common');
|
|
|
|
const {
|
|
generateSEA,
|
|
skipIfSingleExecutableIsNotSupported,
|
|
} = require('../common/sea');
|
|
|
|
skipIfSingleExecutableIsNotSupported();
|
|
|
|
// This tests the execArgv functionality with empty array in single executable applications.
|
|
|
|
const fixtures = require('../common/fixtures');
|
|
const tmpdir = require('../common/tmpdir');
|
|
const { copyFileSync, writeFileSync, existsSync } = require('fs');
|
|
const { spawnSyncAndAssert, spawnSyncAndExitWithoutError } = require('../common/child_process');
|
|
const { join } = require('path');
|
|
const assert = require('assert');
|
|
|
|
const configFile = tmpdir.resolve('sea-config.json');
|
|
const seaPrepBlob = tmpdir.resolve('sea-prep.blob');
|
|
const outputFile = tmpdir.resolve(process.platform === 'win32' ? 'sea.exe' : 'sea');
|
|
|
|
tmpdir.refresh();
|
|
|
|
// Copy test fixture to working directory
|
|
copyFileSync(fixtures.path('sea-exec-argv-empty.js'), tmpdir.resolve('sea.js'));
|
|
|
|
writeFileSync(configFile, `
|
|
{
|
|
"main": "sea.js",
|
|
"output": "sea-prep.blob",
|
|
"disableExperimentalSEAWarning": true,
|
|
"execArgv": []
|
|
}
|
|
`);
|
|
|
|
spawnSyncAndExitWithoutError(
|
|
process.execPath,
|
|
['--experimental-sea-config', 'sea-config.json'],
|
|
{ cwd: tmpdir.path });
|
|
|
|
assert(existsSync(seaPrepBlob));
|
|
|
|
generateSEA(outputFile, process.execPath, seaPrepBlob);
|
|
|
|
// Test that empty execArgv work correctly
|
|
spawnSyncAndAssert(
|
|
outputFile,
|
|
['user-arg'],
|
|
{
|
|
env: {
|
|
COMMON_DIRECTORY: join(__dirname, '..', 'common'),
|
|
NODE_DEBUG_NATIVE: 'SEA',
|
|
...process.env,
|
|
}
|
|
},
|
|
{
|
|
stdout: /empty execArgv test passed/
|
|
});
|