Files
HealthLog/src/__tests__/no-control-bytes-guard.test.ts
T
Marc-André Bombeck b4333d65ff test: refuse raw control bytes in source files
Three files carried invisible control bytes in string literals, one of
them a production join key. They are escapes now, the same strings, and
a guard fails on any raw byte below 0x20 other than tab, newline and
carriage return.
2026-10-20 04:23:46 +02:00

42 lines
1.5 KiB
TypeScript

import { readFileSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "vitest";
import { walkSourceFiles } from "@/__tests__/helpers/source-files";
/**
* No raw control byte in a source file, apart from tab, newline and carriage
* return.
*
* A control byte typed into a string literal is invisible in an editor, a
* diff and a review, renders as nothing or as a box, and survives copy and
* paste unseen; the same value written as an escape (`"\x01"`) is the same
* string and can be read. Three such bytes had crept in, one of them in a
* production join key.
*/
const CONTROL = /[\x00-\x08\x0b\x0c\x0e-\x1f]/;
describe("source files carry no raw control bytes", () => {
it("every file under src/ is free of them", () => {
const src = join(process.cwd(), "src");
const files = walkSourceFiles(src, {
floor: 3000,
extensions: [".ts", ".tsx", ".js", ".mjs", ".css", ".json", ".md"],
}).filter((file) => !file.startsWith("generated/"));
const offenders: string[] = [];
for (const file of files) {
const lines = readFileSync(join(src, file), "utf8").split("\n");
lines.forEach((line, i) => {
if (CONTROL.test(line)) offenders.push(`${file}:${i + 1}`);
});
}
expect(offenders).toEqual([]);
});
it("recognises a control byte when one is there", () => {
expect(CONTROL.test("a\u0001b")).toBe(true);
expect(CONTROL.test("tab\tnewline\ncr\r")).toBe(false);
});
});