77 lines
2.1 KiB
JavaScript
77 lines
2.1 KiB
JavaScript
/**
|
|
* Node test shim: bare-os `binding.js` uses `require.addon()` (Bare-only).
|
|
* Provides a minimal process/os-shaped object for brittle-node tests.
|
|
*/
|
|
'use strict'
|
|
|
|
const os = require('node:os')
|
|
const p = process
|
|
|
|
function networkInterfacesFlat() {
|
|
const ni = os.networkInterfaces()
|
|
const out = []
|
|
for (const name of Object.keys(ni)) {
|
|
const addrs = ni[name]
|
|
if (!addrs) continue
|
|
for (const a of addrs) out.push({ name, ...a })
|
|
}
|
|
return out
|
|
}
|
|
|
|
module.exports = {
|
|
signals: os.constants.signals,
|
|
errnos: os.constants.errno || {},
|
|
priority: os.constants.priority || {},
|
|
platform: p.platform,
|
|
arch: os.arch(),
|
|
type: os.type(),
|
|
version: os.version(),
|
|
release: os.release(),
|
|
machine: os.machine(),
|
|
execPath: p.execPath,
|
|
pid: () => p.pid,
|
|
ppid: () => p.ppid,
|
|
cwd: () => p.cwd(),
|
|
chdir: (d) => p.chdir(d),
|
|
tmpdir: () => os.tmpdir(),
|
|
homedir: () => os.homedir(),
|
|
hostname: () => os.hostname(),
|
|
userInfo: (opts) => os.userInfo(opts),
|
|
networkInterfaces: () => networkInterfacesFlat(),
|
|
kill: (pid, sig) => p.kill(pid, sig),
|
|
isLittleEndian: os.endianness() === 'LE',
|
|
availableParallelism: () =>
|
|
typeof os.availableParallelism === 'function'
|
|
? os.availableParallelism()
|
|
: os.cpus().length,
|
|
cpuUsage: () => p.cpuUsage(),
|
|
threadCpuUsage: () => ({ user: 0, system: 0 }),
|
|
resourceUsage: () => p.resourceUsage(),
|
|
memoryUsage: () => p.memoryUsage(),
|
|
freemem: () => os.freemem(),
|
|
totalmem: () => os.totalmem(),
|
|
availableMemory: () => os.freemem(),
|
|
constrainedMemory: () => os.totalmem(),
|
|
uptime: () => os.uptime(),
|
|
loadavg: () => os.loadavg(),
|
|
cpus: () => os.cpus(),
|
|
getProcessTitle: () => p.title,
|
|
setProcessTitle: (t) => {
|
|
p.title = t
|
|
},
|
|
getPriority: (pid) => p.getPriority(pid),
|
|
setPriority: (pid, pri) => p.setPriority(pid, pri),
|
|
getEnvKeys: () => Object.keys(p.env),
|
|
getEnv: (k) => {
|
|
const v = p.env[String(k)]
|
|
return v === undefined ? '' : String(v)
|
|
},
|
|
hasEnv: (k) => Object.prototype.hasOwnProperty.call(p.env, String(k)),
|
|
setEnv: (k, v) => {
|
|
p.env[String(k)] = String(v)
|
|
},
|
|
unsetEnv: (k) => {
|
|
delete p.env[String(k)]
|
|
}
|
|
}
|