diff --git a/test/parallel/test-querystring.js b/test/parallel/test-querystring.js index 04034377fe..3f397577df 100644 --- a/test/parallel/test-querystring.js +++ b/test/parallel/test-querystring.js @@ -1,6 +1,7 @@ 'use strict'; require('../common'); const assert = require('assert'); +const inspect = require('util').inspect; // test using assert const qs = require('querystring'); @@ -126,28 +127,43 @@ assert.strictEqual('918854443121279438895193', qs.parse('id=918854443121279438895193').id); -function check(actual, expected) { +function check(actual, expected, input) { assert(!(actual instanceof Object)); - assert.deepStrictEqual(Object.keys(actual).sort(), - Object.keys(expected).sort()); - Object.keys(expected).forEach(function(key) { - assert.deepStrictEqual(actual[key], expected[key]); + const actualKeys = Object.keys(actual).sort(); + const expectedKeys = Object.keys(expected).sort(); + let msg; + if (typeof input === 'string') { + msg = `Input: ${inspect(input)}\n` + + `Actual keys: ${inspect(actualKeys)}\n` + + `Expected keys: ${inspect(expectedKeys)}`; + } + assert.deepStrictEqual(actualKeys, expectedKeys, msg); + expectedKeys.forEach(function(key) { + if (typeof input === 'string') { + msg = `Input: ${inspect(input)}\n` + + `Key: ${inspect(key)}\n` + + `Actual value: ${inspect(actual[key])}\n` + + `Expected value: ${inspect(expected[key])}`; + } else { + msg = undefined; + } + assert.deepStrictEqual(actual[key], expected[key], msg); }); } // test that the canonical qs is parsed properly. qsTestCases.forEach(function(testCase) { - check(qs.parse(testCase[0]), testCase[2]); + check(qs.parse(testCase[0]), testCase[2], testCase[0]); }); // test that the colon test cases can do the same qsColonTestCases.forEach(function(testCase) { - check(qs.parse(testCase[0], ';', ':'), testCase[2]); + check(qs.parse(testCase[0], ';', ':'), testCase[2], testCase[0]); }); // test the weird objects, that they get parsed properly qsWeirdObjects.forEach(function(testCase) { - check(qs.parse(testCase[1]), testCase[2]); + check(qs.parse(testCase[1]), testCase[2], testCase[1]); }); qsNoMungeTestCases.forEach(function(testCase) {