Files
2019-11-28 16:22:53 +08:00

47 lines
1.1 KiB
JavaScript

const execa = require('execa')
const rawArgs = process.argv.slice(2)
const usedPorts = []
module.exports = function createJestRunner (jestArgs) {
return async function () {
const execArgv = getChildProcesExecArgv()
const args = [...execArgv, ...jestArgs]
console.log(`running node with args: ${args.join(' ')}`)
args.unshift(...rawArgs, require.resolve('jest-cli/bin/jest'))
await execa('node', args, {
stdio: 'inherit'
})
}
}
function getChildProcesExecArgv () {
const execArgv = process.execArgv.slice(0)
const inspectArgvIndex = execArgv.findIndex(argv =>
argv.includes('--inspect-brk')
)
if (inspectArgvIndex > -1) {
const inspectArgv = execArgv[inspectArgvIndex]
execArgv.splice(
inspectArgvIndex,
1,
inspectArgv.replace(/--inspect-brk=(.*)/, (match, s1) => {
let port
try {
port = parseInt(s1) + 1
} catch (e) {
port = 9230 // node default inspect port plus 1.
}
if (usedPorts.includes(port)) {
port++
}
usedPorts.push(port)
return `--inspect-brk=${port}`
})
)
}
return execArgv
}