electron/spec/fixtures/module/inspector-binding.js

77 lines
1.9 KiB
JavaScript
Raw Normal View History

2017-11-06 14:25:48 +00:00
const inspector = require('inspector')
const path = require('path')
const { pathToFileURL } = require('url')
2017-11-06 14:25:48 +00:00
// 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
2017-11-06 14:25:48 +00:00
}, scopeCallback)
}
function debuggerPausedCallback (session, notification) {
const params = notification.params
const callFrame = params.callFrames[0]
const scopeId = callFrame.scopeChain[0].object.objectId
2017-11-06 14:25:48 +00:00
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]
2017-11-06 14:25:48 +00:00
if (actual !== expected) {
failures.push(`Iteration ${i} variable: ${v.name} ` +
2017-11-06 14:25:48 +00:00
`expected: ${expected} actual: ${actual}`)
}
}
}
const session = new inspector.Session()
session.connect()
session.on('Debugger.paused',
2018-09-13 16:10:51 +00:00
(notification) => debuggerPausedCallback(session, notification))
2017-11-06 14:25:48 +00:00
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: ''
2017-11-06 14:25:48 +00:00
})
debuggedFunction()
scopeCallback = null
session.disconnect()
process.send({
cmd: 'assert',
debuggerEnabled: cbAsSecondArgCalled,
success: (cur === 5) && (failures.length === 0)
2017-11-06 14:25:48 +00:00
})
}
testSampleDebugSession()