| 'use strict'; |
| |
| // This tests Error.stackTraceLimit is fixed up for snapshot-building contexts, |
| // and can be restored after deserialization. |
| |
| require('../common'); |
| const assert = require('assert'); |
| const tmpdir = require('../common/tmpdir'); |
| const fixtures = require('../common/fixtures'); |
| const { spawnSyncAndAssert } = require('../common/child_process'); |
| |
| tmpdir.refresh(); |
| const blobPath = tmpdir.resolve('snapshot.blob'); |
| { |
| spawnSyncAndAssert(process.execPath, [ |
| '--stack-trace-limit=50', |
| '--snapshot-blob', |
| blobPath, |
| '--build-snapshot', |
| fixtures.path('snapshot', 'error-stack.js'), |
| ], { |
| cwd: tmpdir.path |
| }, { |
| stdout(output) { |
| assert.match(output, /During snapshot building, Error\.stackTraceLimit = 50/); |
| const matches = [...output.matchAll(/at recurse/g)]; |
| assert.strictEqual(matches.length, 30); |
| } |
| }); |
| } |
| |
| { |
| spawnSyncAndAssert(process.execPath, [ |
| '--stack-trace-limit=20', |
| '--snapshot-blob', |
| blobPath, |
| ], { |
| cwd: tmpdir.path |
| }, { |
| stdout(output) { |
| assert.match(output, /After snapshot deserialization, Error\.stackTraceLimit = 20/); |
| const matches = [...output.matchAll(/at recurse/g)]; |
| assert.strictEqual(matches.length, 20); |
| } |
| }); |
| } |