fix(utf8): закрыть lossy-границы конфигурации и API
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
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
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user