Skip to content

Commit

Permalink
fix: int keys ranging outside of [0, 4294967294] are ignored when com…
Browse files Browse the repository at this point in the history
…paring arrays together (#11057)
  • Loading branch information
dubzzz authored Feb 5, 2021
1 parent 98ed700 commit e11072b
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
33 changes: 33 additions & 0 deletions packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2071,6 +2071,39 @@ Expected: <g>/abc/g</>
Received: <r>/abc/gsy</>
`;

exports[`.toEqual() {pass: false} expect([]).toEqual([]) 1`] = `
<d>expect(</><r>received</><d>).</>toEqual<d>(</><g>expected</><d>) // deep equality</>

Expected: <g>[]</>
Received: serializes to the same string
`;

exports[`.toEqual() {pass: false} expect([]).toEqual([]) 2`] = `
<d>expect(</><r>received</><d>).</>toEqual<d>(</><g>expected</><d>) // deep equality</>

Expected: <g>[]</>
Received: serializes to the same string
`;

exports[`.toEqual() {pass: false} expect([]).toEqual([]) 3`] = `
<d>expect(</><r>received</><d>).</>toEqual<d>(</><g>expected</><d>) // deep equality</>

Expected: <g>[]</>
Received: serializes to the same string
`;

exports[`.toEqual() {pass: false} expect([]).toEqual([1]) 1`] = `
<d>expect(</><r>received</><d>).</>toEqual<d>(</><g>expected</><d>) // deep equality</>

<g>- Expected - 3</>
<r>+ Received + 1</>

<g>- Array [</>
<g>- 1,</>
<g>- ]</>
<r>+ Array []</>
`;

exports[`.toEqual() {pass: false} expect([1, 2]).toEqual([2, 1]) 1`] = `
<d>expect(</><r>received</><d>).</>toEqual<d>(</><g>expected</><d>) // deep equality</>

Expand Down
18 changes: 18 additions & 0 deletions packages/expect/src/__tests__/matchers.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -598,6 +598,24 @@ describe('.toEqual()', () => {
[Symbol.for('bar')]: 1,
},
],
[
Object.assign([], {4294967295: 1}),
Object.assign([], {4294967295: 2}), // issue 11056
],
[
// eslint-disable-next-line no-useless-computed-key
Object.assign([], {['-0']: 1}),
// eslint-disable-next-line no-useless-computed-key
Object.assign([], {['0']: 1}), // issue 11056: also check (-0, 0)
],
[
Object.assign([], {a: 1}),
Object.assign([], {b: 1}), // issue 11056: also check strings
],
[
Object.assign([], {[Symbol()]: 1}),
Object.assign([], {[Symbol()]: 1}), // issue 11056: also check symbols
],
].forEach(([a, b]) => {
test(`{pass: false} expect(${stringify(a)}).toEqual(${stringify(
b,
Expand Down
6 changes: 5 additions & 1 deletion packages/expect/src/jasmineUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,11 @@ function keys(
}

for (var x = 0; x < allKeys.length; x++) {
if (typeof allKeys[x] === 'symbol' || !allKeys[x].match(/^[0-9]+$/)) {
if (
typeof allKeys[x] === 'symbol' ||
!allKeys[x].match(/^[0-9]+$/) ||
Number(allKeys[x]) >= 4294967295
) {
extraKeys.push(allKeys[x]);
}
}
Expand Down

0 comments on commit e11072b

Please sign in to comment.