@zenfs/core
Version:
A filesystem, anywhere
68 lines (48 loc) • 1.68 kB
text/typescript
// SPDX-License-Identifier: LGPL-3.0-or-later
import assert from 'node:assert/strict';
import { suite, test } from 'node:test';
import { fs } from '../common.js';
const path: string = 'truncate-file.txt',
size = 1024 * 16,
data = new Uint8Array(size).fill('x'.charCodeAt(0));
suite('Truncating', () => {
test('Sync path functions', () => {
fs.writeFileSync(path, data);
assert.equal(fs.statSync(path).size, size);
fs.truncateSync(path, 1024);
assert.equal(fs.statSync(path).size, 1024);
fs.truncateSync(path);
assert.equal(fs.statSync(path).size, 0);
fs.writeFileSync(path, data);
assert.equal(fs.statSync(path).size, size);
});
test('FD functions', () => {
const fd = fs.openSync(path, 'r+');
fs.ftruncateSync(fd, 1024);
assert.equal(fs.fstatSync(fd).size, 1024);
fs.ftruncateSync(fd);
assert.equal(fs.fstatSync(fd).size, 0);
fs.closeSync(fd);
});
const statSize = async (path: string) => (await fs.promises.stat(path)).size;
test('Async path functions', async () => {
await fs.promises.writeFile(path, data);
assert.equal(await statSize(path), 1024 * 16);
await fs.promises.truncate(path, 1024);
assert.equal(await statSize(path), 1024);
await fs.promises.truncate(path);
assert.equal(await statSize(path), 0);
await fs.promises.writeFile(path, data);
assert.equal(await statSize(path), size);
});
test('FileHandle', async () => {
const handle = await fs.promises.open(path, 'w');
await handle.truncate(1024);
await handle.sync();
assert.equal(await statSize(path), 1024);
await handle.truncate();
await handle.sync();
assert.equal(await statSize(path), 0);
await handle.close();
});
});