diff --git a/src/shared/text/reasoning-tags.test.ts b/src/shared/text/reasoning-tags.test.ts index 40cd133beac..86180e21a3f 100644 --- a/src/shared/text/reasoning-tags.test.ts +++ b/src/shared/text/reasoning-tags.test.ts @@ -146,6 +146,10 @@ describe("stripReasoningTagsFromText", () => { input: "`` in code, visible outside", expected: "`` in code, visible outside", }, + { + input: "A visible B", + expected: "A visible B", + }, ] as const; for (const { input, expected } of cases) { expect(stripReasoningTagsFromText(input)).toBe(expected); @@ -195,6 +199,12 @@ describe("stripReasoningTagsFromText", () => { expect(stripReasoningTagsFromText(input, { mode })).toBe(expected); } }); + + it("still strips fully closed reasoning blocks in preserve mode", () => { + expect(stripReasoningTagsFromText("A hidden B", { mode: "preserve" })).toBe( + "A B", + ); + }); }); describe("trim options", () => { @@ -221,4 +231,10 @@ describe("stripReasoningTagsFromText", () => { } }); }); + + it("does not leak regex state across repeated calls", () => { + expect(stripReasoningTagsFromText("A 1 B")).toBe("A 1 B"); + expect(stripReasoningTagsFromText("C 2 D")).toBe("C 2 D"); + expect(stripReasoningTagsFromText("E x F")).toBe("E F"); + }); });