Chromium Code Reviews| Index: test/inspector/debugger/schedule-step-into-async.js |
| diff --git a/test/inspector/debugger/schedule-step-into-async.js b/test/inspector/debugger/schedule-step-into-async.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2a72a5dd7a10fe5ed0b79445a6f8fe6bd8b0caee |
| --- /dev/null |
| +++ b/test/inspector/debugger/schedule-step-into-async.js |
| @@ -0,0 +1,159 @@ |
| +// 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('Checks Debugger.scheduleStepIntoAsync.'); |
| + |
| +InspectorTest.addScript(` |
| +function testNoScheduledTask() { |
| + debugger; |
| + return 42; |
| +} |
| + |
| +function testSimple() { |
|
dgozman
2017/03/03 19:47:06
Do we test for a couple step-ins before the task i
kozy
2017/03/03 23:14:02
But if I scheduledAsyncStepIn at debugger statemen
|
| + debugger; |
| + Promise.resolve().then(v => v * 2); |
| +} |
| + |
| +function testNotResolvedPromise() { |
| + var resolveCallback; |
| + var p = new Promise(resolve => resolveCallback = resolve); |
| + debugger; |
| + p.then(v => v * 2); |
| + resolveCallback(); |
| +} |
| + |
| +function testTwoAsyncTasks() { |
| + debugger; |
| + Promise.resolve().then(v => v * 2); |
| + Promise.resolve().then(v => v * 4); |
| +} |
| + |
| +function testTwoAsyncTasksWithBreak() { |
| + debugger; |
| + Promise.resolve().then(v => v * 2); |
| + debugger; |
| + Promise.resolve().then(v => v * 4); |
| +} |
| + |
| +function testPromiseAll() { |
| + debugger; |
| + Promise.all([ Promise.resolve(), Promise.resolve() ]).then(v => v * 2); |
| +} |
| + |
| +function testBlackboxedCreatePromise() { |
| + debugger; |
| + createPromise().then(v => v * 2); |
| +} |
| +//# sourceURL=test.js`); |
| + |
| +InspectorTest.addScript(` |
| + |
| +function createPromise() { |
| + return Promise.resolve().then(v => v * 3).then(v => v * 4); |
| +} |
| + |
| +//# sourceURL=framework.js`) |
| + |
| +InspectorTest.setupScriptMap(); |
| + |
| +Protocol.Debugger.enable(); |
| +InspectorTest.runAsyncTestSuite([ |
| + async function testScheduleErrors() { |
| + Protocol.Runtime.evaluate({ expression: 'testNoScheduledTask()' }); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.stepInto(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.resume(); |
| + }, |
| + |
| + async function testSimple() { |
| + Protocol.Runtime.evaluate({ expression: 'testSimple()' }); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.stepInto(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.resume(); |
| + }, |
| + |
| + async function testNotResolvedPromise() { |
| + Protocol.Runtime.evaluate({ expression: 'testNotResolvedPromise()' }); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.stepInto(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.resume(); |
| + }, |
| + |
| + async function testTwoAsyncTasks() { |
| + Protocol.Runtime.evaluate({ expression: 'testTwoAsyncTasks()' }); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.resume(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.resume(); |
| + }, |
| + |
| + async function testTwoTasksAndGoToSecond() { |
| + Protocol.Runtime.evaluate({ expression: 'testTwoAsyncTasks()' }); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.resume(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.resume(); |
| + }, |
| + |
| + async function testTwoAsyncTasksWithBreak() { |
| + Protocol.Runtime.evaluate({ expression: 'testTwoAsyncTasksWithBreak()' }); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.resume(); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.resume(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.resume(); |
| + }, |
| + |
| + async function testPromiseAll() { |
| + Protocol.Runtime.evaluate({ expression: 'testPromiseAll()' }); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.resume(); |
| + }, |
| + |
| + async function testWithBlackboxedCode() { |
| + Protocol.Runtime.evaluate({ expression: 'testBlackboxedCreatePromise()' }); |
| + await waitPauseAndDumpLocation(); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.setBlackboxPatterns({patterns: ['framework\.js'] }); |
| + Protocol.Debugger.scheduleStepIntoAsync().then(InspectorTest.logMessage); |
| + Protocol.Debugger.stepOver(); |
| + await waitPauseAndDumpLocation(); |
| + await Protocol.Debugger.resume(); |
| + } |
| +]); |
| + |
| +async function waitPauseAndDumpLocation() { |
| + var message = await Protocol.Debugger.oncePaused(); |
| + InspectorTest.log('paused at:'); |
| + InspectorTest.logCallFrameSourceLocation(message.params.callFrames[0]); |
| + return message; |
| +} |