diff --git a/src/shared/string-sample.test.ts b/src/shared/string-sample.test.ts index f86e8e1b349..783a6499fcd 100644 --- a/src/shared/string-sample.test.ts +++ b/src/shared/string-sample.test.ts @@ -43,6 +43,15 @@ describe("summarizeStringEntries", () => { ).toBe("a, b, c, d, e, f (+1)"); }); + it("uses the default limit for non-finite limits", () => { + expect( + summarizeStringEntries({ + entries: ["a", "b", "c", "d", "e", "f", "g"], + limit: Number.NaN, + }), + ).toBe("a, b, c, d, e, f (+1)"); + }); + it("does not add a suffix when the limit exactly matches the entry count", () => { expect( summarizeStringEntries({ diff --git a/src/shared/string-sample.ts b/src/shared/string-sample.ts index 1529b06b04a..c91b64d14f9 100644 --- a/src/shared/string-sample.ts +++ b/src/shared/string-sample.ts @@ -7,7 +7,8 @@ export function summarizeStringEntries(params: { if (entries.length === 0) { return params.emptyText ?? ""; } - const limit = Math.max(1, Math.floor(params.limit ?? 6)); + const rawLimit = params.limit ?? 6; + const limit = Number.isFinite(rawLimit) ? Math.max(1, Math.floor(rawLimit)) : 6; const sample = entries.slice(0, limit); const suffix = entries.length > sample.length ? ` (+${entries.length - sample.length})` : ""; return `${sample.join(", ")}${suffix}`;