fix(ci): stabilize windows tests
This commit is contained in:
@@ -4,46 +4,52 @@ import path from "node:path";
|
||||
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const itUnix = process.platform === "win32" ? it.skip : it;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.resetModules();
|
||||
});
|
||||
|
||||
describe("resolvePythonExecutablePath", () => {
|
||||
it("resolves a working python path and caches the result", async () => {
|
||||
const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-python-"));
|
||||
const originalPath = process.env.PATH;
|
||||
try {
|
||||
const realPython = path.join(tmp, "python-real");
|
||||
await fs.writeFile(realPython, "#!/bin/sh\nexit 0\n", "utf-8");
|
||||
await fs.chmod(realPython, 0o755);
|
||||
itUnix(
|
||||
"resolves a working python path and caches the result",
|
||||
async () => {
|
||||
const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-python-"));
|
||||
const originalPath = process.env.PATH;
|
||||
try {
|
||||
const realPython = path.join(tmp, "python-real");
|
||||
await fs.writeFile(realPython, "#!/bin/sh\nexit 0\n", "utf-8");
|
||||
await fs.chmod(realPython, 0o755);
|
||||
|
||||
const shimDir = path.join(tmp, "shims");
|
||||
await fs.mkdir(shimDir, { recursive: true });
|
||||
const shim = path.join(shimDir, "python3");
|
||||
await fs.writeFile(
|
||||
shim,
|
||||
`#!/bin/sh\nif [ "$1" = "-c" ]; then\n echo "${realPython}"\n exit 0\nfi\nexit 1\n`,
|
||||
"utf-8",
|
||||
);
|
||||
await fs.chmod(shim, 0o755);
|
||||
const shimDir = path.join(tmp, "shims");
|
||||
await fs.mkdir(shimDir, { recursive: true });
|
||||
const shim = path.join(shimDir, "python3");
|
||||
await fs.writeFile(
|
||||
shim,
|
||||
`#!/bin/sh\nif [ "$1" = "-c" ]; then\n echo "${realPython}"\n exit 0\nfi\nexit 1\n`,
|
||||
"utf-8",
|
||||
);
|
||||
await fs.chmod(shim, 0o755);
|
||||
|
||||
process.env.PATH = `${shimDir}${path.delimiter}/usr/bin`;
|
||||
process.env.PATH = `${shimDir}${path.delimiter}/usr/bin`;
|
||||
|
||||
const { resolvePythonExecutablePath } = await import(
|
||||
"./gmail-setup-utils.js"
|
||||
);
|
||||
const { resolvePythonExecutablePath } = await import(
|
||||
"./gmail-setup-utils.js"
|
||||
);
|
||||
|
||||
const resolved = await resolvePythonExecutablePath();
|
||||
expect(resolved).toBe(realPython);
|
||||
const resolved = await resolvePythonExecutablePath();
|
||||
expect(resolved).toBe(realPython);
|
||||
|
||||
process.env.PATH = "/bin";
|
||||
const cached = await resolvePythonExecutablePath();
|
||||
expect(cached).toBe(realPython);
|
||||
} finally {
|
||||
process.env.PATH = originalPath;
|
||||
await fs.rm(tmp, { recursive: true, force: true });
|
||||
}
|
||||
}, 60_000);
|
||||
process.env.PATH = "/bin";
|
||||
const cached = await resolvePythonExecutablePath();
|
||||
expect(cached).toBe(realPython);
|
||||
} finally {
|
||||
process.env.PATH = originalPath;
|
||||
await fs.rm(tmp, { recursive: true, force: true });
|
||||
}
|
||||
},
|
||||
60_000,
|
||||
);
|
||||
});
|
||||
|
||||
describe("ensureTailscaleEndpoint", () => {
|
||||
|
||||
Reference in New Issue
Block a user