mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-31 02:56:52 +00:00
refactor(core): dedupe command, hook, and cron fixtures
This commit is contained in:
@@ -5,6 +5,22 @@ import { describe, expect, it } from "vitest";
|
||||
import { MANIFEST_KEY } from "../compat/legacy-names.js";
|
||||
import { loadHookEntriesFromDir } from "./workspace.js";
|
||||
|
||||
function writeHookPackageManifest(pkgDir: string, hooks: string[]): void {
|
||||
fs.writeFileSync(
|
||||
path.join(pkgDir, "package.json"),
|
||||
JSON.stringify(
|
||||
{
|
||||
name: "pkg",
|
||||
[MANIFEST_KEY]: {
|
||||
hooks,
|
||||
},
|
||||
},
|
||||
null,
|
||||
2,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
describe("hooks workspace", () => {
|
||||
it("ignores package.json hook paths that traverse outside package directory", () => {
|
||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-hooks-workspace-"));
|
||||
@@ -19,19 +35,7 @@ describe("hooks workspace", () => {
|
||||
fs.writeFileSync(path.join(outsideHookDir, "HOOK.md"), "---\nname: outside\n---\n");
|
||||
fs.writeFileSync(path.join(outsideHookDir, "handler.js"), "export default async () => {};\n");
|
||||
|
||||
fs.writeFileSync(
|
||||
path.join(pkgDir, "package.json"),
|
||||
JSON.stringify(
|
||||
{
|
||||
name: "pkg",
|
||||
[MANIFEST_KEY]: {
|
||||
hooks: ["../outside"],
|
||||
},
|
||||
},
|
||||
null,
|
||||
2,
|
||||
),
|
||||
);
|
||||
writeHookPackageManifest(pkgDir, ["../outside"]);
|
||||
|
||||
const entries = loadHookEntriesFromDir({ dir: hooksRoot, source: "openclaw-workspace" });
|
||||
expect(entries.some((e) => e.hook.name === "outside")).toBe(false);
|
||||
@@ -49,19 +53,7 @@ describe("hooks workspace", () => {
|
||||
fs.writeFileSync(path.join(nested, "HOOK.md"), "---\nname: nested\n---\n");
|
||||
fs.writeFileSync(path.join(nested, "handler.js"), "export default async () => {};\n");
|
||||
|
||||
fs.writeFileSync(
|
||||
path.join(pkgDir, "package.json"),
|
||||
JSON.stringify(
|
||||
{
|
||||
name: "pkg",
|
||||
[MANIFEST_KEY]: {
|
||||
hooks: ["./nested"],
|
||||
},
|
||||
},
|
||||
null,
|
||||
2,
|
||||
),
|
||||
);
|
||||
writeHookPackageManifest(pkgDir, ["./nested"]);
|
||||
|
||||
const entries = loadHookEntriesFromDir({ dir: hooksRoot, source: "openclaw-workspace" });
|
||||
expect(entries.some((e) => e.hook.name === "nested")).toBe(true);
|
||||
@@ -85,19 +77,7 @@ describe("hooks workspace", () => {
|
||||
return;
|
||||
}
|
||||
|
||||
fs.writeFileSync(
|
||||
path.join(pkgDir, "package.json"),
|
||||
JSON.stringify(
|
||||
{
|
||||
name: "pkg",
|
||||
[MANIFEST_KEY]: {
|
||||
hooks: ["./linked"],
|
||||
},
|
||||
},
|
||||
null,
|
||||
2,
|
||||
),
|
||||
);
|
||||
writeHookPackageManifest(pkgDir, ["./linked"]);
|
||||
|
||||
const entries = loadHookEntriesFromDir({ dir: hooksRoot, source: "openclaw-workspace" });
|
||||
expect(entries.some((e) => e.hook.name === "outside")).toBe(false);
|
||||
|
||||
Reference in New Issue
Block a user