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 0000000000..e1eda0d130 --- /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 23fbf48388..ba8e1417cc 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 a4567b25f9..909c7a7467 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, () => {