From 080b2734aa85b61fc1f61d42dbe4fe59cd1478bd Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Tue, 26 Mar 2019 08:39:07 +0100 Subject: [PATCH] util: fix map entries inspection This makes sure the arrays returned by Map#entries() are handled as any other array instead of just visualizing the entries as array. Therefore options should have an impact on the arrays. --- lib/internal/util/inspect.js | 29 +++++++++++++++-------------- test/parallel/test-util-inspect.js | 5 ++++- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index dc0a1dcb279ff7..554f9f4e8c16b4 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -1181,27 +1181,28 @@ function formatMapIterInner(ctx, recurseTimes, entries, state) { const remaining = len - maxArrayLength; const maxLength = Math.min(maxArrayLength, len); let output = new Array(maxLength); - let start = ''; - let end = ''; - let middle = ' => '; let i = 0; - if (state === kMapEntries) { - start = '[ '; - end = ' ]'; - middle = ', '; - } ctx.indentationLvl += 2; - for (; i < maxLength; i++) { - const pos = i * 2; - output[i] = `${start}${formatValue(ctx, entries[pos], recurseTimes)}` + - `${middle}${formatValue(ctx, entries[pos + 1], recurseTimes)}${end}`; - } - ctx.indentationLvl -= 2; if (state === kWeak) { + for (; i < maxLength; i++) { + const pos = i * 2; + output[i] = `${formatValue(ctx, entries[pos], recurseTimes)}` + + ` => ${formatValue(ctx, entries[pos + 1], recurseTimes)}`; + } // Sort all entries to have a halfway reliable output (if more entries // than retrieved ones exist, we can not reliably return the same output). output = output.sort(); + } else { + for (; i < maxLength; i++) { + const pos = i * 2; + const res = [ + formatValue(ctx, entries[pos], recurseTimes), + formatValue(ctx, entries[pos + 1], recurseTimes) + ]; + output[i] = reduceToSingleString(ctx, res, '', ['[', ']']); + } } + ctx.indentationLvl -= 2; if (remaining > 0) { output.push(`... ${remaining} more item${remaining > 1 ? 's' : ''}`); } diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index a474fd56e44b71..7d7f92c093b045 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -1017,7 +1017,10 @@ if (typeof Symbol !== 'undefined') { // Test Set iterators. { - const aSet = new Set([1, 3]); + const aSet = new Set([1]); + assert.strictEqual(util.inspect(aSet.entries(), { compact: false }), + '[Set Entries] {\n [\n 1,\n 1\n ]\n}'); + aSet.add(3); assert.strictEqual(util.inspect(aSet.keys()), '[Set Iterator] { 1, 3 }'); assert.strictEqual(util.inspect(aSet.values()), '[Set Iterator] { 1, 3 }'); const setEntries = aSet.entries();