test/scripts/parse-program.test.ts
Rama main · réplica de lectura del repositorio original.
import { expect } from "@std/expect";
import { describe, it as test } from "@std/testing/bdd";
import { parseProgram } from "#scripts/parse-program.ts";
describe("parseProgram", () => {
test("returns a complete module tree", () => {
expect(
parseProgram("sample.ts", "export const value = 1;").body,
).toHaveLength(1);
});
test("rejects a recovered tree", () => {
const source = 'import { value } from "./right.ts"; /* trailing note';
expect(() => parseProgram("sample.ts", source)).toThrow(
"sample.ts does not parse: Unterminated multiline comment",
);
});
test("keeps spans on JavaScript string indices", () => {
const source = "// caf\u00e9 \ud83d\ude00\nconst value = 1;";
const declaration = parseProgram("sample.ts", source).body[0]!;
expect(declaration.start).toBe(source.indexOf("const"));
expect(declaration.end).toBe(source.indexOf(";") + 1);
expect(source.slice(declaration.start, declaration.end)).toBe(
"const value = 1;",
);
});
});