mirror of
https://github.com/nodejs/node.git
synced 2025-05-16 07:33:15 +00:00

PR-URL: https://github.com/nodejs/node/pull/19989 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matheus Marchini <matheus@sthima.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Myles Borins <myles.borins@gmail.com>
61 lines
2.3 KiB
JavaScript
61 lines
2.3 KiB
JavaScript
// 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 Runtime.terminateExecution');
|
|
|
|
(async function test() {
|
|
Protocol.Runtime.enable();
|
|
Protocol.Runtime.onConsoleAPICalled(
|
|
message => InspectorTest.logMessage(message.params.args[0]));
|
|
InspectorTest.log(
|
|
'Terminate first evaluation (it forces injected-script-source compilation)');
|
|
await Promise.all([
|
|
Protocol.Runtime.terminateExecution().then(InspectorTest.logMessage),
|
|
Protocol.Runtime.evaluate({expression: 'console.log(42)'})
|
|
.then(InspectorTest.logMessage)
|
|
]);
|
|
|
|
InspectorTest.log('Checks that we reset termination after evaluation');
|
|
InspectorTest.logMessage(
|
|
await Protocol.Runtime.evaluate({expression: 'console.log(42)'}));
|
|
InspectorTest.log(
|
|
'Terminate evaluation when injected-script-source already compiled');
|
|
await Promise.all([
|
|
Protocol.Runtime.terminateExecution().then(InspectorTest.logMessage),
|
|
Protocol.Runtime.evaluate({expression: 'console.log(42)'})
|
|
.then(InspectorTest.logMessage)
|
|
]);
|
|
|
|
InspectorTest.log('Terminate script evaluated with v8 API');
|
|
const terminated =
|
|
Protocol.Runtime.terminateExecution().then(InspectorTest.logMessage);
|
|
contextGroup.addScript('console.log(42)');
|
|
await terminated;
|
|
|
|
InspectorTest.log('Terminate chained callback');
|
|
Protocol.Debugger.enable();
|
|
const paused = Protocol.Debugger.oncePaused();
|
|
await Protocol.Runtime.evaluate({
|
|
expression: `let p = new Promise(resolve => setTimeout(resolve, 0));
|
|
p.then(() => {
|
|
while(true){ debugger; }
|
|
}).then(() => console.log('chained after chained callback'));
|
|
p.then(() => { console.log('another chained callback'); });
|
|
undefined`
|
|
});
|
|
await paused;
|
|
|
|
InspectorTest.log('Pause inside microtask and terminate execution');
|
|
Protocol.Runtime.terminateExecution().then(InspectorTest.logMessage);
|
|
await Protocol.Debugger.resume();
|
|
await Protocol.Runtime
|
|
.evaluate({expression: `console.log('separate eval after while(true)')`})
|
|
.then(InspectorTest.logMessage);
|
|
await Protocol.Debugger.disable();
|
|
|
|
await Protocol.Runtime.disable();
|
|
InspectorTest.completeTest();
|
|
})();
|