url, test: fix typo in inspect output, add test
In the string returned from URL.inspect there was an extra semicolon at the end when showHidden === true. The semicolon has been removed and a test for the inspect function has been added. The test parses the returned string, validates all of the contained keys/values and tests logic related to the showHidden option. PR-URL: https://github.com/nodejs/node/pull/10231 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
This commit is contained in:
parent
9e92817119
commit
4f97a146ff
@ -449,7 +449,7 @@ class URL {
|
|||||||
ret += ` hash: ${this.hash}\n`;
|
ret += ` hash: ${this.hash}\n`;
|
||||||
if (opts.showHidden) {
|
if (opts.showHidden) {
|
||||||
ret += ` cannot-be-base: ${this[cannotBeBase]}\n`;
|
ret += ` cannot-be-base: ${this[cannotBeBase]}\n`;
|
||||||
ret += ` special: ${this[special]}\n;`;
|
ret += ` special: ${this[special]}\n`;
|
||||||
}
|
}
|
||||||
ret += '}';
|
ret += '}';
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -127,3 +127,71 @@ additional_tests.forEach((test) => {
|
|||||||
if (test.search) assert.strictEqual(test.search, u.search);
|
if (test.search) assert.strictEqual(test.search, u.search);
|
||||||
if (test.hash) assert.strictEqual(test.hash, u.hash);
|
if (test.hash) assert.strictEqual(test.hash, u.hash);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// test inspect
|
||||||
|
const allTests = additional_tests.slice();
|
||||||
|
for (const test of tests) {
|
||||||
|
if (test.failure || typeof test === 'string') continue;
|
||||||
|
allTests.push(test);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const test of allTests) {
|
||||||
|
const url = test.url
|
||||||
|
? new URL(test.url)
|
||||||
|
: new URL(test.input, test.base);
|
||||||
|
|
||||||
|
for (const showHidden of [true, false]) {
|
||||||
|
const res = url.inspect(null, {
|
||||||
|
showHidden: showHidden
|
||||||
|
});
|
||||||
|
|
||||||
|
const lines = res.split('\n');
|
||||||
|
|
||||||
|
const firstLine = lines[0];
|
||||||
|
assert.strictEqual(firstLine, 'URL {');
|
||||||
|
|
||||||
|
const lastLine = lines[lines.length - 1];
|
||||||
|
assert.strictEqual(lastLine, '}');
|
||||||
|
|
||||||
|
const innerLines = lines.slice(1, lines.length - 1);
|
||||||
|
const keys = new Set();
|
||||||
|
for (const line of innerLines) {
|
||||||
|
const i = line.indexOf(': ');
|
||||||
|
const k = line.slice(0, i).trim();
|
||||||
|
const v = line.slice(i + 2);
|
||||||
|
assert.strictEqual(keys.has(k), false, 'duplicate key found: ' + k);
|
||||||
|
keys.add(k);
|
||||||
|
|
||||||
|
const hidden = new Set([
|
||||||
|
'password',
|
||||||
|
'cannot-be-base',
|
||||||
|
'special'
|
||||||
|
]);
|
||||||
|
if (showHidden) {
|
||||||
|
if (!hidden.has(k)) {
|
||||||
|
assert.strictEqual(v, url[k], k);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (k === 'password') {
|
||||||
|
assert.strictEqual(v, url[k], k);
|
||||||
|
}
|
||||||
|
if (k === 'cannot-be-base') {
|
||||||
|
assert.ok(v.match(/^true$|^false$/), k + ' is Boolean');
|
||||||
|
}
|
||||||
|
if (k === 'special') {
|
||||||
|
assert.ok(v.match(/^true$|^false$/), k + ' is Boolean');
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// showHidden is false
|
||||||
|
if (k === 'password') {
|
||||||
|
assert.strictEqual(v, '--------', k);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
assert.strictEqual(hidden.has(k), false, 'no hidden keys: ' + k);
|
||||||
|
assert.strictEqual(v, url[k], k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user