fix: avoid embedded opencode port conflicts
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
import { describe, expect, it } from "bun:test";
|
||||
import { type OpencodeClient } from "@opencode-ai/sdk/v2";
|
||||
import { createServer } from "node:net";
|
||||
|
||||
import { config } from "../../src/config.js";
|
||||
import { OpencodeRuntimeAdapter } from "../../src/runtime/opencode.js";
|
||||
import {
|
||||
OpencodeRuntimeAdapter,
|
||||
resolveEmbeddedOpencodePort,
|
||||
} from "../../src/runtime/opencode.js";
|
||||
|
||||
const createRuntimeAdapter = (
|
||||
messages: unknown[],
|
||||
@@ -87,6 +91,32 @@ describe("OpencodeRuntimeAdapter.ensureClient", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("resolveEmbeddedOpencodePort", () => {
|
||||
it("falls back to a dynamic port when the configured port is occupied", async () => {
|
||||
const server = createServer();
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
server.once("error", reject);
|
||||
server.listen(0, "127.0.0.1", resolve);
|
||||
});
|
||||
|
||||
const address = server.address();
|
||||
if (!address || typeof address === "string") {
|
||||
server.close();
|
||||
throw new Error("expected a TCP server address");
|
||||
}
|
||||
|
||||
try {
|
||||
await expect(
|
||||
resolveEmbeddedOpencodePort("127.0.0.1", address.port),
|
||||
).resolves.toBe(0);
|
||||
} finally {
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
server.close((error) => (error ? reject(error) : resolve()));
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe("OpencodeRuntimeAdapter.warmup", () => {
|
||||
it("initializes the project session and model tools before reporting ready", async () => {
|
||||
const calls: string[] = [];
|
||||
|
||||
Reference in New Issue
Block a user