From cf14a2a2375fe149d2a0d10f2232a3f94edd128d Mon Sep 17 00:00:00 2001 From: dblock Date: Thu, 5 Sep 2024 11:01:40 -0400 Subject: [PATCH] Truncate errors at 256 characters. Signed-off-by: dblock --- CHANGELOG.md | 12 ++++++------ tools/src/tester/ResultLogger.ts | 5 +++-- tools/tests/tester/ResultLogger.test.ts | 23 +++++++++++++++++++++++ 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2441b2f7..f6b239479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -97,13 +97,13 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Renamed `main` release tag to `main-latest` ([#321](https://github.com/opensearch-project/opensearch-api-specification/pull/321)) - Replaced usages of `Opensearch` with `OpenSearch` ([#335](https://github.com/opensearch-project/opensearch-api-specification/pull/335)) - Prevented merger tool from printing warnings when used by tester tool ([#359](https://github.com/opensearch-project/opensearch-api-specification/pull/359)) -- Replaced the deprecated fs.rmdirSync with fs.rmSync ([#359](https://github.com/opensearch-project/opensearch-api-specification/pull/359)) -- Tester tool now provides better context for non-2XX responses when --verbose is used ([#359](https://github.com/opensearch-project/opensearch-api-specification/pull/359)) -- Lock testing for next release of OpenSearch to a specific SHA ([#431](https://github.com/opensearch-project/opensearch-api-specification/pull/431)) -- Replace nullable with null type ([#436](https://github.com/opensearch-project/opensearch-api-specification/pull/436)) +- Replaced the deprecated `fs.rmdirSync` with `fs.rmSync` ([#359](https://github.com/opensearch-project/opensearch-api-specification/pull/359)) +- Added better context for non-2XX responses when `--verbose` is used with the tester tool ([#359](https://github.com/opensearch-project/opensearch-api-specification/pull/359)) +- Locked testing for next release of OpenSearch to a specific SHA ([#431](https://github.com/opensearch-project/opensearch-api-specification/pull/431)) +- Replaced nullable with `null` type ([#436](https://github.com/opensearch-project/opensearch-api-specification/pull/436)) - Split test suite ([#472])(https://github.com/opensearch-project/opensearch-api-specification/pull/472) - Changed `WriteResponseBase`'s `_primary_term`, `_seq_no` & `_version` to have `int64` format ([#530](https://github.com/opensearch-project/opensearch-api-specification/pull/530)) -- Adjust indices, shards cat API to test against unassigned indices ([#551](https://github.com/opensearch-project/opensearch-api-specification/pull/551)) +- Adjusted indices, shards cat API to test against unassigned indices ([#551](https://github.com/opensearch-project/opensearch-api-specification/pull/551)) ### Deprecated @@ -140,7 +140,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Fixed `knn` query specification ([#538](https://github.com/opensearch-project/opensearch-api-specification/pull/538)) - Fixed content-type for `/hot_threads` ([#543](https://github.com/opensearch-project/opensearch-api-specification/pull/543)) - Fixed `/_cluster/settings` returning flat results ([#545](https://github.com/opensearch-project/opensearch-api-specification/pull/545)) -- Fixed missing fields in cat API ([#551](https://github.com/opensearch-project/opensearch-api-specification/pull/551)) +- Fixed missing fields in `_cat` API ([#551](https://github.com/opensearch-project/opensearch-api-specification/pull/551)) ### Security diff --git a/tools/src/tester/ResultLogger.ts b/tools/src/tester/ResultLogger.ts index 0d6d2c929..109b05a7c 100644 --- a/tools/src/tester/ResultLogger.ts +++ b/tools/src/tester/ResultLogger.ts @@ -152,8 +152,9 @@ export class ConsoleResultLogger implements ResultLogger { } #maybe_shorten_error_message(message: string | undefined): string | undefined { - if (message === undefined || message.length <= 128 || this._verbose) return message - const part = message.split(',')[0] + const cut_at = 256 + if (message === undefined || message.length <= cut_at || this._verbose) return message + const part = message.substring(0, cut_at) return part + (part !== message ? ', ...' : '') } diff --git a/tools/tests/tester/ResultLogger.test.ts b/tools/tests/tester/ResultLogger.test.ts index 512619cd9..ff3b1a10c 100644 --- a/tools/tests/tester/ResultLogger.test.ts +++ b/tools/tests/tester/ResultLogger.test.ts @@ -176,6 +176,29 @@ describe('ConsoleResultLogger', () => { ]) }) + test('with a very long error message', () => { + logger.log({ + result: Result.PASSED, + display_path: 'path', + full_path: 'full_path', + description: 'description', + message: "x".repeat(257), + chapters: [{ + title: 'title', + overall: { + result: Result.PASSED + } + }], + epilogues: [], + prologues: [] + }) + + const truncated_error = `(${"x".repeat(256)}, ...)` + expect(log.mock.calls).toEqual([ + [`${ansi.green('PASSED ')} ${ansi.cyan(ansi.b('path'))} ${ansi.gray(truncated_error)}`] + ]) + }) + describe('with warnings', () => { const logger = new ConsoleResultLogger(tab_width, true)