@zenfs/core
Version:
A filesystem, anywhere
61 lines (48 loc) • 1.48 kB
text/typescript
import assert from 'node:assert';
import { suite, test } from 'node:test';
import { constants, type FileHandle, open } from '../src/emulation/promises.js';
const content = 'The cake is a lie',
appended = '\nAnother lie';
await suite('FileHandle', () => {
let handle: FileHandle;
const filePath = './test.txt';
test('open', async () => {
handle = await open(filePath, 'w+');
});
test('writeFile', async () => {
await handle.writeFile(content);
await handle.sync();
});
test('readFile', async () => {
assert((await handle.readFile('utf8')) === content);
});
test('appendFile', async () => {
await handle.appendFile(appended);
});
test('readFile after appendFile', async () => {
assert((await handle.readFile({ encoding: 'utf8' })) === content + appended);
});
test('truncate', async () => {
await handle.truncate(5);
assert((await handle.readFile({ encoding: 'utf8' })) === content.slice(0, 5));
});
test('stat', async () => {
const stats = await handle.stat();
assert(stats.isFile());
});
test('chmod', async () => {
await handle.chmod(constants.S_IRUSR | constants.S_IWUSR);
const stats = await handle.stat();
assert(stats.mode & constants.S_IRUSR);
assert(stats.mode & constants.S_IWUSR);
});
test('chown', async () => {
await handle.chown(1234, 5678);
const stats = await handle.stat();
assert(stats.uid === 1234);
assert(stats.gid === 5678);
});
test('close', async () => {
await handle.close();
});
});