Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(475)

Unified Diff: test/inspector/debugger/stepping-tail-call.js

Issue 2758483002: [debugger] tuned StepNext and StepOut at return position (Closed)
Patch Set: addressed comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/inspector/debugger/stepping-tail-call.js
diff --git a/test/inspector/debugger/stepping-tail-call.js b/test/inspector/debugger/stepping-tail-call.js
new file mode 100644
index 0000000000000000000000000000000000000000..9e6aa9a5a70cbfefa1fd58dcd0326df472a35646
--- /dev/null
+++ b/test/inspector/debugger/stepping-tail-call.js
@@ -0,0 +1,81 @@
+// 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 stepping over tail calls.');
+
+InspectorTest.setupScriptMap();
+InspectorTest.dumpProtocolCommand('Debugger.pause');
+InspectorTest.dumpProtocolCommand('Debugger.stepInto');
+InspectorTest.dumpProtocolCommand('Debugger.stepOver');
+InspectorTest.dumpProtocolCommand('Debugger.stepOut');
+InspectorTest.dumpProtocolCommand('Debugger.resume');
+
+let source = `
+function f(x) {
+ if (x == 2) debugger;
+ if (x-- > 0) return f(x);
+}
+f(5);
+`;
+
+Protocol.Debugger.enable();
+Protocol.Debugger.setBlackboxPatterns({patterns: ['framework\.js']});
+InspectorTest.runAsyncTestSuite([
+ async function testStepOver() {
+ Protocol.Runtime.evaluate({expression: source});
+ 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.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.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testStepOut() {
+ Protocol.Runtime.evaluate({expression: source});
+ 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.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testStepOutFromReturn() {
+ Protocol.Runtime.evaluate({expression: source});
+ 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.stepOut();
+ 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.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ }
+]);
+
+function logPauseLocation(message) {
+ InspectorTest.logCallFrames(message.params.callFrames);
+ return InspectorTest.logSourceLocation(message.params.callFrames[0].location);
+}

Powered by Google App Engine
This is Rietveld 408576698