test: reject calls after confirmed storage loss
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s

This commit is contained in:
mesalogo
2026-10-08 09:40:38 +08:00
parent c4ab83a7e3
commit 95ece25c37
+3 -11
View File
@@ -205,22 +205,14 @@ async function run(): Promise<void> {
await lostFiles.attachments.outputCreate('crashed-call', abandoned)
await lostFiles.attachments.outputAppend('crashed-call', abandoned, Buffer.from('orphan'))
await lostFiles.attachments.outputFinish('crashed-call', abandoned, 6)
const internal = lost as unknown as { transport: { child: { kill(): boolean; postMessage(message: unknown): void } } }
const post = internal.transport.child.postMessage.bind(internal.transport.child)
let killed = false
internal.transport.child.postMessage = message => {
post(message)
if (!killed && (message as { type: string }).type === 'call') {
killed = true
assert.ok(internal.transport.child.kill())
}
}
const internal = lost as unknown as { transport: { child: { kill(): boolean } } }
const neverReplayId = randomUUID()
const neverReplayMessages = histories.map(message => ({ ...message, id: randomUUID() }))
assert.ok(internal.transport.child.kill())
while (Reflect.get(lost, 'state') !== 'failed') await new Promise(resolve => setImmediate(resolve))
await assert.rejects(lost.call('assistant', 'saveLocalConversations', [[{
header: { id: neverReplayId, title: 'Never replay', updatedAt: 123 }, messages: neverReplayMessages
}]]), error => error?.code === 'STORAGE_UNCONFIRMED' || error?.message === 'Storage is not ready')
while (Reflect.get(lost, 'state') !== 'failed') await new Promise(resolve => setImmediate(resolve))
await assert.rejects(lost.call('assistant', 'listProjects', []), /not ready/)
await lost.retry()
await lost.ready