Files
node/test/parallel/test-console-table.js
T
ohbarye 0c852a1795 console: .table fall back to logging for function too
According to the console.table documentation, it reads that it "falls
back to just logging the argument if it can’t be parsed as tabular."

But it doesn't fall back when I give a function as its first argument.
It logs an empty table. This is fixes by this commit.

PR-URL: https://github.com/nodejs/node/pull/20681
Fixes: https://github.com/nodejs/node/issues/20679
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
2018-05-18 15:53:06 +02:00

207 lines
7.7 KiB
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const { Console } = require('console');
const queue = [];
const console = new Console({ write: (x) => {
queue.push(x);
}, removeListener: () => {} }, process.stderr, false);
function test(data, only, expected) {
if (arguments.length === 2) {
expected = only;
only = undefined;
}
console.table(data, only);
assert.strictEqual(queue.shift(), expected.trimLeft());
}
common.expectsError(() => console.table([], false), {
code: 'ERR_INVALID_ARG_TYPE',
});
test(null, 'null\n');
test(undefined, 'undefined\n');
test(false, 'false\n');
test('hi', 'hi\n');
test(Symbol(), 'Symbol()\n');
test(function() {}, '[Function]\n');
test([1, 2, 3], `
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
└─────────┴────────┘
`);
test([Symbol(), 5, [10]], `
┌─────────┬────┬──────────┐
│ (index) │ 0 │ Values │
├─────────┼────┼──────────┤
│ 0 │ │ Symbol() │
│ 1 │ │ 5 │
│ 2 │ 10 │ │
└─────────┴────┴──────────┘
`);
test([undefined, 5], `
┌─────────┬───────────┐
│ (index) │ Values │
├─────────┼───────────┤
│ 0 │ undefined │
│ 1 │ 5 │
└─────────┴───────────┘
`);
test({ a: 1, b: Symbol(), c: [10] }, `
┌─────────┬────┬──────────┐
│ (index) │ 0 │ Values │
├─────────┼────┼──────────┤
│ a │ │ 1 │
│ b │ │ Symbol() │
│ c │ 10 │ │
└─────────┴────┴──────────┘
`);
test(new Map([ ['a', 1], [Symbol(), [2]] ]), `
┌───────────────────┬──────────┬────────┐
│ (iteration index) │ Key │ Values │
├───────────────────┼──────────┼────────┤
│ 0 │ 'a' │ 1 │
│ 1 │ Symbol() │ [ 2 ] │
└───────────────────┴──────────┴────────┘
`);
test(new Set([1, 2, Symbol()]), `
┌───────────────────┬──────────┐
│ (iteration index) │ Values │
├───────────────────┼──────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ Symbol() │
└───────────────────┴──────────┘
`);
test({ a: 1, b: 2 }, ['a'], `
┌─────────┬───┐
│ (index) │ a │
├─────────┼───┤
│ a │ │
│ b │ │
└─────────┴───┘
`);
test([{ a: 1, b: 2 }, { a: 3, c: 4 }], ['a'], `
┌─────────┬───┐
│ (index) │ a │
├─────────┼───┤
│ 0 │ 1 │
│ 1 │ 3 │
└─────────┴───┘
`);
test(new Map([[1, 1], [2, 2], [3, 3]]).entries(), `
┌───────────────────┬─────┬────────┐
│ (iteration index) │ Key │ Values │
├───────────────────┼─────┼────────┤
│ 0 │ 1 │ 1 │
│ 1 │ 2 │ 2 │
│ 2 │ 3 │ 3 │
└───────────────────┴─────┴────────┘
`);
test(new Set([1, 2, 3]).values(), `
┌───────────────────┬────────┐
│ (iteration index) │ Values │
├───────────────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
└───────────────────┴────────┘
`);
test({ a: { a: 1, b: 2, c: 3 } }, `
┌─────────┬───┬───┬───┐
│ (index) │ a │ b │ c │
├─────────┼───┼───┼───┤
│ a │ 1 │ 2 │ 3 │
└─────────┴───┴───┴───┘
`);
test({ a: [1, 2] }, `
┌─────────┬───┬───┐
│ (index) │ 0 │ 1 │
├─────────┼───┼───┤
│ a │ 1 │ 2 │
└─────────┴───┴───┘
`);
test({ a: [1, 2, 3, 4, 5], b: 5, c: { e: 5 } }, `
┌─────────┬───┬───┬───┬───┬───┬───┬────────┐
│ (index) │ 0 │ 1 │ 2 │ 3 │ 4 │ e │ Values │
├─────────┼───┼───┼───┼───┼───┼───┼────────┤
│ a │ 1 │ 2 │ 3 │ 4 │ 5 │ │ │
│ b │ │ │ │ │ │ │ 5 │
│ c │ │ │ │ │ │ 5 │ │
└─────────┴───┴───┴───┴───┴───┴───┴────────┘
`);
test(new Uint8Array([1, 2, 3]), `
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
└─────────┴────────┘
`);
test(Buffer.from([1, 2, 3]), `
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
└─────────┴────────┘
`);
test({ a: undefined }, ['x'], `
┌─────────┬───┐
│ (index) │ x │
├─────────┼───┤
│ a │ │
└─────────┴───┘
`);
test([], `
┌─────────┐
│ (index) │
├─────────┤
└─────────┘
`);
test(new Map(), `
┌───────────────────┬─────┬────────┐
│ (iteration index) │ Key │ Values │
├───────────────────┼─────┼────────┤
└───────────────────┴─────┴────────┘
`);
test([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], `
┌─────────┬─────┬─────┐
│ (index) │ a │ b │
├─────────┼─────┼─────┤
│ 0 │ 1 │ 'Y' │
│ 1 │ 'Z' │ 2 │
└─────────┴─────┴─────┘
`);