| // Copyright 2018 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("Tests that Runtime.evaluate can run without side effects."); |
| |
| session.setupScriptMap(); |
| contextGroup.addScript(` |
| function f() { |
| return 2; |
| } //# sourceURL=test.js`); |
| Protocol.Runtime.enable(); |
| Protocol.Debugger.enable(); |
| |
| Protocol.Debugger.onPaused(message => { |
| InspectorTest.log("paused"); |
| Protocol.Debugger.resume(); |
| }); |
| |
| (async function() { |
| InspectorTest.log("Test throwOnSideEffect: false"); |
| InspectorTest.logMessage(await Protocol.Runtime.evaluate({ |
| expression: "var x = 2; x;", |
| throwOnSideEffect: false |
| })); |
| |
| InspectorTest.log("Test expression with side-effect, with throwOnSideEffect: true"); |
| InspectorTest.logMessage(await Protocol.Runtime.evaluate({ |
| expression: "x = 3; x;", |
| throwOnSideEffect: true |
| })); |
| |
| InspectorTest.log("Test expression without side-effect, with throwOnSideEffect: true"); |
| InspectorTest.logMessage(await Protocol.Runtime.evaluate({ |
| expression: "x * 2", |
| throwOnSideEffect: true |
| })); |
| |
| InspectorTest.log("Test that debug break triggers without throwOnSideEffect"); |
| await Protocol.Debugger.setBreakpointByUrl({ url: 'test.js', lineNumber: 2 }); |
| InspectorTest.logMessage(await Protocol.Runtime.evaluate({ |
| expression: "f()", |
| throwOnSideEffect: false |
| })); |
| |
| InspectorTest.log("Test that debug break does not trigger with throwOnSideEffect"); |
| InspectorTest.logMessage(await Protocol.Runtime.evaluate({ |
| expression: "f()", |
| throwOnSideEffect: true |
| })); |
| |
| InspectorTest.completeTest(); |
| })(); |