1'use strict'; 2 3const common = require('../common'); 4const tmpdir = require('../common/tmpdir'); 5const assert = require('assert'); 6const { spawnSync } = require('child_process'); 7const fixtures = require('../common/fixtures'); 8const fs = require('fs'); 9const env = { 10 ...process.env, 11 NODE_DEBUG_NATIVE: 'diagnostics', 12}; 13 14if (!common.enoughTestMem) 15 common.skip('Insufficient memory for snapshot test'); 16 17{ 18 console.log('\nTesting limit = 3'); 19 tmpdir.refresh(); 20 const child = spawnSync(process.execPath, [ 21 '--heapsnapshot-near-heap-limit=3', 22 '--max-old-space-size=512', 23 fixtures.path('workload', 'grow.js'), 24 ], { 25 cwd: tmpdir.path, 26 env: { 27 ...env, 28 TEST_CHUNK: 2000, 29 }, 30 }); 31 const stderr = child.stderr.toString(); 32 console.log(stderr); 33 assert(common.nodeProcessAborted(child.status, child.signal), 34 'process should have aborted, but did not'); 35 const list = fs.readdirSync(tmpdir.path) 36 .filter((file) => file.endsWith('.heapsnapshot')); 37 const risky = [...stderr.matchAll( 38 /Not generating snapshots because it's too risky/g)].length; 39 assert(list.length + risky > 0 && list.length <= 3, 40 `Generated ${list.length} snapshots ` + 41 `and ${risky} was too risky`); 42} 43