electron/spec/fixtures/module/inspector-binding.js
Samuel Attard b87b501161
build: update eslint + eslint plugins (#22777)
* build: run eslint --fix

* chore: manually fix all hasOwnProperty errors

* chore: manually fix all void 0 vs undefined errors

* chore: manually fix all async-in-promise errors

* chore: manually fix lexical declaration in case block
2020-03-20 11:12:18 -04:00

76 lines
1.9 KiB
JavaScript

const inspector = require('inspector')
const path = require('path')
const { pathToFileURL } = require('url')
// This test case will set a breakpoint 4 lines below
function debuggedFunction () {
let i
let accum = 0
for (i = 0; i < 5; i++) {
accum += i
}
return accum
}
let scopeCallback = null
function checkScope (session, scopeId) {
session.post('Runtime.getProperties', {
objectId: scopeId,
ownProperties: false,
accessorPropertiesOnly: false,
generatePreview: true
}, scopeCallback)
}
function debuggerPausedCallback (session, notification) {
const params = notification.params
const callFrame = params.callFrames[0]
const scopeId = callFrame.scopeChain[0].object.objectId
checkScope(session, scopeId)
}
function testSampleDebugSession () {
let cur = 0
const failures = []
const expects = {
i: [0, 1, 2, 3, 4],
accum: [0, 0, 1, 3, 6]
}
scopeCallback = function (error, result) {
if (error) failures.push(error)
const i = cur++
let v, actual, expected
for (v of result.result) {
actual = v.value.value
expected = expects[v.name][i]
if (actual !== expected) {
failures.push(`Iteration ${i} variable: ${v.name} ` +
`expected: ${expected} actual: ${actual}`)
}
}
}
const session = new inspector.Session()
session.connect()
session.on('Debugger.paused',
(notification) => debuggerPausedCallback(session, notification))
let cbAsSecondArgCalled = false
session.post('Debugger.enable', () => { cbAsSecondArgCalled = true })
session.post('Debugger.setBreakpointByUrl', {
lineNumber: 9,
url: pathToFileURL(path.resolve(__dirname, __filename)).toString(),
columnNumber: 0,
condition: ''
})
debuggedFunction()
scopeCallback = null
session.disconnect()
process.send({
cmd: 'assert',
debuggerEnabled: cbAsSecondArgCalled,
success: (cur === 5) && (failures.length === 0)
})
}
testSampleDebugSession()