mirror of
https://github.com/farcasclaudiu/openclaw.git
synced 2026-06-28 21:01:43 +03:00
test: stabilize sessions_spawn e2e mocks
This commit is contained in:
+52
-6
@@ -1,13 +1,59 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { createOpenClawTools } from "./openclaw-tools.js";
|
import { createOpenClawTools } from "./openclaw-tools.js";
|
||||||
import "./test-helpers/fast-core-tools.js";
|
import "./test-helpers/fast-core-tools.js";
|
||||||
import {
|
|
||||||
callGatewayMock,
|
|
||||||
resetConfigOverride,
|
|
||||||
setConfigOverride,
|
|
||||||
} from "./openclaw-tools.subagents.sessions-spawn.mocks.js";
|
|
||||||
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
||||||
|
|
||||||
|
type SessionsSpawnTestConfig = ReturnType<(typeof import("../config/config.js"))["loadConfig"]>;
|
||||||
|
|
||||||
|
const hoisted = vi.hoisted(() => {
|
||||||
|
const callGatewayMock = vi.fn();
|
||||||
|
const defaultConfigOverride = {
|
||||||
|
session: {
|
||||||
|
mainKey: "main",
|
||||||
|
scope: "per-sender",
|
||||||
|
},
|
||||||
|
} as SessionsSpawnTestConfig;
|
||||||
|
const state = { configOverride: defaultConfigOverride };
|
||||||
|
return { callGatewayMock, defaultConfigOverride, state };
|
||||||
|
});
|
||||||
|
|
||||||
|
const callGatewayMock = hoisted.callGatewayMock;
|
||||||
|
|
||||||
|
function resetConfigOverride() {
|
||||||
|
hoisted.state.configOverride = hoisted.defaultConfigOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setConfigOverride(next: SessionsSpawnTestConfig) {
|
||||||
|
hoisted.state.configOverride = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
vi.mock("../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
// Some tools import callGateway via "../../gateway/call.js" (from nested folders). Mock that too.
|
||||||
|
vi.mock("../../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
|
||||||
|
vi.mock("../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Same module, different specifier (used by tools under src/agents/tools/*).
|
||||||
|
vi.mock("../../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
describe("openclaw-tools: subagents", () => {
|
describe("openclaw-tools: subagents", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
resetConfigOverride();
|
resetConfigOverride();
|
||||||
|
|||||||
+49
-6
@@ -1,13 +1,56 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { sleep } from "../utils.js";
|
import { sleep } from "../utils.js";
|
||||||
import "./test-helpers/fast-core-tools.js";
|
|
||||||
import { createOpenClawTools } from "./openclaw-tools.js";
|
import { createOpenClawTools } from "./openclaw-tools.js";
|
||||||
import {
|
import "./test-helpers/fast-core-tools.js";
|
||||||
callGatewayMock,
|
|
||||||
resetConfigOverride,
|
|
||||||
} from "./openclaw-tools.subagents.sessions-spawn.mocks.js";
|
|
||||||
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
||||||
|
|
||||||
|
type SessionsSpawnTestConfig = ReturnType<(typeof import("../config/config.js"))["loadConfig"]>;
|
||||||
|
|
||||||
|
const hoisted = vi.hoisted(() => {
|
||||||
|
const callGatewayMock = vi.fn();
|
||||||
|
const defaultConfigOverride = {
|
||||||
|
session: {
|
||||||
|
mainKey: "main",
|
||||||
|
scope: "per-sender",
|
||||||
|
},
|
||||||
|
} as SessionsSpawnTestConfig;
|
||||||
|
const state = { configOverride: defaultConfigOverride };
|
||||||
|
return { callGatewayMock, defaultConfigOverride, state };
|
||||||
|
});
|
||||||
|
|
||||||
|
const callGatewayMock = hoisted.callGatewayMock;
|
||||||
|
|
||||||
|
function resetConfigOverride() {
|
||||||
|
hoisted.state.configOverride = hoisted.defaultConfigOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
vi.mock("../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
// Some tools import callGateway via "../../gateway/call.js" (from nested folders). Mock that too.
|
||||||
|
vi.mock("../../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
|
||||||
|
vi.mock("../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Same module, different specifier (used by tools under src/agents/tools/*).
|
||||||
|
vi.mock("../../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
describe("openclaw-tools: subagents", () => {
|
describe("openclaw-tools: subagents", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
resetConfigOverride();
|
resetConfigOverride();
|
||||||
|
|||||||
+53
-7
@@ -1,13 +1,59 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { createOpenClawTools } from "./openclaw-tools.js";
|
import { createOpenClawTools } from "./openclaw-tools.js";
|
||||||
import "./test-helpers/fast-core-tools.js";
|
import "./test-helpers/fast-core-tools.js";
|
||||||
import {
|
|
||||||
callGatewayMock,
|
|
||||||
resetConfigOverride,
|
|
||||||
setConfigOverride,
|
|
||||||
} from "./openclaw-tools.subagents.sessions-spawn.mocks.js";
|
|
||||||
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
||||||
|
|
||||||
|
type SessionsSpawnTestConfig = ReturnType<(typeof import("../config/config.js"))["loadConfig"]>;
|
||||||
|
|
||||||
|
const hoisted = vi.hoisted(() => {
|
||||||
|
const callGatewayMock = vi.fn();
|
||||||
|
const defaultConfigOverride = {
|
||||||
|
session: {
|
||||||
|
mainKey: "main",
|
||||||
|
scope: "per-sender",
|
||||||
|
},
|
||||||
|
} as SessionsSpawnTestConfig;
|
||||||
|
const state = { configOverride: defaultConfigOverride };
|
||||||
|
return { callGatewayMock, defaultConfigOverride, state };
|
||||||
|
});
|
||||||
|
|
||||||
|
const callGatewayMock = hoisted.callGatewayMock;
|
||||||
|
|
||||||
|
function resetConfigOverride() {
|
||||||
|
hoisted.state.configOverride = hoisted.defaultConfigOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setConfigOverride(next: SessionsSpawnTestConfig) {
|
||||||
|
hoisted.state.configOverride = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
vi.mock("../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
// Some tools import callGateway via "../../gateway/call.js" (from nested folders). Mock that too.
|
||||||
|
vi.mock("../../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
|
||||||
|
vi.mock("../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Same module, different specifier (used by tools under src/agents/tools/*).
|
||||||
|
vi.mock("../../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
describe("openclaw-tools: subagents", () => {
|
describe("openclaw-tools: subagents", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
resetConfigOverride();
|
resetConfigOverride();
|
||||||
@@ -45,7 +91,7 @@ describe("openclaw-tools: subagents", () => {
|
|||||||
|
|
||||||
const tool = createOpenClawTools({
|
const tool = createOpenClawTools({
|
||||||
agentSessionKey: "discord:group:req",
|
agentSessionKey: "discord:group:req",
|
||||||
agentSurface: "discord",
|
agentChannel: "discord",
|
||||||
}).find((candidate) => candidate.name === "sessions_spawn");
|
}).find((candidate) => candidate.name === "sessions_spawn");
|
||||||
if (!tool) {
|
if (!tool) {
|
||||||
throw new Error("missing sessions_spawn tool");
|
throw new Error("missing sessions_spawn tool");
|
||||||
|
|||||||
+51
-5
@@ -2,13 +2,59 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
|||||||
import { emitAgentEvent } from "../infra/agent-events.js";
|
import { emitAgentEvent } from "../infra/agent-events.js";
|
||||||
import { createOpenClawTools } from "./openclaw-tools.js";
|
import { createOpenClawTools } from "./openclaw-tools.js";
|
||||||
import "./test-helpers/fast-core-tools.js";
|
import "./test-helpers/fast-core-tools.js";
|
||||||
import {
|
|
||||||
callGatewayMock,
|
|
||||||
resetConfigOverride,
|
|
||||||
setConfigOverride,
|
|
||||||
} from "./openclaw-tools.subagents.sessions-spawn.mocks.js";
|
|
||||||
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
||||||
|
|
||||||
|
type SessionsSpawnTestConfig = ReturnType<(typeof import("../config/config.js"))["loadConfig"]>;
|
||||||
|
|
||||||
|
const hoisted = vi.hoisted(() => {
|
||||||
|
const callGatewayMock = vi.fn();
|
||||||
|
const defaultConfigOverride = {
|
||||||
|
session: {
|
||||||
|
mainKey: "main",
|
||||||
|
scope: "per-sender",
|
||||||
|
},
|
||||||
|
} as SessionsSpawnTestConfig;
|
||||||
|
const state = { configOverride: defaultConfigOverride };
|
||||||
|
return { callGatewayMock, defaultConfigOverride, state };
|
||||||
|
});
|
||||||
|
|
||||||
|
const callGatewayMock = hoisted.callGatewayMock;
|
||||||
|
|
||||||
|
function resetConfigOverride() {
|
||||||
|
hoisted.state.configOverride = hoisted.defaultConfigOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setConfigOverride(next: SessionsSpawnTestConfig) {
|
||||||
|
hoisted.state.configOverride = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
vi.mock("../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
// Some tools import callGateway via "../../gateway/call.js" (from nested folders). Mock that too.
|
||||||
|
vi.mock("../../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
|
||||||
|
vi.mock("../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Same module, different specifier (used by tools under src/agents/tools/*).
|
||||||
|
vi.mock("../../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
describe("openclaw-tools: subagents", () => {
|
describe("openclaw-tools: subagents", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
resetConfigOverride();
|
resetConfigOverride();
|
||||||
|
|||||||
+52
-6
@@ -1,13 +1,59 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { createOpenClawTools } from "./openclaw-tools.js";
|
import { createOpenClawTools } from "./openclaw-tools.js";
|
||||||
import "./test-helpers/fast-core-tools.js";
|
import "./test-helpers/fast-core-tools.js";
|
||||||
import {
|
|
||||||
callGatewayMock,
|
|
||||||
resetConfigOverride,
|
|
||||||
setConfigOverride,
|
|
||||||
} from "./openclaw-tools.subagents.sessions-spawn.mocks.js";
|
|
||||||
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
||||||
|
|
||||||
|
type SessionsSpawnTestConfig = ReturnType<(typeof import("../config/config.js"))["loadConfig"]>;
|
||||||
|
|
||||||
|
const hoisted = vi.hoisted(() => {
|
||||||
|
const callGatewayMock = vi.fn();
|
||||||
|
const defaultConfigOverride = {
|
||||||
|
session: {
|
||||||
|
mainKey: "main",
|
||||||
|
scope: "per-sender",
|
||||||
|
},
|
||||||
|
} as SessionsSpawnTestConfig;
|
||||||
|
const state = { configOverride: defaultConfigOverride };
|
||||||
|
return { callGatewayMock, defaultConfigOverride, state };
|
||||||
|
});
|
||||||
|
|
||||||
|
const callGatewayMock = hoisted.callGatewayMock;
|
||||||
|
|
||||||
|
function resetConfigOverride() {
|
||||||
|
hoisted.state.configOverride = hoisted.defaultConfigOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setConfigOverride(next: SessionsSpawnTestConfig) {
|
||||||
|
hoisted.state.configOverride = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
vi.mock("../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
// Some tools import callGateway via "../../gateway/call.js" (from nested folders). Mock that too.
|
||||||
|
vi.mock("../../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
|
||||||
|
vi.mock("../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Same module, different specifier (used by tools under src/agents/tools/*).
|
||||||
|
vi.mock("../../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
describe("openclaw-tools: subagents", () => {
|
describe("openclaw-tools: subagents", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
resetConfigOverride();
|
resetConfigOverride();
|
||||||
|
|||||||
+48
-5
@@ -1,14 +1,57 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { emitAgentEvent } from "../infra/agent-events.js";
|
import { emitAgentEvent } from "../infra/agent-events.js";
|
||||||
import { sleep } from "../utils.ts";
|
import { sleep } from "../utils.ts";
|
||||||
import { createOpenClawTools } from "./openclaw-tools.js";
|
import { createOpenClawTools } from "./openclaw-tools.js";
|
||||||
import "./test-helpers/fast-core-tools.js";
|
import "./test-helpers/fast-core-tools.js";
|
||||||
import {
|
|
||||||
callGatewayMock,
|
|
||||||
resetConfigOverride,
|
|
||||||
} from "./openclaw-tools.subagents.sessions-spawn.mocks.js";
|
|
||||||
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
import { resetSubagentRegistryForTests } from "./subagent-registry.js";
|
||||||
|
|
||||||
|
type SessionsSpawnTestConfig = ReturnType<(typeof import("../config/config.js"))["loadConfig"]>;
|
||||||
|
|
||||||
|
const hoisted = vi.hoisted(() => {
|
||||||
|
const callGatewayMock = vi.fn();
|
||||||
|
const defaultConfigOverride = {
|
||||||
|
session: {
|
||||||
|
mainKey: "main",
|
||||||
|
scope: "per-sender",
|
||||||
|
},
|
||||||
|
} as SessionsSpawnTestConfig;
|
||||||
|
const state = { configOverride: defaultConfigOverride };
|
||||||
|
return { callGatewayMock, defaultConfigOverride, state };
|
||||||
|
});
|
||||||
|
|
||||||
|
const callGatewayMock = hoisted.callGatewayMock;
|
||||||
|
|
||||||
|
function resetConfigOverride() {
|
||||||
|
hoisted.state.configOverride = hoisted.defaultConfigOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
vi.mock("../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
// Some tools import callGateway via "../../gateway/call.js" (from nested folders). Mock that too.
|
||||||
|
vi.mock("../../gateway/call.js", () => ({
|
||||||
|
callGateway: (opts: unknown) => hoisted.callGatewayMock(opts),
|
||||||
|
}));
|
||||||
|
|
||||||
|
vi.mock("../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Same module, different specifier (used by tools under src/agents/tools/*).
|
||||||
|
vi.mock("../../config/config.js", async (importOriginal) => {
|
||||||
|
const actual = await importOriginal<typeof import("../config/config.js")>();
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
loadConfig: () => hoisted.state.configOverride,
|
||||||
|
resolveGatewayPort: () => 18789,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
describe("openclaw-tools: subagents", () => {
|
describe("openclaw-tools: subagents", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
resetConfigOverride();
|
resetConfigOverride();
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
import { vi } from "vitest";
|
|
||||||
import type { MockFn } from "../test-utils/vitest-mock-fn.js";
|
|
||||||
|
|
||||||
export const callGatewayMock: MockFn<(opts: unknown) => unknown> = vi.fn();
|
|
||||||
vi.mock("../gateway/call.js", () => ({
|
|
||||||
callGateway: (opts: unknown) => callGatewayMock(opts),
|
|
||||||
}));
|
|
||||||
|
|
||||||
export type SessionsSpawnTestConfig = ReturnType<
|
|
||||||
(typeof import("../config/config.js"))["loadConfig"]
|
|
||||||
>;
|
|
||||||
|
|
||||||
const defaultConfigOverride: SessionsSpawnTestConfig = {
|
|
||||||
session: {
|
|
||||||
mainKey: "main",
|
|
||||||
scope: "per-sender",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
let configOverride: SessionsSpawnTestConfig = defaultConfigOverride;
|
|
||||||
|
|
||||||
export function resetConfigOverride() {
|
|
||||||
configOverride = defaultConfigOverride;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setConfigOverride(next: SessionsSpawnTestConfig) {
|
|
||||||
configOverride = next;
|
|
||||||
}
|
|
||||||
|
|
||||||
vi.mock("../config/config.js", async (importOriginal) => {
|
|
||||||
const actual = await importOriginal<typeof import("../config/config.js")>();
|
|
||||||
return {
|
|
||||||
...actual,
|
|
||||||
loadConfig: () => configOverride,
|
|
||||||
resolveGatewayPort: () => 18789,
|
|
||||||
};
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user