11cb0ef41Sopenharmony_ciimport { spawnPromisified } from '../common/index.mjs';
21cb0ef41Sopenharmony_ciimport assert from 'node:assert';
31cb0ef41Sopenharmony_ciimport { execPath } from 'node:process';
41cb0ef41Sopenharmony_ciimport { describe, it } from 'node:test';
51cb0ef41Sopenharmony_ci
61cb0ef41Sopenharmony_ci
71cb0ef41Sopenharmony_cidescribe('--trace-uncaught', () => {
81cb0ef41Sopenharmony_ci  it('prints a trace on process exit for uncaught errors', async () => {
91cb0ef41Sopenharmony_ci    for (const value of [null, undefined]) {
101cb0ef41Sopenharmony_ci      const { code, signal, stderr } = await spawnPromisified(execPath, [
111cb0ef41Sopenharmony_ci        '--trace-uncaught',
121cb0ef41Sopenharmony_ci        '--eval',
131cb0ef41Sopenharmony_ci        `throw ${value};`,
141cb0ef41Sopenharmony_ci      ]);
151cb0ef41Sopenharmony_ci      assert.match(stderr, /^Thrown at:$/m);
161cb0ef41Sopenharmony_ci      assert.match(stderr, /^ {4}at \[eval\]:1:1$/m);
171cb0ef41Sopenharmony_ci      assert.strictEqual(code, 1);
181cb0ef41Sopenharmony_ci      assert.strictEqual(signal, null);
191cb0ef41Sopenharmony_ci    }
201cb0ef41Sopenharmony_ci  });
211cb0ef41Sopenharmony_ci});
22