From b284bb00c06cc14fa5e83eac1e008bfbcf905008 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 10 Sep 2026 18:28:57 +0100 Subject: [PATCH] Cover the stopProcessor failure path and trackProcessorSync Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01GSB8Qb89KDoTNRV83dWJHa --- src/livekit/TrackProcessorContext.test.ts | 27 ++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/livekit/TrackProcessorContext.test.ts b/src/livekit/TrackProcessorContext.test.ts index 732fa5308..96a04aa4f 100644 --- a/src/livekit/TrackProcessorContext.test.ts +++ b/src/livekit/TrackProcessorContext.test.ts @@ -12,7 +12,9 @@ import { type ProcessorWrapper, } from "@livekit/track-processors"; -import { applyProcessor } from "./TrackProcessorContext"; +import { applyProcessor, trackProcessorSync } from "./TrackProcessorContext"; +import { constant } from "../state/Behavior"; +import { testScope } from "../utils/test"; const processor = {} as ProcessorWrapper; @@ -59,4 +61,27 @@ describe("applyProcessor", () => { applyProcessor(track, undefined); expect(track.stopProcessor).toHaveBeenCalled(); }); + + it("does not surface a rejected stopProcessor", async () => { + const track = mockTrack("live", processor); + vi.mocked(track.stopProcessor).mockRejectedValue(new Error("nope")); + const unhandled = vi.fn(); + process.on("unhandledRejection", unhandled); + applyProcessor(track, undefined); + await new Promise((r) => setTimeout(r, 0)); + process.off("unhandledRejection", unhandled); + expect(unhandled).not.toHaveBeenCalled(); + }); +}); + +describe("trackProcessorSync", () => { + it("applies the processor to the current track", () => { + const track = mockTrack("live"); + trackProcessorSync( + testScope(), + constant(track), + constant({ supported: true, processor }), + ); + expect(track.setProcessor).toHaveBeenCalledWith(processor); + }); });