From d949eadc385fcb3f1fa48dc8ed0f2c524eae1083 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 14 Jun 2019 15:19:34 -0700 Subject: [PATCH] test: check custom inspection truncation in assert The assert module has some truncation logic in a custom inspect function. This was not covered in tests. Add tests to cover it. PR-URL: https://github.com/nodejs/node/pull/28234 Reviewed-By: Ruben Bridgewater Reviewed-By: Daniel Bevenius --- test/parallel/test-assert.js | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index 376b4a8011e84c..657b8b9c1bf8d7 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -412,12 +412,33 @@ assert.throws(() => { throw new Error(); }, (err) => err instanceof Error); // Long values should be truncated for display. assert.throws(() => { assert.strictEqual('A'.repeat(1000), ''); -}, { - code: 'ERR_ASSERTION', - message: `${strictEqualMessageStart}+ actual - expected\n\n` + - `+ '${'A'.repeat(1000)}'\n- ''` +}, (err) => { + assert.strictEqual(err.code, 'ERR_ASSERTION'); + assert.strictEqual(err.message, + `${strictEqualMessageStart}+ actual - expected\n\n` + + `+ '${'A'.repeat(1000)}'\n- ''`); + assert.strictEqual(err.actual.length, 1000); + assert.ok(inspect(err).includes(`actual: '${'A'.repeat(488)}...'`)); + return true; }); +// Output that extends beyond 10 lines should also be truncated for display. +{ + const multilineString = 'fhqwhgads\n'.repeat(15); + assert.throws(() => { + assert.strictEqual(multilineString, ''); + }, (err) => { + assert.strictEqual(err.code, 'ERR_ASSERTION'); + assert.strictEqual(err.message.split('\n').length, 19); + assert.strictEqual(err.actual.split('\n').length, 16); + assert.ok(inspect(err).includes( + "actual: 'fhqwhgads\\n' +\n" + + " 'fhqwhgads\\n' +\n".repeat(9) + + " '...'")); + return true; + }); +} + { // Bad args to AssertionError constructor should throw TypeError. const args = [1, true, false, '', null, Infinity, Symbol('test'), undefined];