import fs from "node:fs/promises" ;
import path from "node:path" ;
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" ;
import { resolvePreferredOpenClawTmpDir } from "../infra/tmp-openclaw-dir.js" ;
import { getImageMetadata } from "./image-ops.js" ;
describe("image-ops temp dir" , () => {
let createdTempDir = "" ;
beforeEach(() => {
process.env.OPENCLAW_IMAGE_BACKEND = "sips" ;
const originalMkdtemp = fs.mkdtemp.bind(fs);
vi.spyOn(fs, "mkdtemp" ).mockImplementation(async (prefix) => {
createdTempDir = await originalMkdtemp(prefix);
return createdTempDir;
});
});
afterEach(() => {
delete process.env.OPENCLAW_IMAGE_BACKEND;
vi.restoreAllMocks();
});
it("creates sips temp dirs under the secured OpenClaw tmp root" , async () => {
const secureRoot = resolvePreferredOpenClawTmpDir();
await getImageMetadata(Buffer.from("image" ));
expect(fs.mkdtemp).toHaveBeenCalledTimes(1 );
expect(fs.mkdtemp).toHaveBeenCalledWith(path.join(secureRoot, "openclaw-img-" ));
expect(createdTempDir.startsWith(path.join(secureRoot, "openclaw-img-" ))).toBe(true );
await expect(fs.access(createdTempDir)).rejects.toMatchObject({ code: "ENOENT" });
});
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland