test: require agent async callbacks · openclaw/openclaw@11d7f54
steipete
·
2026-05-09
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -327,7 +327,7 @@ describe("session MCP runtime", () => {
|
327 | 327 | }); |
328 | 328 | |
329 | 329 | it("disposes catalog startup in-flight without leaving cached runtimes", async () => { |
330 | | -let notifyCatalogStarted!: () => void; |
| 330 | +let notifyCatalogStarted: (() => void) | undefined; |
331 | 331 | const catalogStarted = new Promise<void>((resolve) => { |
332 | 332 | notifyCatalogStarted = resolve; |
333 | 333 | }); |
@@ -339,6 +339,9 @@ describe("session MCP runtime", () => {
|
339 | 339 | workspaceDir: params.workspaceDir, |
340 | 340 | configFingerprint: params.configFingerprint ?? "fingerprint", |
341 | 341 | getCatalog: async () => { |
| 342 | +if (!notifyCatalogStarted) { |
| 343 | +throw new Error("Expected bundle MCP catalog start callback to be initialized"); |
| 344 | +} |
342 | 345 | notifyCatalogStarted(); |
343 | 346 | return await new Promise((_, reject) => { |
344 | 347 | rejectCatalog = reject; |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -60,7 +60,7 @@ describe("handleAssistantFailover", () => {
|
60 | 60 | describe("rotate_profile branch", () => { |
61 | 61 | it("rotates before waiting on auth profile failure marking", async () => { |
62 | 62 | const events: string[] = []; |
63 | | -let releaseMark!: () => void; |
| 63 | +let releaseMark: (() => void) | undefined; |
64 | 64 | const markFinished = new Promise<void>((resolve) => { |
65 | 65 | releaseMark = resolve; |
66 | 66 | }); |
@@ -91,6 +91,9 @@ describe("handleAssistantFailover", () => {
|
91 | 91 | |
92 | 92 | expect(outcome.action).toBe("retry"); |
93 | 93 | expect(events).toEqual(["advance", "mark-start"]); |
| 94 | +if (!releaseMark) { |
| 95 | +throw new Error("Expected auth profile failure mark release callback to be initialized"); |
| 96 | +} |
94 | 97 | releaseMark(); |
95 | 98 | await markSettled; |
96 | 99 | await vi.waitFor(() => expect(events).toEqual(["advance", "mark-start", "mark-finish"])); |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -136,14 +136,17 @@ describe("subagent registry steer restarts", () => {
|
136 | 136 | }; |
137 | 137 | |
138 | 138 | const createDeferredAnnounceResolver = (): ((value: boolean) => void) => { |
139 | | -let resolveAnnounce!: (value: boolean) => void; |
| 139 | +let resolveAnnounce: ((value: boolean) => void) | undefined; |
140 | 140 | announceSpy.mockImplementationOnce( |
141 | 141 | () => |
142 | 142 | new Promise<boolean>((resolve) => { |
143 | 143 | resolveAnnounce = resolve; |
144 | 144 | }), |
145 | 145 | ); |
146 | 146 | return (value: boolean) => { |
| 147 | +if (!resolveAnnounce) { |
| 148 | +throw new Error("Expected subagent announcement resolver to be initialized"); |
| 149 | +} |
147 | 150 | resolveAnnounce(value); |
148 | 151 | }; |
149 | 152 | }; |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -122,7 +122,7 @@ describe("video generate background helpers", () => {
|
122 | 122 | |
123 | 123 | it("keeps long-running media tasks fresh while provider work is pending", async () => { |
124 | 124 | vi.useFakeTimers(); |
125 | | -let resolveRun!: (value: string) => void; |
| 125 | +let resolveRun: ((value: string) => void) | undefined; |
126 | 126 | const runPromise = new Promise<string>((resolve) => { |
127 | 127 | resolveRun = resolve; |
128 | 128 | }); |
@@ -145,6 +145,9 @@ describe("video generate background helpers", () => {
|
145 | 145 | progressSummary: "Generating video", |
146 | 146 | }); |
147 | 147 | |
| 148 | +if (!resolveRun) { |
| 149 | +throw new Error("Expected video generation run resolver to be initialized"); |
| 150 | +} |
148 | 151 | resolveRun("done"); |
149 | 152 | await expect(task).resolves.toBe("done"); |
150 | 153 | const callsAfterCompletion = taskExecutorMocks.recordTaskRunProgressByRunId.mock.calls.length; |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。