Wait for failed MCP transport cleanup before command exit so targeted live checks do not crash on Windows. Co-Authored-By: Claude <noreply@anthropic.com>
49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
|
|
import { cleanupFailedConnection } from './client.js'
|
|
|
|
test('cleanupFailedConnection awaits transport close before resolving', async () => {
|
|
let closed = false
|
|
let resolveClose: (() => void) | undefined
|
|
|
|
const transport = {
|
|
close: async () =>
|
|
await new Promise<void>(resolve => {
|
|
resolveClose = () => {
|
|
closed = true
|
|
resolve()
|
|
}
|
|
}),
|
|
}
|
|
|
|
const cleanupPromise = cleanupFailedConnection(transport)
|
|
|
|
assert.equal(closed, false)
|
|
resolveClose?.()
|
|
await cleanupPromise
|
|
assert.equal(closed, true)
|
|
})
|
|
|
|
test('cleanupFailedConnection closes in-process server and transport', async () => {
|
|
let inProcessClosed = false
|
|
let transportClosed = false
|
|
|
|
const inProcessServer = {
|
|
close: async () => {
|
|
inProcessClosed = true
|
|
},
|
|
}
|
|
|
|
const transport = {
|
|
close: async () => {
|
|
transportClosed = true
|
|
},
|
|
}
|
|
|
|
await cleanupFailedConnection(transport, inProcessServer)
|
|
|
|
assert.equal(inProcessClosed, true)
|
|
assert.equal(transportClosed, true)
|
|
})
|