summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2017-12-09 05:27:21 -0200
committerRuben Bridgewater <ruben@bridgewater.de>2017-12-21 03:45:25 -0300
commitc2203cb4dd240a6644177f04d0b40f40090b4c33 (patch)
tree9e31254f84b72f5fb05178dcc30db112d507f8a5 /test
parent2d374916ebbaaa83aaf68577b75d41c6bb6ca9b8 (diff)
downloadnode-new-c2203cb4dd240a6644177f04d0b40f40090b4c33.tar.gz
util: add util.inspect compact option
The current default formatting is not ideal and this improves the situation by formatting the output more intuitiv. 1) All object keys are now indented by 2 characters instead of sometimes 2 and sometimes 3 characters. 2) Each object key will now use an individual line instead of sharing a line potentially with multiple object keys. 3) Long strings will now be split into multiple lines in case they exceed the "lineBreak" option length (including the current indentation). 4) Opening braces are now directly behind a object property instead of using a new line. 5) Switch inspect "base" order. In case the compact option is set to `false`, inspect will now print "[Function: foo] {\n property: 'data'\n}" instead of "{ [Function: foo]\n property: 'data'\n}". PR-URL: https://github.com/nodejs/node/pull/17576 Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-util-inspect.js137
1 files changed, 137 insertions, 0 deletions
diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js
index 0cc603d91f..335ba09bd7 100644
--- a/test/parallel/test-util-inspect.js
+++ b/test/parallel/test-util-inspect.js
@@ -1213,3 +1213,140 @@ assert.doesNotThrow(() => util.inspect(process));
assert.strictEqual(util.inspect(new NotStringClass()),
'NotStringClass {}');
}
+
+{
+ const o = {
+ a: [1, 2, [[
+ 'Lorem ipsum dolor\nsit amet,\tconsectetur adipiscing elit, sed do ' +
+ 'eiusmod tempor incididunt ut labore et dolore magna aliqua.',
+ 'test',
+ 'foo']], 4],
+ b: new Map([['za', 1], ['zb', 'test']])
+ };
+
+ let out = util.inspect(o, { compact: true, depth: 5, breakLength: 80 });
+ let expect = [
+ '{ a: ',
+ ' [ 1,',
+ ' 2,',
+ " [ [ 'Lorem ipsum dolor\\nsit amet,\\tconsectetur adipiscing elit, " +
+ "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',",
+ " 'test',",
+ " 'foo' ] ],",
+ ' 4 ],',
+ " b: Map { 'za' => 1, 'zb' => 'test' } }",
+ ].join('\n');
+ assert.strictEqual(out, expect);
+
+ out = util.inspect(o, { compact: false, depth: 5, breakLength: 60 });
+ expect = [
+ '{',
+ ' a: [',
+ ' 1,',
+ ' 2,',
+ ' [',
+ ' [',
+ ' \'Lorem ipsum dolor\\nsit amet,\\tconsectetur \' +',
+ ' \'adipiscing elit, sed do eiusmod tempor \' +',
+ ' \'incididunt ut labore et dolore magna \' +',
+ ' \'aliqua.\',',
+ ' \'test\',',
+ ' \'foo\'',
+ ' ]',
+ ' ],',
+ ' 4',
+ ' ],',
+ ' b: Map {',
+ ' \'za\' => 1,',
+ ' \'zb\' => \'test\'',
+ ' }',
+ '}'
+ ].join('\n');
+ assert.strictEqual(out, expect);
+
+ out = util.inspect(o.a[2][0][0], { compact: false, breakLength: 30 });
+ expect = [
+ '\'Lorem ipsum dolor\\nsit \' +',
+ ' \'amet,\\tconsectetur \' +',
+ ' \'adipiscing elit, sed do \' +',
+ ' \'eiusmod tempor incididunt \' +',
+ ' \'ut labore et dolore magna \' +',
+ ' \'aliqua.\''
+ ].join('\n');
+ assert.strictEqual(out, expect);
+
+ out = util.inspect(
+ '12345678901234567890123456789012345678901234567890',
+ { compact: false, breakLength: 3 });
+ expect = '\'12345678901234567890123456789012345678901234567890\'';
+ assert.strictEqual(out, expect);
+
+ out = util.inspect(
+ '12 45 78 01 34 67 90 23 56 89 123456789012345678901234567890',
+ { compact: false, breakLength: 3 });
+ expect = [
+ '\'12 45 78 01 34 \' +',
+ ' \'67 90 23 56 89 \' +',
+ ' \'123456789012345678901234567890\''
+ ].join('\n');
+ assert.strictEqual(out, expect);
+
+ out = util.inspect(
+ '12 45 78 01 34 67 90 23 56 89 1234567890123 0',
+ { compact: false, breakLength: 3 });
+ expect = [
+ '\'12 45 78 01 34 \' +',
+ ' \'67 90 23 56 89 \' +',
+ ' \'1234567890123 0\''
+ ].join('\n');
+ assert.strictEqual(out, expect);
+
+ out = util.inspect(
+ '12 45 78 01 34 67 90 23 56 89 12345678901234567 0',
+ { compact: false, breakLength: 3 });
+ expect = [
+ '\'12 45 78 01 34 \' +',
+ ' \'67 90 23 56 89 \' +',
+ ' \'12345678901234567 \' +',
+ ' \'0\''
+ ].join('\n');
+ assert.strictEqual(out, expect);
+
+ o.a = () => {};
+ o.b = new Number(3);
+ out = util.inspect(o, { compact: false, breakLength: 3 });
+ expect = [
+ '{',
+ ' a: [Function],',
+ ' b: [Number: 3]',
+ '}'
+ ].join('\n');
+ assert.strictEqual(out, expect);
+
+ out = util.inspect(o, { compact: false, breakLength: 3, showHidden: true });
+ expect = [
+ '{',
+ ' a: [Function] {',
+ ' [length]: 0,',
+ " [name]: ''",
+ ' },',
+ ' b: [Number: 3]',
+ '}'
+ ].join('\n');
+ assert.strictEqual(out, expect);
+
+ o[util.inspect.custom] = () => 42;
+ out = util.inspect(o, { compact: false, breakLength: 3 });
+ expect = '42';
+ assert.strictEqual(out, expect);
+
+ o[util.inspect.custom] = () => '12 45 78 01 34 67 90 23';
+ out = util.inspect(o, { compact: false, breakLength: 3 });
+ expect = '12 45 78 01 34 67 90 23';
+ assert.strictEqual(out, expect);
+
+ o[util.inspect.custom] = () => ({ a: '12 45 78 01 34 67 90 23' });
+ out = util.inspect(o, { compact: false, breakLength: 3 });
+ expect = '{\n a: \'12 45 78 01 34 \' +\n \'67 90 23\'\n}';
+ assert.strictEqual(out, expect);
+}