blob: cd530bd8600b64bf4f36434ee5af438e118146c3 [file] [edit]
// This tests debugger probe JSON output for stable special-cased values.
'use strict';
const common = require('../common');
common.skipIfInspectorDisabled();
const fixtures = require('../common/fixtures');
const { spawnSyncAndAssert } = require('../common/child_process');
const { assertProbeJson } = require('../common/debugger-probe');
const cwd = fixtures.path('debugger');
const probeArg = 'probe-types.js:17';
const target = { suffix: 'probe-types.js', line: 17 };
const location = { url: fixtures.fileURL('debugger', 'probe-types.js').href, line: 17, column: 1 };
spawnSyncAndAssert(process.execPath, [
'inspect',
'--json',
'--probe', probeArg,
'--expr', 'stringValue',
'--probe', probeArg,
'--expr', 'booleanValue',
'--probe', probeArg,
'--expr', 'undefinedValue',
'--probe', probeArg,
'--expr', 'nullValue',
'--probe', probeArg,
'--expr', 'nanValue',
'--probe', probeArg,
'--expr', 'bigintValue',
'--probe', probeArg,
'--expr', 'symbolValue',
'--probe', probeArg,
'--expr', 'functionValue',
'--probe', probeArg,
'--expr', 'objectValue',
'--probe', probeArg,
'--expr', 'arrayValue',
'--probe', probeArg,
'--expr', 'errorValue',
'probe-types.js',
], { cwd, env: { ...process.env, NODE_DEBUG: 'inspect_probe' } }, {
stdout(output) {
assertProbeJson(output, {
v: 2,
probes: [
{ expr: 'stringValue', target },
{ expr: 'booleanValue', target },
{ expr: 'undefinedValue', target },
{ expr: 'nullValue', target },
{ expr: 'nanValue', target },
{ expr: 'bigintValue', target },
{ expr: 'symbolValue', target },
{ expr: 'functionValue', target },
{ expr: 'objectValue', target },
{ expr: 'arrayValue', target },
{ expr: 'errorValue', target },
],
results: [
{
probe: 0,
event: 'hit',
hit: 1,
location,
result: { type: 'string', value: 'hello' },
},
{
probe: 1,
event: 'hit',
hit: 1,
location,
result: { type: 'boolean', value: true },
},
{
probe: 2,
event: 'hit',
hit: 1,
location,
result: { type: 'undefined' },
},
{
probe: 3,
event: 'hit',
hit: 1,
location,
result: { type: 'object', subtype: 'null', value: null },
},
{
probe: 4,
event: 'hit',
hit: 1,
location,
result: { type: 'number', unserializableValue: 'NaN', description: 'NaN' },
},
{
probe: 5,
event: 'hit',
hit: 1,
location,
result: { type: 'bigint', unserializableValue: '1n', description: '1n' },
},
{
probe: 6,
event: 'hit',
hit: 1,
location,
result: { type: 'symbol', description: 'Symbol(tag)' },
},
{
probe: 7,
event: 'hit',
hit: 1,
location,
result: {
type: 'function',
description: '() => 1',
},
},
{
probe: 8,
event: 'hit',
hit: 1,
location,
result: {
type: 'object',
description: 'Object',
},
},
{
probe: 9,
event: 'hit',
hit: 1,
location,
result: {
type: 'object',
subtype: 'array',
description: 'Array(3)',
},
},
{
probe: 10,
event: 'hit',
hit: 1,
location,
result: {
type: 'object',
subtype: 'error',
description: 'Error: boom',
},
},
{ event: 'completed' },
],
});
},
trim: true,
});