1'use strict';
2
3// Testcases for situations involving fatal errors, like Javascript heap OOM
4
5require('../common');
6const assert = require('assert');
7const helper = require('../common/report.js');
8const spawnSync = require('child_process').spawnSync;
9const tmpdir = require('../common/tmpdir');
10const fixtures = require('../common/fixtures');
11
12// Common args that will cause an out-of-memory error for child process.
13const ARGS = [
14  '--max-heap-size=20',
15  fixtures.path('report-oom'),
16];
17const REPORT_FIELDS = [
18  ['header.trigger', 'OOMError'],
19  ['javascriptHeap.memoryLimit', 20 * 1024 * 1024 /* 20MB */],
20];
21
22{
23  // Verify that --report-on-fatalerror is respected when set.
24  tmpdir.refresh();
25  const args = ['--report-on-fatalerror', ...ARGS];
26  const child = spawnSync(process.execPath, args, { cwd: tmpdir.path });
27  assert.notStrictEqual(child.status, 0, 'Process exited unexpectedly');
28
29  const reports = helper.findReports(child.pid, tmpdir.path);
30  assert.strictEqual(reports.length, 1);
31
32  const report = reports[0];
33  helper.validate(report, REPORT_FIELDS);
34}
35