mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-20 22:40:58 +00:00
* Fix launcher startup regressions * Fix CI follow-up regressions * Fix review follow-ups * Fix workflow audit shell inputs * Handle require resolve gaxios misses
59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
import { spawnSync } from "node:child_process";
|
|
import fs from "node:fs/promises";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { afterEach, describe, expect, it } from "vitest";
|
|
|
|
async function makeLauncherFixture(fixtureRoots: string[]): Promise<string> {
|
|
const fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-launcher-"));
|
|
fixtureRoots.push(fixtureRoot);
|
|
await fs.copyFile(
|
|
path.resolve(process.cwd(), "openclaw.mjs"),
|
|
path.join(fixtureRoot, "openclaw.mjs"),
|
|
);
|
|
await fs.mkdir(path.join(fixtureRoot, "dist"), { recursive: true });
|
|
return fixtureRoot;
|
|
}
|
|
|
|
describe("openclaw launcher", () => {
|
|
const fixtureRoots: string[] = [];
|
|
|
|
afterEach(async () => {
|
|
await Promise.all(
|
|
fixtureRoots.splice(0).map(async (fixtureRoot) => {
|
|
await fs.rm(fixtureRoot, { recursive: true, force: true });
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("surfaces transitive entry import failures instead of masking them as missing dist", async () => {
|
|
const fixtureRoot = await makeLauncherFixture(fixtureRoots);
|
|
await fs.writeFile(
|
|
path.join(fixtureRoot, "dist", "entry.js"),
|
|
'import "missing-openclaw-launcher-dep";\nexport {};\n',
|
|
"utf8",
|
|
);
|
|
|
|
const result = spawnSync(process.execPath, [path.join(fixtureRoot, "openclaw.mjs"), "--help"], {
|
|
cwd: fixtureRoot,
|
|
encoding: "utf8",
|
|
});
|
|
|
|
expect(result.status).not.toBe(0);
|
|
expect(result.stderr).toContain("missing-openclaw-launcher-dep");
|
|
expect(result.stderr).not.toContain("missing dist/entry.(m)js");
|
|
});
|
|
|
|
it("keeps the friendly launcher error for a truly missing entry build output", async () => {
|
|
const fixtureRoot = await makeLauncherFixture(fixtureRoots);
|
|
|
|
const result = spawnSync(process.execPath, [path.join(fixtureRoot, "openclaw.mjs"), "--help"], {
|
|
cwd: fixtureRoot,
|
|
encoding: "utf8",
|
|
});
|
|
|
|
expect(result.status).not.toBe(0);
|
|
expect(result.stderr).toContain("missing dist/entry.(m)js");
|
|
});
|
|
});
|