node/deps/v8/test/inspector/runtime/error-preview-sideeffects.js
Michaël Zasso 7772a2df9d
deps: update V8 to 14.1.146.11
PR-URL: https://github.com/nodejs/node/pull/59805
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2025-10-04 18:47:18 +02:00

67 lines
1.5 KiB
JavaScript

// Copyright 2025 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
const {session, contextGroup, Protocol} =
InspectorTest.start('Checks that error preview does not run user code');
contextGroup.addScript(`
function testLogError() {
let stackCalled = false;
{
const error = new Error();
Object.defineProperty(error, 'stack', {
get: () => {
stackCalled = true;
return Reflect.get(error, 'stack');
},
});
console.log(error);
}
let stackCalledOnBase = false;
{
const base = new Error();
Object.defineProperty(base, 'stack', {
get: () => {
stackCalledOnBase = true;
return 'value';
},
});
const error = Object.create(base);
console.log(error);
}
let stackCalledOnProxy = false;
{
const error = new Proxy(new Error(), {
get: (target, prop) => {
if (prop !== 'stack')
return Reflect.get(target, prop);
stackCalledOnProxy = true;
return 'value';
},
});
console.log(error);
}
console.clear();
return {stackCalled, stackCalledOnBase, stackCalledOnProxy};
}
//# sourceURL=test.js
`);
InspectorTest.runAsyncTestSuite([
async function ErrorStack() {
await Protocol.Runtime.enable();
const result = await Protocol.Runtime.evaluate({expression: 'testLogError()', returnByValue: true});
InspectorTest.logObject(result.result.result.value);
await Protocol.Runtime.disable();
}
]);