

























@@ -158,6 +158,46 @@ function buildSnapshot(params: {
158158});
159159}
160160161+function buildDefaultSnapshot(): ConfigFileSnapshot {
162+return buildSnapshot({
163+valid: true,
164+raw: `${JSON.stringify(validConfig)}\n`,
165+config: validConfig,
166+});
167+}
168+169+function installConfigIoMockDefaults() {
170+const readSnapshot = vi.mocked(configIo.readConfigFileSnapshot);
171+const readSnapshotWithPluginMetadata = vi.mocked(
172+configIo.readConfigFileSnapshotWithPluginMetadata,
173+);
174+const recoverLastKnownGood = vi.mocked(configIo.recoverConfigFromLastKnownGood);
175+const recoverJsonRootSuffix = vi.mocked(configIo.recoverConfigFromJsonRootSuffix);
176+const writeConfig = vi.mocked(configIo.writeConfigFile);
177+178+readSnapshot.mockReset();
179+readSnapshotWithPluginMetadata.mockReset();
180+recoverLastKnownGood.mockReset();
181+recoverJsonRootSuffix.mockReset();
182+writeConfig.mockReset();
183+184+const defaultSnapshot = buildDefaultSnapshot();
185+readSnapshot.mockResolvedValue(defaultSnapshot);
186+readSnapshotWithPluginMetadata.mockImplementation(async () => {
187+const snapshot = (await readSnapshot()) as ConfigFileSnapshot | undefined;
188+if (!snapshot) {
189+throw new Error(
190+"configIo.readConfigFileSnapshot mock returned no snapshot; " +
191+"mock readConfigFileSnapshotWithPluginMetadata with { snapshot, pluginMetadataSnapshot }.",
192+);
193+}
194+return snapshot.valid ? { snapshot, pluginMetadataSnapshot } : { snapshot };
195+});
196+recoverLastKnownGood.mockResolvedValue(false);
197+recoverJsonRootSuffix.mockResolvedValue(false);
198+writeConfig.mockResolvedValue(undefined);
199+}
200+161201describe("gateway startup config recovery", () => {
162202beforeAll(async () => {
163203({ loadGatewayStartupConfigSnapshot } = await import("./server-startup-config.js"));
@@ -169,9 +209,7 @@ describe("gateway startup config recovery", () => {
169209beforeEach(() => {
170210vi.clearAllMocks();
171211configMocks.isNixMode.value = false;
172-vi.mocked(configIo.readConfigFileSnapshotWithPluginMetadata).mockImplementation(async () => ({
173-snapshot: await vi.mocked(configIo.readConfigFileSnapshot)(),
174-}));
212+installConfigIoMockDefaults();
175213});
176214177215it("runs startup plugin auto-enable against source config without persisting runtime defaults", async () => {
@@ -418,6 +456,7 @@ describe("gateway startup config recovery", () => {
418456).resolves.toEqual({
419457snapshot: recoveredSnapshot,
420458wroteConfig: true,
459+ pluginMetadataSnapshot,
421460});
422461423462expect(configIo.recoverConfigFromLastKnownGood).toHaveBeenCalledWith({
@@ -720,6 +759,7 @@ describe("gateway startup config recovery", () => {
720759).resolves.toEqual({
721760snapshot: repairedSnapshot,
722761wroteConfig: true,
762+ pluginMetadataSnapshot,
723763});
724764725765expect(configIo.recoverConfigFromJsonRootSuffix).toHaveBeenCalledWith(invalidSnapshot);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。