From 2988330fd506b76b148cf7e823fb2360b9d6dd99 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Mon, 13 Aug 2018 00:22:52 +0200 Subject: [PATCH] util: mark special entries as such This adds the color code to special entries if colors are active. --- lib/util.js | 12 ++++++++---- test/parallel/test-util-inspect.js | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/lib/util.js b/lib/util.js index e9b3fa663caf66..33c4cdfff72167 100644 --- a/lib/util.js +++ b/lib/util.js @@ -758,14 +758,14 @@ function formatValue(ctx, value, recurseTimes) { if (ctx.showHidden) { formatter = formatWeakSet; } else { - extra = ''; + extra = ctx.stylize('', 'special'); } } else if (isWeakMap(value)) { braces[0] = `${getPrefix(constructor, tag, 'WeakMap')}{`; if (ctx.showHidden) { formatter = formatWeakMap; } else { - extra = ''; + extra = ctx.stylize('', 'special'); } } else if (types.isModuleNamespaceObject(value)) { braces[0] = `[${tag}] {`; @@ -1210,14 +1210,18 @@ function formatPromise(ctx, value, recurseTimes, keys) { let output; const [state, result] = getPromiseDetails(value); if (state === kPending) { - output = ['']; + output = [ctx.stylize('', 'special')]; } else { // Using `formatValue` is correct here without the need to fix the // indentation level. ctx.indentationLvl += 2; const str = formatValue(ctx, result, recurseTimes); ctx.indentationLvl -= 2; - output = [state === kRejected ? ` ${str}` : str]; + output = [ + state === kRejected ? + `${ctx.stylize('', 'special')} ${str}` : + str + ]; } for (var n = 0; n < keys.length; n++) { output.push(formatProperty(ctx, value, recurseTimes, keys[n], 0)); diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index 6501187528b849..433b16c39e7ce5 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -1647,3 +1647,30 @@ assert.strictEqual(inspect(new BigUint64Array([0n])), 'BigUint64Array [ 0n ]'); '{ [Non\\nenumerable\\tkey]: true }' ); } + +// Check for special colors. +{ + const special = inspect.colors[inspect.styles.special]; + const string = inspect.colors[inspect.styles.string]; + + assert.strictEqual( + inspect(new WeakSet(), { colors: true }), + `WeakSet { \u001b[${special[0]}m\u001b[${special[1]}m }` + ); + assert.strictEqual( + inspect(new WeakMap(), { colors: true }), + `WeakMap { \u001b[${special[0]}m\u001b[${special[1]}m }` + ); + assert.strictEqual( + inspect(new Promise(() => {}), { colors: true }), + `Promise { \u001b[${special[0]}m\u001b[${special[1]}m }` + ); + + const rejection = Promise.reject('Oh no!'); + assert.strictEqual( + inspect(rejection, { colors: true }), + `Promise { \u001b[${special[0]}m\u001b[${special[1]}m ` + + `\u001b[${string[0]}m'Oh no!'\u001b[${string[1]}m }` + ); + rejection.catch(() => {}); +}