From 358dd19289b60b3c35222bdae9a85b9bcbb2322a Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Mon, 1 Mar 2021 22:01:56 +0100 Subject: [PATCH 1/5] Better print for sparse arrays --- .../pretty-format/src/__tests__/prettyFormat.test.ts | 10 ++++++++++ packages/pretty-format/src/collections.ts | 8 +++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/pretty-format/src/__tests__/prettyFormat.test.ts b/packages/pretty-format/src/__tests__/prettyFormat.test.ts index 9962cf4f4a0c..71b2c8113cf6 100644 --- a/packages/pretty-format/src/__tests__/prettyFormat.test.ts +++ b/packages/pretty-format/src/__tests__/prettyFormat.test.ts @@ -41,6 +41,16 @@ describe('prettyFormat()', () => { expect(prettyFormat(val)).toEqual('Array [\n 1,\n 2,\n 3,\n]'); }); + it('prints a sparse array with only holes', () => { + const val = [, , ,]; + expect(prettyFormat(val)).toEqual('Array [\n ,\n ,\n ,\n]'); + }); + + it('prints a sparse array with items', () => { + const val = [1, , , 4]; + expect(prettyFormat(val)).toEqual('Array [\n 1,\n ,\n ,\n 4,\n]'); + }); + it('prints a empty typed array', () => { const val = new Uint32Array(0); expect(prettyFormat(val)).toEqual('Uint32Array []'); diff --git a/packages/pretty-format/src/collections.ts b/packages/pretty-format/src/collections.ts index 7876309e702b..6884059fe307 100644 --- a/packages/pretty-format/src/collections.ts +++ b/packages/pretty-format/src/collections.ts @@ -142,9 +142,11 @@ export function printListItems( const indentationNext = indentation + config.indent; for (let i = 0; i < list.length; i++) { - result += - indentationNext + - printer(list[i], config, indentationNext, depth, refs); + result += indentationNext; + + if (i in list) { + result += printer(list[i], config, indentationNext, depth, refs); + } if (i < list.length - 1) { result += ',' + config.spacingInner; From e5e6e47be1d8d51c10e63cf05dfa2a90681336df Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Wed, 21 Apr 2021 19:24:45 +0200 Subject: [PATCH 2/5] Add test with holes and undefined --- packages/pretty-format/src/__tests__/prettyFormat.test.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/pretty-format/src/__tests__/prettyFormat.test.ts b/packages/pretty-format/src/__tests__/prettyFormat.test.ts index 71b2c8113cf6..eb57c796306e 100644 --- a/packages/pretty-format/src/__tests__/prettyFormat.test.ts +++ b/packages/pretty-format/src/__tests__/prettyFormat.test.ts @@ -51,6 +51,13 @@ describe('prettyFormat()', () => { expect(prettyFormat(val)).toEqual('Array [\n 1,\n ,\n ,\n 4,\n]'); }); + it('prints a sparse array also containing undefined values', () => { + const val = [1, , undefined, undefined, , 4]; + expect(prettyFormat(val)).toEqual( + 'Array [\n 1,\n ,\n undefined,\n undefined,\n ,\n 4,\n]', + ); + }); + it('prints a empty typed array', () => { const val = new Uint32Array(0); expect(prettyFormat(val)).toEqual('Uint32Array []'); From d5b8d31511fb0155fc2a0e4d5713dade03b5b99c Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Wed, 21 Apr 2021 20:04:15 +0200 Subject: [PATCH 3/5] FIX Linter --- packages/pretty-format/src/__tests__/prettyFormat.test.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/pretty-format/src/__tests__/prettyFormat.test.ts b/packages/pretty-format/src/__tests__/prettyFormat.test.ts index eb57c796306e..65111efcb4c3 100644 --- a/packages/pretty-format/src/__tests__/prettyFormat.test.ts +++ b/packages/pretty-format/src/__tests__/prettyFormat.test.ts @@ -42,16 +42,19 @@ describe('prettyFormat()', () => { }); it('prints a sparse array with only holes', () => { + // eslint-disable-next-line no-sparse-arrays const val = [, , ,]; expect(prettyFormat(val)).toEqual('Array [\n ,\n ,\n ,\n]'); }); it('prints a sparse array with items', () => { + // eslint-disable-next-line no-sparse-arrays const val = [1, , , 4]; expect(prettyFormat(val)).toEqual('Array [\n 1,\n ,\n ,\n 4,\n]'); }); it('prints a sparse array also containing undefined values', () => { + // eslint-disable-next-line no-sparse-arrays const val = [1, , undefined, undefined, , 4]; expect(prettyFormat(val)).toEqual( 'Array [\n 1,\n ,\n undefined,\n undefined,\n ,\n 4,\n]', From 8f5cfe504d8fd1f3c9da3c00846d04364bfb75b9 Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Thu, 22 Apr 2021 09:01:35 +0200 Subject: [PATCH 4/5] Edit changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d08a3c66ea11..4fa59cadad81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ - `[jest-transform]` Support transpiled transformers ([#11193](https://github.com/facebook/jest/pull/11193)) - `[jest-worker]` Add support for custom task queues and adds a `PriorityQueue` implementation. ([#10921](https://github.com/facebook/jest/pull/10921)) - `[jest-worker]` Add in-order scheduling policy to jest worker ([10902](https://github.com/facebook/jest/pull/10902)) +- `[pretty-format]` Better print for sparse arrays ([11326](https://github.com/facebook/jest/pull/11326)) ### Fixes From a97d59e0d24e9cac1fadb19ee8ee66c83cb8e436 Mon Sep 17 00:00:00 2001 From: Nicolas DUBIEN Date: Thu, 22 Apr 2021 09:02:52 +0200 Subject: [PATCH 5/5] Add check for value surrounded by holes --- packages/pretty-format/src/__tests__/prettyFormat.test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/pretty-format/src/__tests__/prettyFormat.test.ts b/packages/pretty-format/src/__tests__/prettyFormat.test.ts index 65111efcb4c3..aa1e1f440542 100644 --- a/packages/pretty-format/src/__tests__/prettyFormat.test.ts +++ b/packages/pretty-format/src/__tests__/prettyFormat.test.ts @@ -53,6 +53,12 @@ describe('prettyFormat()', () => { expect(prettyFormat(val)).toEqual('Array [\n 1,\n ,\n ,\n 4,\n]'); }); + it('prints a sparse array with value surrounded by holes', () => { + // eslint-disable-next-line no-sparse-arrays + const val = [, 5, ,]; + expect(prettyFormat(val)).toEqual('Array [\n ,\n 5,\n ,\n]'); + }); + it('prints a sparse array also containing undefined values', () => { // eslint-disable-next-line no-sparse-arrays const val = [1, , undefined, undefined, , 4];