@@ -14,6 +14,10 @@ const kCode = Symbol('code');
1414const kInfo = Symbol ( 'info' ) ;
1515const messages = new Map ( ) ;
1616
17+ var green = '' ;
18+ var red = '' ;
19+ var white = '' ;
20+
1721const { errmap } = process . binding ( 'uv' ) ;
1822const { kMaxLength } = process . binding ( 'buffer' ) ;
1923const { defineProperty } = Object ;
@@ -143,7 +147,7 @@ function createErrDiff(actual, expected, operator) {
143147 const expectedLines = util
144148 . inspect ( expected , { compact : false } ) . split ( '\n' ) ;
145149 const msg = `Input A expected to ${ operator } input B:\n` +
146- '\u001b[32m + expected\u001b[39m \u001b[31m - actual\u001b[39m' ;
150+ ` ${ green } + expected${ white } ${ red } - actual${ white } ` ;
147151 const skippedMsg = ' ... Lines skipped' ;
148152
149153 // Remove all ending lines that match (this optimizes the output for
@@ -189,7 +193,7 @@ function createErrDiff(actual, expected, operator) {
189193 printedLines ++ ;
190194 }
191195 lastPos = i ;
192- other += `\n\u001b[32m+\u001b[39m ${ expectedLines [ i ] } ` ;
196+ other += `\n${ green } + ${ white } ${ expectedLines [ i ] } ` ;
193197 printedLines ++ ;
194198 // Only extra actual lines exist
195199 } else if ( expectedLines . length < i + 1 ) {
@@ -205,7 +209,7 @@ function createErrDiff(actual, expected, operator) {
205209 printedLines ++ ;
206210 }
207211 lastPos = i ;
208- res += `\n\u001b[31m-\u001b[39m ${ actualLines [ i ] } ` ;
212+ res += `\n${ red } - ${ white } ${ actualLines [ i ] } ` ;
209213 printedLines ++ ;
210214 // Lines diverge
211215 } else if ( actualLines [ i ] !== expectedLines [ i ] ) {
@@ -221,8 +225,8 @@ function createErrDiff(actual, expected, operator) {
221225 printedLines ++ ;
222226 }
223227 lastPos = i ;
224- res += `\n\u001b[31m-\u001b[39m ${ actualLines [ i ] } ` ;
225- other += `\n\u001b[32m+\u001b[39m ${ expectedLines [ i ] } ` ;
228+ res += `\n${ red } - ${ white } ${ actualLines [ i ] } ` ;
229+ other += `\n${ green } + ${ white } ${ expectedLines [ i ] } ` ;
226230 printedLines += 2 ;
227231 // Lines are identical
228232 } else {
@@ -258,7 +262,14 @@ class AssertionError extends Error {
258262 if ( message != null ) {
259263 super ( message ) ;
260264 } else {
261- if ( util === null ) util = require ( 'util' ) ;
265+ if ( util === null ) {
266+ util = require ( 'util' ) ;
267+ if ( process . stdout . isTTY && process . stdout . getColorDepth ( ) !== 1 ) {
268+ green = '\u001b[32m' ;
269+ white = '\u001b[39m' ;
270+ red = '\u001b[31m' ;
271+ }
272+ }
262273
263274 if ( actual && actual . stack && actual instanceof Error )
264275 actual = `${ actual . name } : ${ actual . message } ` ;
0 commit comments