mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 11:24:58 +00:00
test: micro-optimize heavy gateway/browser/telegram suites
This commit is contained in:
@@ -17,6 +17,7 @@ async function pathExists(filePath: string): Promise<boolean> {
|
||||
|
||||
let fixtureRoot = "";
|
||||
let fixtureCount = 0;
|
||||
let syncSourceTemplateDir = "";
|
||||
|
||||
async function createCaseDir(prefix: string): Promise<string> {
|
||||
const dir = path.join(fixtureRoot, `${prefix}-${fixtureCount++}`);
|
||||
@@ -26,6 +27,27 @@ async function createCaseDir(prefix: string): Promise<string> {
|
||||
|
||||
beforeAll(async () => {
|
||||
fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-skills-sync-suite-"));
|
||||
syncSourceTemplateDir = await createCaseDir("source-template");
|
||||
await writeSkill({
|
||||
dir: path.join(syncSourceTemplateDir, ".extra", "demo-skill"),
|
||||
name: "demo-skill",
|
||||
description: "Extra version",
|
||||
});
|
||||
await writeSkill({
|
||||
dir: path.join(syncSourceTemplateDir, ".bundled", "demo-skill"),
|
||||
name: "demo-skill",
|
||||
description: "Bundled version",
|
||||
});
|
||||
await writeSkill({
|
||||
dir: path.join(syncSourceTemplateDir, ".managed", "demo-skill"),
|
||||
name: "demo-skill",
|
||||
description: "Managed version",
|
||||
});
|
||||
await writeSkill({
|
||||
dir: path.join(syncSourceTemplateDir, "skills", "demo-skill"),
|
||||
name: "demo-skill",
|
||||
description: "Workspace version",
|
||||
});
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
@@ -39,34 +61,19 @@ describe("buildWorkspaceSkillsPrompt", () => {
|
||||
) =>
|
||||
withEnv({ HOME: workspaceDir, PATH: "" }, () => buildWorkspaceSkillsPrompt(workspaceDir, opts));
|
||||
|
||||
it("syncs merged skills into a target workspace", async () => {
|
||||
const cloneSourceTemplate = async () => {
|
||||
const sourceWorkspace = await createCaseDir("source");
|
||||
await fs.cp(syncSourceTemplateDir, sourceWorkspace, { recursive: true });
|
||||
return sourceWorkspace;
|
||||
};
|
||||
|
||||
it("syncs merged skills into a target workspace", async () => {
|
||||
const sourceWorkspace = await cloneSourceTemplate();
|
||||
const targetWorkspace = await createCaseDir("target");
|
||||
const extraDir = path.join(sourceWorkspace, ".extra");
|
||||
const bundledDir = path.join(sourceWorkspace, ".bundled");
|
||||
const managedDir = path.join(sourceWorkspace, ".managed");
|
||||
|
||||
await writeSkill({
|
||||
dir: path.join(extraDir, "demo-skill"),
|
||||
name: "demo-skill",
|
||||
description: "Extra version",
|
||||
});
|
||||
await writeSkill({
|
||||
dir: path.join(bundledDir, "demo-skill"),
|
||||
name: "demo-skill",
|
||||
description: "Bundled version",
|
||||
});
|
||||
await writeSkill({
|
||||
dir: path.join(managedDir, "demo-skill"),
|
||||
name: "demo-skill",
|
||||
description: "Managed version",
|
||||
});
|
||||
await writeSkill({
|
||||
dir: path.join(sourceWorkspace, "skills", "demo-skill"),
|
||||
name: "demo-skill",
|
||||
description: "Workspace version",
|
||||
});
|
||||
|
||||
await withEnv({ HOME: sourceWorkspace, PATH: "" }, () =>
|
||||
syncSkillsToWorkspace({
|
||||
sourceWorkspaceDir: sourceWorkspace,
|
||||
|
||||
@@ -7,9 +7,32 @@ import { writeSkill } from "./skills.e2e-test-helpers.js";
|
||||
import { buildWorkspaceSkillSnapshot, buildWorkspaceSkillsPrompt } from "./skills.js";
|
||||
|
||||
const fixtureSuite = createFixtureSuite("openclaw-skills-snapshot-suite-");
|
||||
let truncationWorkspaceTemplateDir = "";
|
||||
let nestedRepoTemplateDir = "";
|
||||
|
||||
beforeAll(async () => {
|
||||
await fixtureSuite.setup();
|
||||
truncationWorkspaceTemplateDir = await fixtureSuite.createCaseDir(
|
||||
"template-truncation-workspace",
|
||||
);
|
||||
for (let i = 0; i < 8; i += 1) {
|
||||
const name = `skill-${String(i).padStart(2, "0")}`;
|
||||
await writeSkill({
|
||||
dir: path.join(truncationWorkspaceTemplateDir, "skills", name),
|
||||
name,
|
||||
description: "x".repeat(800),
|
||||
});
|
||||
}
|
||||
|
||||
nestedRepoTemplateDir = await fixtureSuite.createCaseDir("template-skills-repo");
|
||||
for (let i = 0; i < 8; i += 1) {
|
||||
const name = `repo-skill-${String(i).padStart(2, "0")}`;
|
||||
await writeSkill({
|
||||
dir: path.join(nestedRepoTemplateDir, "skills", name),
|
||||
name,
|
||||
description: `Desc ${i}`,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
@@ -20,6 +43,12 @@ function withWorkspaceHome<T>(workspaceDir: string, cb: () => T): T {
|
||||
return withEnv({ HOME: workspaceDir, PATH: "" }, cb);
|
||||
}
|
||||
|
||||
async function cloneTemplateDir(templateDir: string, prefix: string): Promise<string> {
|
||||
const cloned = await fixtureSuite.createCaseDir(prefix);
|
||||
await fs.cp(templateDir, cloned, { recursive: true });
|
||||
return cloned;
|
||||
}
|
||||
|
||||
describe("buildWorkspaceSkillSnapshot", () => {
|
||||
it("returns an empty snapshot when skills dirs are missing", async () => {
|
||||
const workspaceDir = await fixtureSuite.createCaseDir("workspace");
|
||||
@@ -110,17 +139,7 @@ describe("buildWorkspaceSkillSnapshot", () => {
|
||||
});
|
||||
|
||||
it("truncates the skills prompt when it exceeds the configured char budget", async () => {
|
||||
const workspaceDir = await fixtureSuite.createCaseDir("workspace");
|
||||
|
||||
// Keep fixture size modest while still forcing truncation logic.
|
||||
for (let i = 0; i < 8; i += 1) {
|
||||
const name = `skill-${String(i).padStart(2, "0")}`;
|
||||
await writeSkill({
|
||||
dir: path.join(workspaceDir, "skills", name),
|
||||
name,
|
||||
description: "x".repeat(800),
|
||||
});
|
||||
}
|
||||
const workspaceDir = await cloneTemplateDir(truncationWorkspaceTemplateDir, "workspace");
|
||||
|
||||
const snapshot = withWorkspaceHome(workspaceDir, () =>
|
||||
buildWorkspaceSkillSnapshot(workspaceDir, {
|
||||
@@ -143,16 +162,7 @@ describe("buildWorkspaceSkillSnapshot", () => {
|
||||
|
||||
it("limits discovery for nested repo-style skills roots (dir/skills/*)", async () => {
|
||||
const workspaceDir = await fixtureSuite.createCaseDir("workspace");
|
||||
const repoDir = await fixtureSuite.createCaseDir("skills-repo");
|
||||
|
||||
for (let i = 0; i < 8; i += 1) {
|
||||
const name = `repo-skill-${String(i).padStart(2, "0")}`;
|
||||
await writeSkill({
|
||||
dir: path.join(repoDir, "skills", name),
|
||||
name,
|
||||
description: `Desc ${i}`,
|
||||
});
|
||||
}
|
||||
const repoDir = await cloneTemplateDir(nestedRepoTemplateDir, "skills-repo");
|
||||
|
||||
const snapshot = withWorkspaceHome(workspaceDir, () =>
|
||||
buildWorkspaceSkillSnapshot(workspaceDir, {
|
||||
|
||||
Reference in New Issue
Block a user