| 'use strict'; |
| |
| // This tests that --stack-trace-limit can be used to tweak the stack trace size of --trace-exit. |
| require('../common'); |
| const fixture = require('../common/fixtures'); |
| const { spawnSyncAndAssert } = require('../common/child_process'); |
| const assert = require('assert'); |
| |
| // When the stack trace limit is bigger than the stack trace size, it should output them all. |
| spawnSyncAndAssert( |
| process.execPath, |
| ['--trace-exit', '--stack-trace-limit=50', fixture.path('deep-exit.js')], |
| { |
| env: { |
| ...process.env, |
| STACK_DEPTH: 30 |
| } |
| }, |
| { |
| stderr(output) { |
| const matches = [...output.matchAll(/at recurse/g)]; |
| assert.strictEqual(matches.length, 30); |
| } |
| }); |
| |
| // When the stack trace limit is smaller than the stack trace size, it should truncate the stack size. |
| spawnSyncAndAssert( |
| process.execPath, |
| ['--trace-exit', '--stack-trace-limit=30', fixture.path('deep-exit.js')], |
| { |
| env: { |
| ...process.env, |
| STACK_DEPTH: 30 |
| } |
| }, |
| { |
| stderr(output) { |
| const matches = [...output.matchAll(/at recurse/g)]; |
| // The top frame is process.exit(), so one frame from recurse() is truncated. |
| assert.strictEqual(matches.length, 29); |
| } |
| }); |