
























@@ -169,32 +169,39 @@ type AgentCommandCall = Record<string, unknown>;
169169type AgentIdentityGetHandlerArgs = Parameters<(typeof agentHandlers)["agent.identity.get"]>[0];
170170type AgentIdentityGetParams = AgentIdentityGetHandlerArgs["params"];
171171172+const realSetTimeout = globalThis.setTimeout.bind(globalThis);
173+let dateOnlyFakeClockActive = false;
174+175+function waitForRealTimer(ms: number) {
176+return new Promise<void>((resolve) => realSetTimeout(resolve, ms));
177+}
178+172179async function waitForAssertion(assertion: () => void, timeoutMs = 2_000, stepMs = 5) {
173-vi.useFakeTimers();
174-try {
175-let lastError: unknown;
176-for (let elapsed = 0; elapsed <= timeoutMs; elapsed += stepMs) {
177-try {
178- assertion();
179- return;
180- } catch (error) {
181- lastError = error;
182- }
183- await Promise.resolve();
180+let lastError: unknown;
181+for (let elapsed = 0; elapsed <= timeoutMs; elapsed += stepMs) {
182+try {
183+ assertion();
184+return;
185+} catch (error) {
186+lastError = error;
187+}
188+189+await Promise.resolve();
190+if (vi.isFakeTimers() && !dateOnlyFakeClockActive) {
184191await vi.advanceTimersByTimeAsync(stepMs);
192+} else {
193+await waitForRealTimer(stepMs);
185194}
186-throw lastError ?? new Error("assertion did not pass in time");
187-} finally {
188-vi.useRealTimers();
189195}
196+throw lastError ?? new Error("assertion did not pass in time");
190197}
191198192199async function flushScheduledDispatchStep() {
193200await Promise.resolve();
194-if (vi.isFakeTimers()) {
201+if (vi.isFakeTimers() && !dateOnlyFakeClockActive) {
195202await vi.runOnlyPendingTimersAsync();
196203} else {
197-await new Promise<void>((resolve) => setTimeout(resolve, 15));
204+await waitForRealTimer(15);
198205}
199206await Promise.resolve();
200207}
@@ -243,6 +250,7 @@ function buildExistingMainStoreEntry(overrides: Record<string, unknown> = {}) {
243250244251function setupNewYorkTimeConfig(isoDate: string) {
245252vi.useFakeTimers({ toFake: ["Date"] });
253+dateOnlyFakeClockActive = true;
246254vi.setSystemTime(new Date(isoDate)); // Wed Jan 28, 8:30 PM EST
247255mocks.agentCommand.mockClear();
248256mocks.loadConfigReturn = {
@@ -256,6 +264,7 @@ function setupNewYorkTimeConfig(isoDate: string) {
256264257265function resetTimeConfig() {
258266mocks.loadConfigReturn = {};
267+dateOnlyFakeClockActive = false;
259268vi.useRealTimers();
260269}
261270@@ -413,6 +422,8 @@ describe("gateway agent handler", () => {
413422mocks.resolveBareResetBootstrapFileAccess.mockReset().mockReturnValue(true);
414423mocks.listAgentIds.mockReset().mockReturnValue(["main"]);
415424mocks.resolveSendPolicy.mockReset().mockReturnValue("allow");
425+dateOnlyFakeClockActive = false;
426+vi.useRealTimers();
416427});
417428418429it("preserves ACP metadata from the current stored session entry", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。