diff --git a/src/__tests__/process.test.ts b/src/__tests__/process.test.ts index 71c1e6aaa..abe78440f 100644 --- a/src/__tests__/process.test.ts +++ b/src/__tests__/process.test.ts @@ -7,8 +7,8 @@ describe('process', () => { expect(typeof _process).toBe('object'); }); it('.getuid() and .getgid()', () => { - expect(typeof proc.getuid()).toBe('number'); - expect(typeof proc.getgid()).toBe('number'); + expect(typeof proc.getuid?.() ?? 0).toBe('number'); + expect(typeof proc.getgid?.() ?? 0).toBe('number'); }); it('.cwd()', () => { expect(typeof proc.cwd()).toBe('string'); diff --git a/src/node.ts b/src/node.ts index c55715ecc..df8f1c107 100644 --- a/src/node.ts +++ b/src/node.ts @@ -6,6 +6,8 @@ import { EventEmitter } from 'events'; import Stats from './Stats'; const { S_IFMT, S_IFDIR, S_IFREG, S_IFLNK, O_APPEND } = constants; +const getuid = (): number => process.getuid?.() ?? 0; +const getgid = (): number => process.getgid?.() ?? 0; export const SEP = '/'; @@ -17,8 +19,8 @@ export class Node extends EventEmitter { ino: number; // User ID and group ID. - uid: number = process.getuid(); - gid: number = process.getgid(); + uid: number = getuid(); + gid: number = getgid(); atime = new Date(); mtime = new Date(); @@ -167,7 +169,7 @@ export class Node extends EventEmitter { this.emit('change', this); } - canRead(uid: number = process.getuid(), gid: number = process.getgid()): boolean { + canRead(uid: number = getuid(), gid: number = getgid()): boolean { if (this.perm & S.IROTH) { return true; } @@ -187,7 +189,7 @@ export class Node extends EventEmitter { return false; } - canWrite(uid: number = process.getuid(), gid: number = process.getgid()): boolean { + canWrite(uid: number = getuid(), gid: number = getgid()): boolean { if (this.perm & S.IWOTH) { return true; } diff --git a/src/process.ts b/src/process.ts index 26db6cfb6..1cbdf24e6 100644 --- a/src/process.ts +++ b/src/process.ts @@ -1,9 +1,9 @@ // Here we mock the global `process` variable in case we are not in Node's environment. export interface IProcess { - getuid(): number; + getuid?(): number; - getgid(): number; + getgid?(): number; cwd(): string; @@ -38,8 +38,6 @@ const maybeReturnProcess = (): IProcess | undefined => { export function createProcess(): IProcess { const p: IProcess = maybeReturnProcess() || ({} as IProcess); - if (!p.getuid) p.getuid = () => 0; - if (!p.getgid) p.getgid = () => 0; if (!p.cwd) p.cwd = () => '/'; if (!p.nextTick) p.nextTick = require('./setImmediate').default; if (!p.emitWarning)