Files
HY2XS_flamy/orchestrator/test/package-meta-utf8.test.ts
T

35 lines
1.4 KiB
TypeScript

import { afterEach, describe, expect, test } from "bun:test";
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { InvalidUtf8Error } from "../src/lib/fs";
import { readPackageValue } from "../src/lib/packageMeta";
const directories: string[] = [];
afterEach(async () => {
await Promise.all(directories.splice(0).map((directory) => rm(directory, { recursive: true, force: true })));
});
async function packageDir(): Promise<string> {
const directory = await mkdtemp(join(tmpdir(), "hy2xs-metadata-"));
directories.push(directory);
await mkdir(join(directory, "metadata"));
return directory;
}
describe("metadata пакета", () => {
test("отсутствующее необязательное значение использует fallback", async () => {
const directory = await packageDir();
expect(await readPackageValue(directory, "missing", "unknown")).toBe("unknown");
});
test("повреждённый UTF-8 не маскируется fallback-значением", async () => {
const directory = await packageDir();
await writeFile(join(directory, "metadata", "package.version"), new Uint8Array([0x31, 0xff]));
await expect(readPackageValue(directory, "package.version", "unknown")).rejects.toBeInstanceOf(
InvalidUtf8Error
);
});
});