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

Unified Diff: test/inspector/debugger/get-possible-breakpoints-master-test.js

Issue 2710903003: [inspector] added master test for break locations (Closed)
Patch Set: a Created 3 years, 10 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/get-possible-breakpoints-master-test.js
diff --git a/test/inspector/debugger/get-possible-breakpoints-master-test.js b/test/inspector/debugger/get-possible-breakpoints-master-test.js
new file mode 100644
index 0000000000000000000000000000000000000000..fb946b4b1ef6536faf82b68e8cc89615db624335
--- /dev/null
+++ b/test/inspector/debugger/get-possible-breakpoints-master-test.js
@@ -0,0 +1,132 @@
+// 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.
+
+var source = `
+function test() {
+ // for loops
+ for (var i = 0; i < 128; ++i) {
+ }
+ for (var a of array) {
+ }
+ for (var a of [1,2,3]) {
dgozman 2017/02/23 02:03:29 for (var a in {x:2})
kozy 2017/02/27 17:37:58 Done.
+ }
+ for (var i = boo1(); i != boo2(); i += boo3()) {
+ }
+ // switch
+ switch(val) {
+ case 1: break;
+ case 2: return;
+ }
+ switch(boo1()) {
+ default: break;
+ }
+ // nested functions
+ function nested1() {}
dgozman 2017/02/23 02:03:29 Let's do double-nested as well.
kozy 2017/02/27 17:37:58 Done.
+ function nested2() { return 42; }
dgozman 2017/02/23 02:03:29 function nested3() { return; }
kozy 2017/02/27 17:37:58 Done.
+ // arrow function + assignment
+ var a = () => 42;
+ // var
+ var b1 = 2;
+ var b2 = 1 + 2;
+ var b3 = ++b2;
+ var b4 = boo4() + boo5();
+ // let
+ let a1 = 1;
+ let a2 = a1 + 2;
+ let a3 = boo3() + boo4();
+ // const
+ const c1 = 1;
+ // while loops
+ while (i < boo5()) {
+ boo6();
+ break;
+ }
+ // continue
+ while (i) {
+ ++i;
+ continue;
+ }
+ // debugger
+ debugger;
+ // do
dgozman 2017/02/23 02:03:29 Forgot about if and with constructions, and also g
kozy 2017/02/27 17:37:58 Done.
+ do {
+ boo7();
+ } while(boo5() + boo6());
+ // try
+ try {
+ throw new Error();
+ } catch (e) {
+ boo2();
+ } finally {
+ boo1();
+ }
+ // obj literal
+ var obj = {
+ prop: 2
+ };
+ // arrow functions
+ Promise.resolve().then(() => 42)
+ .then(a => a++)
+ .then(a => a())
+ .then(a => { boo1(); boo2(); });
+ // classes
+ class Cat {
+ constructor(name) {
+ this.name = name;
+ }
+
+ speak() {
+ }
+ }
+ class Lion extends Cat {
+ constructor(name) {
+ super(name);
+ }
+
+ speak() {
+ super.speak();
+ }
+ }
+ // other expressions
+ obj.a.b().c = obj.a().b.c();
+ 1 + 2;
+ ({}).a = 42;
+ ++a;
+ boo() + foo();
+ // async await
+ async function async1() {
+ await Promise.resolve().then(() => 42);
+ await async2();
+ }
+ async function async2() {
+ return 42;
+ }
+}
dgozman 2017/02/23 02:03:29 Let's also have something complex like foo(boo1()
kozy 2017/02/27 17:37:58 Done.
dgozman 2017/02/27 18:01:10 Forgot about this or did I miss it?
kozy 2017/02/27 18:54:19 lost during migration to test from step-into :( ad
+//# sourceURL=test.js`;
+InspectorTest.addScript(source);
+
+Protocol.Debugger.onceScriptParsed()
+ .then(message => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber : 0, scriptId: message.params.scriptId }}))
+ .then(dumpAllLocations)
+ .then(InspectorTest.completeTest);
+Protocol.Debugger.enable();
+
+function dumpAllLocations(message) {
+ if (message.error) {
+ InspectorTest.logMessage(message);
+ return;
+ }
+ var lines = source.split('\n');
+ var locations = message.result.locations.sort((loc1, loc2) => {
+ if (loc2.lineNumber !== loc1.lineNumber) return loc2.lineNumber - loc1.lineNumber;
+ return loc2.columnNumber - loc1.columnNumber;
+ });
+ for (var location of locations) {
+ var line = lines[location.lineNumber];
+ line = line.slice(0, location.columnNumber) + '#' + line.slice(location.columnNumber);
+ lines[location.lineNumber] = line;
+ }
+ InspectorTest.log(lines.join('\n'));
+ return message;
+}

Powered by Google App Engine
This is Rietveld 408576698