test: add coverage for boxed bigints comparisons and edge cases#25932
test: add coverage for boxed bigints comparisons and edge cases#25932Trott wants to merge 2 commits intonodejs:masterfrom
Conversation
Add some BigInt tests for test-util-isDeepStrictEqual to get 100% coverage for lib/internal/util/comparisons.js.
BridgeAR
left a comment
There was a problem hiding this comment.
The first commit seems fine.
The checks however are not obsolete. Removing them would cause some input to throw a wrong error.
const a = new Number(5)
const b = new String(5)
Object.defineProperty(b, Symbol.toStringTag, { value: 'Number' })
Object.setPrototypeOf(b, Number.prototype)
util.isDeepStrictEqual(a, b)
// TypeError: Number.prototype.valueOf requires that 'this' be a Number|
/ping @bcoe There seems to be a (known?) bug in the coverage reports. The code I removed from the ternaries in this PR always evaluates to EDIT: Since I updated the PR such that it's probably not clear what I'm talking about anymore: return foo && bar;If |
Ah, that's how you can do it! Thanks. We don't have any test cases for that sort of thing, but I'll remove that second commit and add a bunch to make sure we get every combination of values tested in those ternaries. |
Test for deep strict equality when prototype and toStringTag have been modified in surprising ways.
a45d0de to
d89a32b
Compare
|
Modifications to |
|
@Trott if you don't mind, perhaps make a tracking issue and assign to me? could be a problem with the remapping logic. Is it specifically when there's a |
An issue was opened by @BridgeAR at #25937. I've assigned it to you.
I'll put a code example over in that issue along with |
|
Landed in f31794b...5d52c8e. |
Add some BigInt tests for test-util-isDeepStrictEqual to get 100% coverage for lib/internal/util/comparisons.js. PR-URL: nodejs#25932 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Test for deep strict equality when prototype and toStringTag have been modified in surprising ways. PR-URL: nodejs#25932 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Add some BigInt tests for test-util-isDeepStrictEqual to get 100% coverage for lib/internal/util/comparisons.js. PR-URL: #25932 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Test for deep strict equality when prototype and toStringTag have been modified in surprising ways. PR-URL: #25932 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
First commit:
Second commit:Second commit:
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes