@@ -26,6 +26,7 @@ const { myersDiff, printMyersDiff, printSimpleMyersDiff } = require('internal/as
2626
2727const  kReadableOperator  =  { 
2828  deepStrictEqual : 'Expected values to be strictly deep-equal:' , 
29+   partialDeepStrictEqual : 'Expected values to be partially and strictly deep-equal:' , 
2930  strictEqual : 'Expected values to be strictly equal:' , 
3031  strictEqualObject : 'Expected "actual" to be reference-equal to "expected":' , 
3132  deepEqual : 'Expected values to be loosely deep-equal:' , 
@@ -41,6 +42,8 @@ const kReadableOperator = {
4142const  kMaxShortStringLength  =  12 ; 
4243const  kMaxLongStringLength  =  512 ; 
4344
45+ const  kMethodsWithCustomMessageDiff  =  [ 'deepStrictEqual' ,  'strictEqual' ,  'partialDeepStrictEqual' ] ; 
46+ 
4447function  copyError ( source )  { 
4548  const  target  =  ObjectAssign ( 
4649    {  __proto__ : ObjectGetPrototypeOf ( source )  } , 
@@ -210,9 +213,13 @@ function createErrDiff(actual, expected, operator, customMessage) {
210213    const  checkCommaDisparity  =  actual  !=  null  &&  typeof  actual  ===  'object' ; 
211214    const  diff  =  myersDiff ( inspectedSplitActual ,  inspectedSplitExpected ,  checkCommaDisparity ) ; 
212215
213-     const  myersDiffMessage  =  printMyersDiff ( diff ) ; 
216+     const  myersDiffMessage  =  printMyersDiff ( diff ,   operator ) ; 
214217    message  =  myersDiffMessage . message ; 
215218
219+     if  ( operator  ===  'partialDeepStrictEqual' )  { 
220+       header  =  `${ colors . gray } ${ colors . hasColors  ? ''  : '+ ' }  actual${ colors . white }   ${ colors . red }  - expected${ colors . white }  ` ; 
221+     } 
222+ 
216223    if  ( myersDiffMessage . skipped )  { 
217224      skipped  =  true ; 
218225    } 
@@ -255,7 +262,7 @@ class AssertionError extends Error {
255262    if  ( isErrorStackTraceLimitWritable ( ) )  Error . stackTraceLimit  =  0 ; 
256263
257264    if  ( message  !=  null )  { 
258-       if  ( operator   ===   'deepStrictEqual'   ||   operator   ===   'strictEqual' )  { 
265+       if  ( kMethodsWithCustomMessageDiff . includes ( operator ) )  { 
259266        super ( createErrDiff ( actual ,  expected ,  operator ,  message ) ) ; 
260267      }  else  { 
261268        super ( String ( message ) ) ; 
@@ -275,7 +282,7 @@ class AssertionError extends Error {
275282        expected  =  copyError ( expected ) ; 
276283      } 
277284
278-       if  ( operator   ===   'deepStrictEqual'   ||   operator   ===   'strictEqual' )  { 
285+       if  ( kMethodsWithCustomMessageDiff . includes ( operator ) )  { 
279286        super ( createErrDiff ( actual ,  expected ,  operator ,  message ) ) ; 
280287      }  else  if  ( operator  ===  'notDeepStrictEqual'  || 
281288        operator  ===  'notStrictEqual' )  { 
0 commit comments