28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
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/,
|
|
);
|
|
});
|