openclaw/src/auto-reply/tool-meta.test.ts
Peter Steinberger c379191f80 chore: migrate to oxlint and oxfmt
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com>
2026-01-14 15:02:19 +00:00

45 lines
1.5 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
import { formatToolAggregate, formatToolPrefix, shortenMeta, shortenPath } from "./tool-meta.js";
describe("tool meta formatting", () => {
beforeEach(() => {
vi.unstubAllEnvs();
});
it("shortens paths under HOME", () => {
vi.stubEnv("HOME", "/Users/test");
expect(shortenPath("/Users/test")).toBe("~");
expect(shortenPath("/Users/test/a/b.txt")).toBe("~/a/b.txt");
expect(shortenPath("/opt/x")).toBe("/opt/x");
});
it("shortens meta strings with optional colon suffix", () => {
vi.stubEnv("HOME", "/Users/test");
expect(shortenMeta("/Users/test/a.txt")).toBe("~/a.txt");
expect(shortenMeta("/Users/test/a.txt:12")).toBe("~/a.txt:12");
expect(shortenMeta("cd /Users/test/dir && ls")).toBe("cd ~/dir && ls");
expect(shortenMeta("")).toBe("");
});
it("formats aggregates with grouping and brace-collapse", () => {
vi.stubEnv("HOME", "/Users/test");
const out = formatToolAggregate(" fs ", [
"/Users/test/dir/a.txt",
"/Users/test/dir/b.txt",
"note",
"a→b",
]);
expect(out).toMatch(/^🧩 fs/);
expect(out).toContain("~/dir/{a.txt, b.txt}");
expect(out).toContain("note");
expect(out).toContain("a→b");
});
it("formats prefixes with default labels", () => {
vi.stubEnv("HOME", "/Users/test");
expect(formatToolPrefix(undefined, undefined)).toBe("🧩 tool");
expect(formatToolPrefix("x", "/Users/test/a.txt")).toBe("🧩 x: ~/a.txt");
});
});