Skip to content

Commit

Permalink
util: mark special entries as such
Browse files Browse the repository at this point in the history
This adds the color code to special entries if colors are active.

PR-URL: nodejs#22287
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information
BridgeAR committed Aug 19, 2018
1 parent a04f2f7 commit bd090f9
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 4 deletions.
12 changes: 8 additions & 4 deletions lib/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -758,14 +758,14 @@ function formatValue(ctx, value, recurseTimes) {
if (ctx.showHidden) {
formatter = formatWeakSet;
} else {
extra = '<items unknown>';
extra = ctx.stylize('<items unknown>', 'special');
}
} else if (isWeakMap(value)) {
braces[0] = `${getPrefix(constructor, tag, 'WeakMap')}{`;
if (ctx.showHidden) {
formatter = formatWeakMap;
} else {
extra = '<items unknown>';
extra = ctx.stylize('<items unknown>', 'special');
}
} else if (types.isModuleNamespaceObject(value)) {
braces[0] = `[${tag}] {`;
Expand Down Expand Up @@ -1210,14 +1210,18 @@ function formatPromise(ctx, value, recurseTimes, keys) {
let output;
const [state, result] = getPromiseDetails(value);
if (state === kPending) {
output = ['<pending>'];
output = [ctx.stylize('<pending>', '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 ? `<rejected> ${str}` : str];
output = [
state === kRejected ?
`${ctx.stylize('<rejected>', 'special')} ${str}` :
str
];
}
for (var n = 0; n < keys.length; n++) {
output.push(formatProperty(ctx, value, recurseTimes, keys[n], 0));
Expand Down
27 changes: 27 additions & 0 deletions test/parallel/test-util-inspect.js
Original file line number Diff line number Diff line change
Expand Up @@ -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<items unknown>\u001b[${special[1]}m }`
);
assert.strictEqual(
inspect(new WeakMap(), { colors: true }),
`WeakMap { \u001b[${special[0]}m<items unknown>\u001b[${special[1]}m }`
);
assert.strictEqual(
inspect(new Promise(() => {}), { colors: true }),
`Promise { \u001b[${special[0]}m<pending>\u001b[${special[1]}m }`
);

const rejection = Promise.reject('Oh no!');
assert.strictEqual(
inspect(rejection, { colors: true }),
`Promise { \u001b[${special[0]}m<rejected>\u001b[${special[1]}m ` +
`\u001b[${string[0]}m'Oh no!'\u001b[${string[1]}m }`
);
rejection.catch(() => {});
}

0 comments on commit bd090f9

Please sign in to comment.