mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 19:40:41 +00:00
Merged via squash.
Prepared head SHA: b8bf2b6be6
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
80 lines
2.8 KiB
TypeScript
80 lines
2.8 KiB
TypeScript
import fs from "node:fs";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import { loadPrivateQaCliModule } from "./private-qa-cli.js";
|
|
|
|
describe("private-qa-cli", () => {
|
|
const tempDirs: string[] = [];
|
|
const originalPrivateQaCli = process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI;
|
|
|
|
afterEach(() => {
|
|
for (const dir of tempDirs.splice(0)) {
|
|
fs.rmSync(dir, { recursive: true, force: true });
|
|
}
|
|
if (originalPrivateQaCli === undefined) {
|
|
delete process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI;
|
|
} else {
|
|
process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI = originalPrivateQaCli;
|
|
}
|
|
});
|
|
|
|
it("loads the private QA CLI from a source checkout path", async () => {
|
|
process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI = "1";
|
|
const repoRoot = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-private-qa-source-"));
|
|
tempDirs.push(repoRoot);
|
|
const expectedPaths = new Set([
|
|
path.join(repoRoot, ".git"),
|
|
path.join(repoRoot, "src"),
|
|
path.join(repoRoot, "dist", "plugin-sdk", "qa-lab.js"),
|
|
]);
|
|
let importedSpecifier: string | undefined;
|
|
const importModule = vi.fn(async (specifier: string) => {
|
|
importedSpecifier = specifier;
|
|
return {
|
|
isQaLabCliAvailable: expect.any(Function),
|
|
registerQaLabCli: expect.any(Function),
|
|
};
|
|
});
|
|
|
|
const module = await loadPrivateQaCliModule({
|
|
importModule,
|
|
resolvePackageRootSync: () => repoRoot,
|
|
existsSync: (filePath) => typeof filePath === "string" && expectedPaths.has(filePath),
|
|
});
|
|
|
|
expect(importModule).toHaveBeenCalledTimes(1);
|
|
expect(importedSpecifier).toContain("/dist/plugin-sdk/qa-lab.js");
|
|
expect(module).toMatchObject({
|
|
isQaLabCliAvailable: expect.any(Function),
|
|
registerQaLabCli: expect.any(Function),
|
|
});
|
|
});
|
|
|
|
it("rejects non-source package roots even when private QA is enabled", async () => {
|
|
process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI = "1";
|
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-private-qa-"));
|
|
tempDirs.push(root);
|
|
fs.writeFileSync(path.join(root, "package.json"), JSON.stringify({ name: "openclaw" }), "utf8");
|
|
const importModule = vi.fn(async () => ({}));
|
|
|
|
expect(() =>
|
|
loadPrivateQaCliModule({
|
|
resolvePackageRootSync: () => root,
|
|
importModule,
|
|
}),
|
|
).toThrow("Private QA CLI is only available from an OpenClaw source checkout.");
|
|
expect(importModule).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("rejects when the private QA env flag is disabled", async () => {
|
|
delete process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI;
|
|
const importModule = vi.fn(async () => ({}));
|
|
|
|
expect(() => loadPrivateQaCliModule({ importModule })).toThrow(
|
|
"Private QA CLI is only available from an OpenClaw source checkout.",
|
|
);
|
|
expect(importModule).not.toHaveBeenCalled();
|
|
});
|
|
});
|