import { describe, expect, it } from "vitest" ;
import { appendWorkspaceMountArgs } from "./workspace-mounts.js" ;
describe("appendWorkspaceMountArgs" , () => {
it.each([
{ access: "rw" as const , expected: "/tmp/workspace:/workspace:z" },
{ access: "ro" as const , expected: "/tmp/workspace:/workspace:ro,z" },
{ access: "none" as const , expected: "/tmp/workspace:/workspace:ro,z" },
])("sets main mount permissions for workspaceAccess=$access" , ({ access, expected }) => {
const args: string[] = [];
appendWorkspaceMountArgs({
args,
workspaceDir: "/tmp/workspace" ,
agentWorkspaceDir: "/tmp/agent-workspace" ,
workdir: "/workspace" ,
workspaceAccess: access,
});
expect(args).toContain(expected);
});
it("omits agent workspace mount when workspaceAccess is none" , () => {
const args: string[] = [];
appendWorkspaceMountArgs({
args,
workspaceDir: "/tmp/workspace" ,
agentWorkspaceDir: "/tmp/agent-workspace" ,
workdir: "/workspace" ,
workspaceAccess: "none" ,
});
const mounts = args.filter((arg) => arg.startsWith("/tmp/" ));
expect(mounts).toEqual(["/tmp/workspace:/workspace:ro,z" ]);
});
it("omits agent workspace mount when paths are identical" , () => {
const args: string[] = [];
appendWorkspaceMountArgs({
args,
workspaceDir: "/tmp/workspace" ,
agentWorkspaceDir: "/tmp/workspace" ,
workdir: "/workspace" ,
workspaceAccess: "rw" ,
});
const mounts = args.filter((arg) => arg.startsWith("/tmp/" ));
expect(mounts).toEqual(["/tmp/workspace:/workspace:z" ]);
});
it("marks split agent workspace mounts shared for SELinux" , () => {
const args: string[] = [];
appendWorkspaceMountArgs({
args,
workspaceDir: "/tmp/workspace" ,
agentWorkspaceDir: "/tmp/agent-workspace" ,
workdir: "/workspace" ,
workspaceAccess: "ro" ,
});
const mounts = args.filter((arg) => arg.startsWith("/tmp/" ));
expect(mounts).toEqual(["/tmp/workspace:/workspace:ro,z" , "/tmp/agent-workspace:/agent:ro,z" ]);
});
});
Messung V0.5 in Prozent C=94 H=89 G=91
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland