v8/test/inspector/debugger/script-parsed-for-runtime-evaluate.js
dgozman 7bbea08f66 [inspector] Refactor protocol-test.js
This refactoring makes it easier to write advanced tests and
gives full control over what's happening to the test code.
It also forces description for every test.

BUG=none

Review-Url: https://codereview.chromium.org/2891213002
Cr-Commit-Position: refs/heads/master@{#45412}
2017-05-19 00:35:45 +00:00

80 lines
2.9 KiB
JavaScript

// Copyright 2016 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.
let {session, contextGroup, Protocol} = InspectorTest.start("Checks that inspector reports script compiled in Runtime.evaluate, " +
"Runtime.callFunctionOn and Runtime.compileScript");
contextGroup.addScript(`
function fooTop() {
eval(\`
function foo() {
eval("({})")
}
foo() //# sourceURL=second-frame.js\`);
}
//# sourceURL=top-frame.js`, 8, 26);
contextGroup.addScript(`
function fooTopFail() {
eval(\`
function fooFail() {
eval("({}")
}
fooFail() //# sourceURL=second-frame-fail.js\`);
}
//# sourceURL=top-frame-fail.js`, 18, 26);
Promise.prototype.thenLog = function log(message) {
return this.then(() => InspectorTest.log(message));
}
var objectId;
Protocol.Runtime.enable();
Protocol.Debugger.enable()
.then(() => Protocol.Debugger.onScriptParsed(InspectorTest.logMessage))
.then(() => Protocol.Debugger.onScriptFailedToParse(InspectorTest.logMessage))
.thenLog('Runtime.evaluate with valid expression')
.then(() => Protocol.Runtime.evaluate({
expression: "({})//# sourceURL=evaluate.js"}))
.then(msg => objectId = msg.result.result.objectId)
.thenLog('Runtime.evaluate with syntax error')
.then(() => Protocol.Runtime.evaluate({
expression: "}//# sourceURL=evaluate-syntax-error.js"}))
.thenLog('Runtime.callFunctionOn with valid functionDeclaration')
.then(() => Protocol.Runtime.callFunctionOn({ objectId: objectId,
functionDeclaration: "function foo(){}"}))
.thenLog('Runtime.callFunctionOn with syntax error')
.then(() => Protocol.Runtime.callFunctionOn({ objectId: objectId,
functionDeclaration: "}"}))
.thenLog('Runtime.compileScript with valid expression')
.then(() => Protocol.Runtime.compileScript({ expression: "({})",
sourceURL: "compile-script.js", persistScript: true }))
.thenLog('Runtime.compileScript with syntax error')
.then(() => Protocol.Runtime.compileScript({ expression: "}",
sourceURL: "compile-script-syntax-error.js", persistScript: true }))
.thenLog('Runtime.compileScript persistScript: false (should be no script events)')
.then(() => Protocol.Runtime.compileScript({ expression: "({})",
sourceURL: "compile-script-syntax-error.js", persistScript: false }))
.then(() => Protocol.Runtime.compileScript({ expression: "}",
sourceURL: "compile-script-syntax-error.js", persistScript: false }))
.thenLog('Runtime.evaluate compiled script with stack trace')
.then(() => Protocol.Runtime.evaluate({
expression: "fooTop()"}))
.then(msg => objectId = msg.result.result.objectId)
.thenLog('Runtime.evaluate compile script error with stack trace')
.then(() => Protocol.Runtime.evaluate({
expression: "fooTopFail()"}))
.then(msg => objectId = msg.result.result.objectId)
.then(InspectorTest.completeTest);