MCPcopy
hub / github.com/coder/mux / assertStreamSuccess

Function assertStreamSuccess

tests/ipc/streamCollector.ts:496–536  ·  view source on GitHub ↗
(collector: StreamCollector)

Source from the content-addressed store, hash-verified

494 * Provides helpful error messages when assertions fail.
495 */
496export function assertStreamSuccess(collector: StreamCollector): void {
497 const allEvents = collector.getEvents();
498
499 // Check for stream-end
500 if (!collector.hasStreamEnd()) {
501 const errorEvent = allEvents.find((e) => "type" in e && e.type === "stream-error");
502 if (errorEvent && "error" in errorEvent) {
503 collector.logEventDiagnostics(
504 `Stream did not complete successfully. Got stream-error: ${errorEvent.error}`
505 );
506 throw new Error(
507 `Stream did not complete successfully. Got stream-error: ${errorEvent.error}\n` +
508 `See detailed event diagnostics above.`
509 );
510 }
511 collector.logEventDiagnostics("Stream did not emit stream-end event");
512 throw new Error(
513 `Stream did not emit stream-end event.\n` + `See detailed event diagnostics above.`
514 );
515 }
516
517 // Check for errors
518 if (collector.hasError()) {
519 const errorEvent = allEvents.find((e) => "type" in e && e.type === "stream-error");
520 const errorMsg = errorEvent && "error" in errorEvent ? errorEvent.error : "unknown";
521 collector.logEventDiagnostics(`Stream completed but also has error event: ${errorMsg}`);
522 throw new Error(
523 `Stream completed but also has error event: ${errorMsg}\n` +
524 `See detailed event diagnostics above.`
525 );
526 }
527
528 // Check for final message
529 const finalMessage = collector.getFinalMessage();
530 if (!finalMessage) {
531 collector.logEventDiagnostics("Stream completed but final message is missing");
532 throw new Error(
533 `Stream completed but final message is missing.\n` + `See detailed event diagnostics above.`
534 );
535 }
536}
537
538/**
539 * RAII-style helper that starts a collector, runs a function, and stops the collector.

Callers 9

waitForStreamSuccessFunction · 0.85
ollama.test.tsFile · 0.85
fork.test.tsFile · 0.85
usageDelta.test.tsFile · 0.85
truncate.test.tsFile · 0.85
webFetch.test.tsFile · 0.85
mcpConfig.test.tsFile · 0.85

Calls 5

getEventsMethod · 0.80
hasStreamEndMethod · 0.80
logEventDiagnosticsMethod · 0.80
hasErrorMethod · 0.80
getFinalMessageMethod · 0.80

Tested by

no test coverage detected