MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1const fs = require('node:fs');
2
3function assert(condition, message) {
4 if (!condition) throw new Error(message);
5}
6
7function expectThrow(fn, label) {
8 try {
9 fn();
10 } catch (error) {
11 return error;
12 }
13 throw new Error(`${label} did not throw`);
14}
15
16const missingPath = 'tests/.fs_missing_file';
17const renameDest = `${missingPath}.renamed`;
18
19const readError = expectThrow(() => fs.readFileSync(missingPath, 'utf8'), 'readFileSync');
20assert(readError.code === 'ENOENT', `expected readFileSync code ENOENT, got ${readError.code}`);
21assert(readError.syscall === 'open', `expected readFileSync syscall open, got ${readError.syscall}`);
22assert(readError.path === missingPath, `expected readFileSync path ${missingPath}, got ${readError.path}`);
23assert(readError.message === `ENOENT: no such file or directory, open '${missingPath}'`, `unexpected readFileSync message: ${readError.message}`);
24
25const renameError = expectThrow(() => fs.renameSync(missingPath, renameDest), 'renameSync');
26assert(renameError.code === 'ENOENT', `expected renameSync code ENOENT, got ${renameError.code}`);
27assert(renameError.syscall === 'rename', `expected renameSync syscall rename, got ${renameError.syscall}`);
28assert(renameError.path === missingPath, `expected renameSync path ${missingPath}, got ${renameError.path}`);
29assert(renameError.dest === renameDest, `expected renameSync dest ${renameDest}, got ${renameError.dest}`);
30assert(
31 renameError.message === `ENOENT: no such file or directory, rename '${missingPath}' -> '${renameDest}'`,
32 `unexpected renameSync message: ${renameError.message}`
33);
34
35console.log('fs error message test passed');