Skip to content

Commit

Permalink
test: check null proto-of-proto in util.inspect()
Browse files Browse the repository at this point in the history
Add a test to check util.inspect()'s handling of a null
prototype-of-an-iterable-prototype. This covers a previously uncovered
code branch.

Refs: https://coverage.nodejs.org/coverage-0fd121e00c9d5987/lib/internal/util/inspect.js.html#L597

PR-URL: #36399
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
Trott authored and targos committed Dec 21, 2020
1 parent d3d1f33 commit 023291b
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions test/parallel/test-util-inspect.js
Original file line number Diff line number Diff line change
Expand Up @@ -3011,3 +3011,35 @@ assert.strictEqual(
'}'
);
}

{
// Confirm null prototype of generator prototype displays as expected.

function getProtoOfProto() {
return Object.getPrototypeOf(Object.getPrototypeOf(function* () {}));
}

function* generator() {}

const generatorPrototype = Object.getPrototypeOf(generator);
const originalProtoOfProto = Object.getPrototypeOf(generatorPrototype);
assert.strictEqual(getProtoOfProto(), originalProtoOfProto);
Object.setPrototypeOf(generatorPrototype, null);
assert.notStrictEqual(getProtoOfProto, originalProtoOfProto);

// This is the actual test. The other assertions in this block are about
// making sure the test is set up correctly and isn't polluting other tests.
assert.strictEqual(
util.inspect(generator, { showHidden: true }),
'[GeneratorFunction: generator] {\n' +
' [length]: 0,\n' +
" [name]: 'generator',\n" +
" [prototype]: Object [Generator] { [Symbol(Symbol.toStringTag)]: 'Generator' },\n" + // eslint-disable-line max-len
" [Symbol(Symbol.toStringTag)]: 'GeneratorFunction'\n" +
'}'
);

// Reset so we don't pollute other tests
Object.setPrototypeOf(generatorPrototype, originalProtoOfProto);
assert.strictEqual(getProtoOfProto(), originalProtoOfProto);
}

0 comments on commit 023291b

Please sign in to comment.