Files

28 lines
1.1 KiB
TypeScript
Raw Permalink Normal View History

import assert from "node:assert/strict";
import test from "node:test";
import { componentEntries } from "../src/capability-language/component-nix.js";
test("component edit surface parses literal Nix without evaluating arbitrary expressions", async () => {
assert.deepEqual(
{
...(await componentEntries(
`{\n # retained author comment\n "component:card" = { export = "Card"; entry = "src/card.tsx"; };\n}\n`,
)),
},
{ "component:card": { entry: "src/card.tsx", export: "Card" } },
);
await assert.rejects(
componentEntries('let x = builtins.abort "must not evaluate"; in x'),
/supported literal-entry shape|literal strings|supported scaffold shape/,
);
await assert.rejects(
componentEntries(
'{\n "component:card" = { entry = "${builtins.abort "must not evaluate"}"; export = "Card"; };\n}\n',
),
/literal strings|supported literal-entry shape/,
);
await assert.rejects(
componentEntries('{\n "component:card" = { entry = "src/card.tsx"; export = "Card"; extra = true; };\n}\n'),
/Unsupported component entry property/,
);
});