| Index: test/inspector/debugger/step-out-async-await.js
|
| diff --git a/test/inspector/debugger/step-out-async-await.js b/test/inspector/debugger/step-out-async-await.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3b249dc7f368296dfacfd1e7f58aabd5bf1fecf5
|
| --- /dev/null
|
| +++ b/test/inspector/debugger/step-out-async-await.js
|
| @@ -0,0 +1,72 @@
|
| +// 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.
|
| +
|
| +// TODO(kozyatinskiy): on StepOut and probably StepNext at return position
|
| +// of async generator we should break at next instruction of resumed generator
|
| +// instead of next scheduled microtask.
|
| +
|
| +InspectorTest.log('StepOut from return position of async function.');
|
| +
|
| +InspectorTest.addScript(`
|
| + async function testFunction() {
|
| + async function foo() {
|
| + var p = Promise.resolve();
|
| + await p;
|
| + p.then(() => 1);
|
| + debugger;
|
| + return p;
|
| + }
|
| + await foo();
|
| + }
|
| +`);
|
| +
|
| +InspectorTest.setupScriptMap();
|
| +Protocol.Debugger.enable();
|
| +InspectorTest.runAsyncTestSuite([
|
| + async function testStepInto() {
|
| + Protocol.Runtime.evaluate({expression: 'testFunction()'});
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepInto();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepInto();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepInto();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.resume();
|
| + },
|
| +
|
| + async function testStepOver() {
|
| + Protocol.Runtime.evaluate({expression: 'testFunction()'});
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepInto();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepInto();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepOver();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepOver();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepOver();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.resume();
|
| + },
|
| +
|
| + async function testStepOut() {
|
| + Protocol.Runtime.evaluate({expression: 'testFunction()'});
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepInto();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepInto();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepOut();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.stepOut();
|
| + await logPauseLocation(await Protocol.Debugger.oncePaused());
|
| + Protocol.Debugger.resume();
|
| + },
|
| +]);
|
| +
|
| +function logPauseLocation(message) {
|
| + return InspectorTest.logSourceLocation(message.params.callFrames[0].location);
|
| +}
|
|
|