import { describe, expect, it } from
"vitest" ;
import {
buildReadPermissions,
normalizeRepo,
parsePermissionKeys,
parseRepoArg,
} from
"../../scripts/gh-read.js" ;
describe(
"gh-read helpers" , () => {
it(
"finds repo from gh args" , () => {
expect(parseRepoArg([
"pr" ,
"view" ,
"42" ,
"-R" ,
"openclaw/openclaw" ])).toBe(
"openclaw/openclaw" );
expect(parseRepoArg([
"run" ,
"list" ,
"--repo=openclaw/docs" ])).toBe(
"openclaw/docs" );
expect(parseRepoArg(["pr" , "view" , "42" ])).toBeNull();
});
it("normalizes repo strings from common git formats" , () => {
expect(normalizeRepo("openclaw/openclaw" )).toBe("openclaw/openclaw" );
expect(normalizeRepo("github.com/openclaw/openclaw" )).toBe("openclaw/openclaw" );
expect(normalizeRepo("https://github.com/openclaw/openclaw.git ")).toBe("openclaw/openclaw");
expect(normalizeRepo("git@github.com:openclaw/openclaw.git" )).toBe("openclaw/openclaw" );
expect(normalizeRepo("invalid" )).toBeNull();
});
it("builds a read-only permission subset from granted permissions" , () => {
expect(
buildReadPermissions(
{
actions: "write" ,
issues: "read" ,
administration: "write" ,
metadata: "read" ,
statuses: null ,
},
["actions" , "issues" , "metadata" , "statuses" , "administration" ],
),
).toEqual({
administration: "read" ,
actions: "read" ,
issues: "read" ,
metadata: "read" ,
});
});
it("parses permission key overrides" , () => {
expect(parsePermissionKeys(undefined)).toContain("pull_requests" );
expect(parsePermissionKeys("actions, contents ,issues" )).toEqual([
"actions" ,
"contents" ,
"issues" ,
]);
});
});
Messung V0.5 in Prozent C=99 H=98 G=98
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland