From 9b3ad163f2f80c61d381cb9376688ca76b2888a7 Mon Sep 17 00:00:00 2001 From: kwy404 Date: Thu, 1 Oct 2026 17:43:41 -0300 Subject: [PATCH] [node-core-library] Fix Text.truncateWithEllipsis() exceeding maximumLength --- ...ix-truncate-with-ellipsis_2026-10-01-20-44-35.json | 11 +++++++++++ libraries/node-core-library/src/Text.ts | 2 +- libraries/node-core-library/src/test/Text.test.ts | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 common/changes/@rushstack/node-core-library/kwy404-fix-truncate-with-ellipsis_2026-10-01-20-44-35.json diff --git a/common/changes/@rushstack/node-core-library/kwy404-fix-truncate-with-ellipsis_2026-10-01-20-44-35.json b/common/changes/@rushstack/node-core-library/kwy404-fix-truncate-with-ellipsis_2026-10-01-20-44-35.json new file mode 100644 index 00000000000..e1eda0d130a --- /dev/null +++ b/common/changes/@rushstack/node-core-library/kwy404-fix-truncate-with-ellipsis_2026-10-01-20-44-35.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "Fix an issue where `Text.truncateWithEllipsis()` returned \"...\" when `maximumLength` was less than 3, producing a string longer than `maximumLength`.", + "type": "patch", + "packageName": "@rushstack/node-core-library" + } + ], + "packageName": "@rushstack/node-core-library", + "email": "thekaway404@gmail.com" +} \ No newline at end of file diff --git a/libraries/node-core-library/src/Text.ts b/libraries/node-core-library/src/Text.ts index 23fbf483881..ba8e1417cc4 100644 --- a/libraries/node-core-library/src/Text.ts +++ b/libraries/node-core-library/src/Text.ts @@ -209,7 +209,7 @@ export class Text { return s; } - if (s.length <= 3) { + if (maximumLength < 3) { return s.substring(0, maximumLength); } diff --git a/libraries/node-core-library/src/test/Text.test.ts b/libraries/node-core-library/src/test/Text.test.ts index a4567b25f98..909c7a74670 100644 --- a/libraries/node-core-library/src/test/Text.test.ts +++ b/libraries/node-core-library/src/test/Text.test.ts @@ -72,6 +72,11 @@ describe(Text.name, () => { expect(Text.truncateWithEllipsis('12345', 5)).toEqual('12345'); expect(Text.truncateWithEllipsis('123456', 5)).toEqual('12...'); }); + + it('Never returns more than maximumLength characters', () => { + expect(Text.truncateWithEllipsis('12345', 0)).toEqual(''); + expect(Text.truncateWithEllipsis('12345', 2)).toEqual('12'); + }); }); describe(Text.convertToLf.name, () => {