@@ -26,6 +26,7 @@ const { myersDiff, printMyersDiff, printSimpleMyersDiff } = require('internal/as
26
26
27
27
const kReadableOperator = {
28
28
deepStrictEqual : 'Expected values to be strictly deep-equal:' ,
29
+ partialDeepStrictEqual : 'Expected values to be partially and strictly deep-equal:' ,
29
30
strictEqual : 'Expected values to be strictly equal:' ,
30
31
strictEqualObject : 'Expected "actual" to be reference-equal to "expected":' ,
31
32
deepEqual : 'Expected values to be loosely deep-equal:' ,
@@ -41,6 +42,8 @@ const kReadableOperator = {
41
42
const kMaxShortStringLength = 12 ;
42
43
const kMaxLongStringLength = 512 ;
43
44
45
+ const kMethodsWithCustomMessageDiff = [ 'deepStrictEqual' , 'strictEqual' , 'partialDeepStrictEqual' ] ;
46
+
44
47
function copyError ( source ) {
45
48
const target = ObjectAssign (
46
49
{ __proto__ : ObjectGetPrototypeOf ( source ) } ,
@@ -210,9 +213,13 @@ function createErrDiff(actual, expected, operator, customMessage) {
210
213
const checkCommaDisparity = actual != null && typeof actual === 'object' ;
211
214
const diff = myersDiff ( inspectedSplitActual , inspectedSplitExpected , checkCommaDisparity ) ;
212
215
213
- const myersDiffMessage = printMyersDiff ( diff ) ;
216
+ const myersDiffMessage = printMyersDiff ( diff , operator ) ;
214
217
message = myersDiffMessage . message ;
215
218
219
+ if ( operator === 'partialDeepStrictEqual' ) {
220
+ header = `${ colors . gray } ${ colors . hasColors ? '' : '+ ' } actual${ colors . white } ${ colors . red } - expected${ colors . white } ` ;
221
+ }
222
+
216
223
if ( myersDiffMessage . skipped ) {
217
224
skipped = true ;
218
225
}
@@ -255,7 +262,7 @@ class AssertionError extends Error {
255
262
if ( isErrorStackTraceLimitWritable ( ) ) Error . stackTraceLimit = 0 ;
256
263
257
264
if ( message != null ) {
258
- if ( operator === 'deepStrictEqual' || operator === 'strictEqual' ) {
265
+ if ( kMethodsWithCustomMessageDiff . includes ( operator ) ) {
259
266
super ( createErrDiff ( actual , expected , operator , message ) ) ;
260
267
} else {
261
268
super ( String ( message ) ) ;
@@ -275,7 +282,7 @@ class AssertionError extends Error {
275
282
expected = copyError ( expected ) ;
276
283
}
277
284
278
- if ( operator === 'deepStrictEqual' || operator === 'strictEqual' ) {
285
+ if ( kMethodsWithCustomMessageDiff . includes ( operator ) ) {
279
286
super ( createErrDiff ( actual , expected , operator , message ) ) ;
280
287
} else if ( operator === 'notDeepStrictEqual' ||
281
288
operator === 'notStrictEqual' ) {
0 commit comments