node/deps/v8/test/inspector/debugger/line-breakpoint-yield.js
Michaël Zasso edd537ca2f deps: update V8 to 10.8.168.20
PR-URL: https://github.com/nodejs/node/pull/45230
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
2022-11-19 09:11:32 +00:00

201 lines
6.4 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.
let {session, contextGroup, Protocol} =
InspectorTest.start('Line breakpoints for yield');
// clang-format off
const url = 'line-breakpoint-yield.js';
contextGroup.addScript(`
var obj = {
foo() {
debugger;
},
*barGenerator() {
yield this.foo();
},
*bazGenerator() {
yield this.foo();
},
async* barAsyncGenerator() {
yield this.foo();
},
async* bazAsyncGenerator() {
yield this.foo();
},
*minifiedGenerator(){yield this.foo();}
};
`, 0, 0, url);
// clang-format on
session.setupScriptMap();
InspectorTest.runAsyncTestSuite([
async function testYieldInGeneratorWithLeadingWhitespace() {
await Promise.all([
Protocol.Debugger.enable(),
Protocol.Runtime.enable(),
]);
InspectorTest.log(
'Setting breakpoint on `yield this.foo()` in `obj.barGenerator`');
const {result: {breakpointId}} =
await Protocol.Debugger.setBreakpointByUrl({
url,
lineNumber: 7,
columnNumber: 0,
});
InspectorTest.log('Calling `obj.barGenerator().next()`');
const pausedPromise = Protocol.Debugger.oncePaused();
const evalPromise = Protocol.Runtime.evaluate({
expression: 'obj.barGenerator().next()',
});
const {params: {hitBreakpoints}} = await pausedPromise;
if (hitBreakpoints?.length === 1 && hitBreakpoints[0] === breakpointId) {
InspectorTest.log('Hit breakpoint before calling into `this.foo`');
} else {
InspectorTest.log('Missed breakpoint before calling into `this.foo`');
}
await Promise.all([
Protocol.Debugger.removeBreakpoint({breakpointId}),
Protocol.Debugger.disable(),
evalPromise,
Protocol.Runtime.disable(),
]);
},
async function testYieldInGeneratorWithoutLeadingWhitespace() {
await Promise.all([
Protocol.Debugger.enable(),
Protocol.Runtime.enable(),
]);
InspectorTest.log(
'Setting breakpoint on `await this.foo()` in `obj.bazGenerator`');
const {result: {breakpointId}} =
await Protocol.Debugger.setBreakpointByUrl({
url,
lineNumber: 11,
columnNumber: 0,
});
InspectorTest.log('Calling `obj.bazGenerator().next()`');
const pausedPromise = Protocol.Debugger.oncePaused();
const evalPromise = Protocol.Runtime.evaluate({
expression: 'obj.bazGenerator().next()',
});
const {params: {hitBreakpoints}} = await pausedPromise;
if (hitBreakpoints?.length === 1 && hitBreakpoints[0] === breakpointId) {
InspectorTest.log('Hit breakpoint before calling into `this.foo`');
} else {
InspectorTest.log('Missed breakpoint before calling into `this.foo`');
}
await Promise.all([
Protocol.Debugger.removeBreakpoint({breakpointId}),
Protocol.Debugger.disable(),
evalPromise,
Protocol.Runtime.disable(),
]);
},
async function testYieldInAsyncGeneratorWithLeadingWhitespace() {
await Promise.all([
Protocol.Debugger.enable(),
Protocol.Runtime.enable(),
]);
InspectorTest.log(
'Setting breakpoint on `yield this.foo()` in `obj.barAsyncGenerator`');
const {result: {breakpointId}} =
await Protocol.Debugger.setBreakpointByUrl({
url,
lineNumber: 15,
columnNumber: 0,
});
InspectorTest.log('Calling `obj.barAsyncGenerator().next()`');
const pausedPromise = Protocol.Debugger.oncePaused();
const evalPromise = Protocol.Runtime.evaluate({
expression: 'obj.barAsyncGenerator().next()',
awaitPromise: true,
});
const {params: {hitBreakpoints}} = await pausedPromise;
if (hitBreakpoints?.length === 1 && hitBreakpoints[0] === breakpointId) {
InspectorTest.log('Hit breakpoint before calling into `this.foo`');
} else {
InspectorTest.log('Missed breakpoint before calling into `this.foo`');
}
await Promise.all([
Protocol.Debugger.removeBreakpoint({breakpointId}),
Protocol.Debugger.disable(),
evalPromise,
Protocol.Runtime.disable(),
]);
},
async function testYieldInAsyncGeneratorWithoutLeadingWhitespace() {
await Promise.all([
Protocol.Debugger.enable(),
Protocol.Runtime.enable(),
]);
InspectorTest.log(
'Setting breakpoint on `yield this.foo()` in `obj.bazAsyncGenerator`');
const {result: {breakpointId}} =
await Protocol.Debugger.setBreakpointByUrl({
url,
lineNumber: 19,
columnNumber: 0,
});
InspectorTest.log('Calling `obj.bazAsyncGenerator().next()`');
const pausedPromise = Protocol.Debugger.oncePaused();
const evalPromise = Protocol.Runtime.evaluate({
expression: 'obj.bazAsyncGenerator().next()',
awaitPromise: true,
});
const {params: {hitBreakpoints}} = await pausedPromise;
if (hitBreakpoints?.length === 1 && hitBreakpoints[0] === breakpointId) {
InspectorTest.log('Hit breakpoint before calling into `this.foo`');
} else {
InspectorTest.log('Missed breakpoint before calling into `this.foo`');
}
await Promise.all([
Protocol.Debugger.removeBreakpoint({breakpointId}),
Protocol.Debugger.disable(),
evalPromise,
Protocol.Runtime.disable(),
]);
},
async function testYieldInMinifiedGenerator() {
await Promise.all([
Protocol.Debugger.enable(),
Protocol.Runtime.enable(),
]);
InspectorTest.log(
'Setting breakpoint on `yield this.foo()` in `obj.minifiedGenerator`');
const {result: {breakpointId}} =
await Protocol.Debugger.setBreakpointByUrl({
url,
lineNumber: 22,
columnNumber: 23,
});
InspectorTest.log('Calling `obj.minifiedGenerator().next()`');
const pausedPromise = Protocol.Debugger.oncePaused();
const evalPromise = Protocol.Runtime.evaluate({
expression: 'obj.minifiedGenerator().next()',
});
const {params: {hitBreakpoints}} = await pausedPromise;
if (hitBreakpoints?.length === 1 && hitBreakpoints[0] === breakpointId) {
InspectorTest.log('Hit breakpoint before calling into `this.foo`');
} else {
InspectorTest.log('Missed breakpoint before calling into `this.foo`');
}
await Promise.all([
Protocol.Debugger.removeBreakpoint({breakpointId}),
Protocol.Debugger.disable(),
evalPromise,
Protocol.Runtime.disable(),
]);
},
]);