feat: vendor permission system source

This commit is contained in:
云服务部-叶林立
2026-08-19 14:35:19 +08:00
parent 198584daf8
commit 410c50a3e5
809 changed files with 157793 additions and 139 deletions
@@ -0,0 +1,58 @@
import { afterEach, beforeEach, describe, expect, it } from "vitest";
import {
getParser,
getWarmBashParser,
resetWarmBashParser,
warmBashParser,
} from "#src/access-intent/bash/parser";
describe("getParser", () => {
it("parses a simple bash command and returns a non-null root node", async () => {
const parser = await getParser();
const tree = parser.parse("echo hi");
expect(tree).not.toBeNull();
expect(tree?.rootNode).toBeDefined();
expect(tree?.rootNode.type).toBe("program");
tree?.delete();
});
it("returns the same memoized parser instance on repeated calls", async () => {
const first = await getParser();
const second = await getParser();
expect(first).toBe(second);
});
});
describe("warm parser", () => {
beforeEach(() => {
resetWarmBashParser();
});
afterEach(() => {
resetWarmBashParser();
});
it("returns null before the parser is warmed", () => {
expect(getWarmBashParser()).toBeNull();
});
it("exposes the parser synchronously after warm-up", async () => {
await warmBashParser();
const parser = getWarmBashParser();
expect(parser).not.toBeNull();
const tree = parser?.parse("echo hi");
expect(tree?.rootNode.type).toBe("program");
tree?.delete();
});
it("hands out the same memoized parser as getParser", async () => {
await warmBashParser();
expect(getWarmBashParser()).toBe(await getParser());
});
it("resetWarmBashParser clears the cached parser", async () => {
await warmBashParser();
expect(getWarmBashParser()).not.toBeNull();
resetWarmBashParser();
expect(getWarmBashParser()).toBeNull();
});
});