| Index: test/inspector/debugger/continue-to-location-strategy.js
|
| diff --git a/test/inspector/debugger/continue-to-location-strategy.js b/test/inspector/debugger/continue-to-location-strategy.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..735d945db639d7bf045d3da0f5a40a0b00d0c9cd
|
| --- /dev/null
|
| +++ b/test/inspector/debugger/continue-to-location-strategy.js
|
| @@ -0,0 +1,139 @@
|
| +// Copyright 2017 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.
|
| +
|
| +InspectorTest.log('Check that continue-to-location works with different strategies.');
|
| +
|
| +InspectorTest.addScript(`
|
| +async function asyncFact(n) {
|
| + if (n == 0) return 1;
|
| + let r = n * await asyncFact(n - 1);
|
| + console.log(r);
|
| + return r;
|
| +}
|
| +
|
| +function fact(n) {
|
| + if (n == 0) return 1;
|
| + let r = n * fact(n - 1);
|
| + console.log(r);
|
| + return r;
|
| +}
|
| +
|
| +function topLevel() {
|
| + eval(` + '`' + `
|
| + var a = 1;
|
| + var b = 2;
|
| + fact(3);
|
| + console.log(a + b);
|
| + ` + '`' + `);
|
| +}
|
| +
|
| +//# sourceURL=test.js`, 7, 26);
|
| +
|
| +InspectorTest.setupScriptMap();
|
| +InspectorTest.runAsyncTestSuite([
|
| + async function testAwaitDefault() {
|
| + Protocol.Debugger.enable();
|
| + Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 });
|
| + Protocol.Debugger.pause();
|
| + Protocol.Runtime.evaluate({expression: 'asyncFact(4)//# sourceURL=expr.js'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.stepInto();
|
| + let message = await pausedAndDumpStack();
|
| + let location = message.params.callFrames[0].location;
|
| + location.lineNumber = 11;
|
| + Protocol.Debugger.continueToLocation({location, strategy: 'default'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.disable();
|
| + },
|
| +
|
| + async function testAwaitInCurrentFrame() {
|
| + Protocol.Debugger.enable();
|
| + Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 });
|
| + Protocol.Debugger.pause();
|
| + Protocol.Runtime.evaluate({expression: 'asyncFact(4)//# sourceURL=expr.js'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.stepInto();
|
| + let message = await pausedAndDumpStack();
|
| + let location = message.params.callFrames[0].location;
|
| + location.lineNumber = 11;
|
| + Protocol.Debugger.continueToLocation({location, strategy: 'inCurrentFrame'});
|
| + await pausedAndDumpStack();
|
| + await Protocol.Debugger.resume();
|
| + Protocol.Debugger.disable();
|
| + },
|
| +
|
| + async function testDefault() {
|
| + Protocol.Debugger.enable();
|
| + Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 });
|
| + Protocol.Debugger.pause();
|
| + Protocol.Runtime.evaluate({expression: 'fact(4)//# sourceURL=expr.js'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.stepInto();
|
| + let message = await pausedAndDumpStack();
|
| + let location = message.params.callFrames[0].location;
|
| + location.lineNumber = 18;
|
| + Protocol.Debugger.continueToLocation({location, strategy: 'default'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.disable();
|
| + },
|
| +
|
| + async function testInCurrentFrame() {
|
| + Protocol.Debugger.enable();
|
| + Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 });
|
| + Protocol.Debugger.pause();
|
| + Protocol.Runtime.evaluate({expression: 'fact(4)//# sourceURL=expr.js'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.stepInto();
|
| + let message = await pausedAndDumpStack();
|
| + let location = message.params.callFrames[0].location;
|
| + location.lineNumber = 18;
|
| + Protocol.Debugger.continueToLocation({location, strategy: 'inCurrentFrame'});
|
| + await pausedAndDumpStack();
|
| + await Protocol.Debugger.resume();
|
| + Protocol.Debugger.disable();
|
| + },
|
| +
|
| + async function testTopLevelDefault() {
|
| + Protocol.Debugger.enable();
|
| + Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 });
|
| + Protocol.Debugger.pause();
|
| + Protocol.Runtime.evaluate({expression: 'topLevel()//# sourceURL=expr.js'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.stepInto();
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.stepInto();
|
| + let message = await pausedAndDumpStack();
|
| + let location = message.params.callFrames[0].location;
|
| + location.lineNumber = 4;
|
| + Protocol.Debugger.continueToLocation({location, strategy: 'default'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.disable();
|
| + },
|
| +
|
| + async function testTopLevelInCurrentFrame() {
|
| + Protocol.Debugger.enable();
|
| + Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 });
|
| + Protocol.Debugger.pause();
|
| + Protocol.Runtime.evaluate({expression: 'topLevel()//# sourceURL=expr.js'});
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.stepInto();
|
| + await pausedAndDumpStack();
|
| + Protocol.Debugger.stepInto();
|
| + let message = await pausedAndDumpStack();
|
| + let location = message.params.callFrames[0].location;
|
| + location.lineNumber = 4;
|
| + Protocol.Debugger.continueToLocation({location, strategy: 'inCurrentFrame'});
|
| + await pausedAndDumpStack();
|
| + await Protocol.Debugger.resume();
|
| + Protocol.Debugger.disable();
|
| + }
|
| +]);
|
| +
|
| +async function pausedAndDumpStack() {
|
| + let message = await Protocol.Debugger.oncePaused();
|
| + InspectorTest.logCallFrames(message.params.callFrames);
|
| + InspectorTest.logAsyncStackTrace(message.params.asyncStackTrace);
|
| + InspectorTest.log('');
|
| + return message;
|
| +}
|
|
|