47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { mkdtemp, mkdir, writeFile } from "node:fs/promises";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
import { describe, it } from "node:test";
|
|
|
|
import { resolveWebAutomationRuntime } from "../src/web-automation-runtime.js";
|
|
|
|
async function createRuntime() {
|
|
const dir = await mkdtemp(join(tmpdir(), "amazon-shopping-runtime-"));
|
|
await writeFile(join(dir, "check-install.js"), "console.log('ok');\n");
|
|
await writeFile(join(dir, "package.json"), "{\"type\":\"module\"}\n");
|
|
await mkdir(join(dir, "node_modules", ".bin"), { recursive: true });
|
|
await writeFile(join(dir, "node_modules", ".bin", "tsx"), "#!/usr/bin/env node\n");
|
|
return dir;
|
|
}
|
|
|
|
describe("resolveWebAutomationRuntime", () => {
|
|
it("uses AMAZON_SHOPPING_WEB_AUTOMATION_DIR first", async () => {
|
|
const runtimeDir = await createRuntime();
|
|
const resolved = await resolveWebAutomationRuntime({
|
|
env: { AMAZON_SHOPPING_WEB_AUTOMATION_DIR: runtimeDir },
|
|
homeDir: "/missing-home",
|
|
skillDir: "/missing-skill"
|
|
});
|
|
|
|
assert.equal(resolved.scriptsDir, runtimeDir);
|
|
assert.deepEqual(resolved.checkInstall, {
|
|
cwd: runtimeDir,
|
|
command: "node",
|
|
args: ["check-install.js"]
|
|
});
|
|
});
|
|
|
|
it("returns a clear error when required files are missing", async () => {
|
|
const dir = await mkdtemp(join(tmpdir(), "amazon-shopping-runtime-missing-"));
|
|
await assert.rejects(
|
|
() => resolveWebAutomationRuntime({
|
|
env: { AMAZON_SHOPPING_WEB_AUTOMATION_DIR: dir },
|
|
homeDir: "/missing-home",
|
|
skillDir: "/missing-skill"
|
|
}),
|
|
/check-install.js/
|
|
);
|
|
});
|
|
});
|