-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bootstrap: do not expand process.argv[1] for snapshot entry points
In applications with entry points deserialized from snapshots, they don't need an additional CLI argument for the entry point script so process.argv[1] is going to be other user-defiend arguments. We could consider copying process.argv[0] as process.argv[1] like what we do for single executable applications, but for now just don't exapnd it so it's easier to backport to previous releases. PR-URL: #47466 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Chengzhong Wu <[email protected]>
- Loading branch information
1 parent
d4b440b
commit e50c6b9
Showing
2 changed files
with
60 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
'use strict'; | ||
|
||
// This tests snapshot JS API using the example in the docs. | ||
|
||
require('../common'); | ||
const assert = require('assert'); | ||
const { spawnSync } = require('child_process'); | ||
const tmpdir = require('../common/tmpdir'); | ||
const path = require('path'); | ||
const fs = require('fs'); | ||
|
||
tmpdir.refresh(); | ||
const blobPath = path.join(tmpdir.path, 'snapshot.blob'); | ||
const code = ` | ||
require('v8').startupSnapshot.setDeserializeMainFunction(() => { | ||
console.log(JSON.stringify(process.argv)); | ||
}); | ||
`; | ||
{ | ||
fs.writeFileSync(path.join(tmpdir.path, 'entry.js'), code, 'utf8'); | ||
const child = spawnSync(process.execPath, [ | ||
'--snapshot-blob', | ||
blobPath, | ||
'--build-snapshot', | ||
'entry.js', | ||
], { | ||
cwd: tmpdir.path | ||
}); | ||
if (child.status !== 0) { | ||
console.log(child.stderr.toString()); | ||
console.log(child.stdout.toString()); | ||
assert.strictEqual(child.status, 0); | ||
} | ||
const stats = fs.statSync(path.join(tmpdir.path, 'snapshot.blob')); | ||
assert(stats.isFile()); | ||
} | ||
|
||
{ | ||
const child = spawnSync(process.execPath, [ | ||
'--snapshot-blob', | ||
blobPath, | ||
'argv1', | ||
'argv2', | ||
], { | ||
cwd: tmpdir.path, | ||
env: { | ||
...process.env, | ||
} | ||
}); | ||
|
||
const stdout = JSON.parse(child.stdout.toString().trim()); | ||
assert.deepStrictEqual(stdout, [ | ||
process.execPath, | ||
'argv1', | ||
'argv2', | ||
]); | ||
assert.strictEqual(child.status, 0); | ||
} |