v8/test/inspector/runtime/regress-1321833.js
Benedikt Meurer 3b1509389a [inspector] Consistently format value wrappers in console messages.
When formatting console messages (for consumption in Chromium/Blink), we
have special logic to unwrap value wrapper objects. But this logic was
not very consistent, and especially Number values and NumberObject
values were formatted differently.

This changes the V8ValueStringBuilder::append() logic to always unwrap
any value wrapper first and then use the regular dispatch for the
primitive value.

Fixed: chromium:1321833
Change-Id: I9996671e1f91da0841e5d5f1687cf647ab72a561
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3622913
Commit-Queue: Yang Guo <yangguo@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#80323}
2022-05-03 06:41:38 +00:00

52 lines
1.6 KiB
JavaScript

// Copyright 2022 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('Regression test for crbug.com/1321833');
Protocol.Runtime.onConsoleAPICalled(({params: {args, type}}) => {
InspectorTest.logObject(args, type);
});
InspectorTest.runAsyncTestSuite([
async function testNumberNaN() {
await Protocol.Runtime.enable();
const {result} = await Protocol.Runtime.evaluate(
{expression: 'console.log(new Number(NaN))'});
if ('exceptionDetails' in result) {
InspectorTest.logMessage(result.exceptionDetails);
}
await Promise.all([
Protocol.Runtime.discardConsoleEntries(),
Protocol.Runtime.disable(),
]);
},
async function testNumberInfinity() {
await Protocol.Runtime.enable();
const {result} = await Protocol.Runtime.evaluate(
{expression: 'console.log(new Number(Infinity))'});
if ('exceptionDetails' in result) {
InspectorTest.logMessage(result.exceptionDetails);
}
await Promise.all([
Protocol.Runtime.discardConsoleEntries(),
Protocol.Runtime.disable(),
]);
},
async function testNumberMinusInfinity() {
await Protocol.Runtime.enable();
const {result} = await Protocol.Runtime.evaluate(
{expression: 'console.log(new Number(-Infinity))'});
if ('exceptionDetails' in result) {
InspectorTest.logMessage(result.exceptionDetails);
}
await Promise.all([
Protocol.Runtime.discardConsoleEntries(),
Protocol.Runtime.disable(),
]);
},
]);