diff --git a/test/fixtures/util/util-inspect-error-cause.js b/test/fixtures/util/util-inspect-error-cause.js new file mode 100644 index 00000000000000..a6f3f07d1a69ab --- /dev/null +++ b/test/fixtures/util/util-inspect-error-cause.js @@ -0,0 +1,31 @@ +'use strict'; + +const { inspect } = require('util'); + +class FoobarError extends Error { + status = 'Feeling good'; +} + +const cause1 = new TypeError('Inner error'); +const cause2 = new FoobarError('Individual message', { cause: cause1 }); +cause2.extraProperties = 'Yes!'; +const cause3 = new Error('Stack causes', { cause: cause2 }); + +const cause4 = new Error('Number error cause', { cause: 42 }); +const cause5 = new Error('Object cause', { + cause: { + message: 'Unique', + name: 'Error', + stack: 'Error: Unique\n' + + ' at Module._compile (node:internal/modules/cjs/loader:827:30)', + }, +}); +const cause6 = new Error('undefined cause', { + cause: undefined, +}); + +console.log(cause4); +console.log(cause5); +console.log(cause6); +console.log(cause3); +console.log(inspect(cause3, { compact: false, breakLength: Infinity })); diff --git a/test/fixtures/util/util-inspect-error-cause.snapshot b/test/fixtures/util/util-inspect-error-cause.snapshot new file mode 100644 index 00000000000000..4d0448a0ec8d18 --- /dev/null +++ b/test/fixtures/util/util-inspect-error-cause.snapshot @@ -0,0 +1,34 @@ +Error: Number error cause + at Object. (/test/fixtures/util/util-inspect-error-cause.js:14:16) + at { + [cause]: 42 +} +Error: Object cause + at Object. (/test/fixtures/util/util-inspect-error-cause.js:15:16) + at { + [cause]: { + message: 'Unique', + name: 'Error', + stack: 'Error: Unique\n' + + ' at Module._compile (node:internal/modules/cjs/loader:827:30)' + } +} +Error: undefined cause + at Object. (/test/fixtures/util/util-inspect-error-cause.js:24:16) + at { + [cause]: undefined +} +Error: Stack causes + at Object. (/test/fixtures/util/util-inspect-error-cause.js:12:16) + at { + [cause]: FoobarError: Individual message + at Object. (/test/fixtures/util/util-inspect-error-cause.js:10:16) + ... 5 lines matching cause stack trace ... + at { + status: 'Feeling good', + extraProperties: 'Yes!', + [cause]: TypeError: Inner error + at Object. (/test/fixtures/util/util-inspect-error-cause.js:9:16) + at + } +} diff --git a/test/message/util_inspect_error.js b/test/fixtures/util/util_inspect_error.js similarity index 93% rename from test/message/util_inspect_error.js rename to test/fixtures/util/util_inspect_error.js index 20affd6c711fd8..65a2912c1559a8 100644 --- a/test/message/util_inspect_error.js +++ b/test/fixtures/util/util_inspect_error.js @@ -1,6 +1,5 @@ 'use strict'; -require('../common'); const util = require('util'); const err = new Error('foo\nbar'); diff --git a/test/fixtures/util/util_inspect_error.snapshot b/test/fixtures/util/util_inspect_error.snapshot new file mode 100644 index 00000000000000..80387b887b3029 --- /dev/null +++ b/test/fixtures/util/util_inspect_error.snapshot @@ -0,0 +1,28 @@ +{ err: + Error: foo + bar + at Object. (/test/fixtures/util/util_inspect_error.js:5:13) + at , + nested: + { err: + Error: foo + bar + at Object. (/test/fixtures/util/util_inspect_error.js:5:13) + at } } +{ + err: Error: foo + bar + at Object. (/test/fixtures/util/util_inspect_error.js:5:13) + at , + nested: { + err: Error: foo + bar + at Object. (/test/fixtures/util/util_inspect_error.js:5:13) + at + } +} +{ Error: foo + bar + at Object. (/test/fixtures/util/util_inspect_error.js:5:13) + at + foo: 'bar' } diff --git a/test/message/util-inspect-error-cause.js b/test/message/util-inspect-error-cause.js deleted file mode 100644 index ed9d8230fe0c40..00000000000000 --- a/test/message/util-inspect-error-cause.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -require('../common'); - -const { inspect } = require('util'); - -class FoobarError extends Error { - status = 'Feeling good'; -} - -const cause1 = new TypeError('Inner error'); -const cause2 = new FoobarError('Individual message', { cause: cause1 }); -cause2.extraProperties = 'Yes!'; -const cause3 = new Error('Stack causes', { cause: cause2 }); - -const cause4 = new Error('Number error cause', { cause: 42 }); -const cause5 = new Error('Object cause', { - cause: { - message: 'Unique', - name: 'Error', - stack: 'Error: Unique\n' + - ' at Module._compile (node:internal/modules/cjs/loader:827:30)', - }, -}); -const cause6 = new Error('undefined cause', { - cause: undefined, -}); - -console.log(cause4); -console.log(cause5); -console.log(cause6); - -process.nextTick(() => { - const error = new RangeError('New Stack Frames', { cause: cause2 }); - const error2 = new RangeError('New Stack Frames', { cause: cause3 }); - - inspect.defaultOptions.colors = true; - - console.log(inspect(error)); - console.log(inspect(cause3)); - console.log(inspect(error2)); - - inspect.defaultOptions.colors = false; - - console.log(inspect(error)); - console.log(inspect(cause3)); - console.log(inspect(error2)); -}); - -{ - const error = new Error('cause that throws'); - Reflect.defineProperty(error, 'cause', { get() { throw new Error(); } }); - console.log(inspect(error)); -} diff --git a/test/message/util-inspect-error-cause.out b/test/message/util-inspect-error-cause.out deleted file mode 100644 index 344ace1bc94074..00000000000000 --- a/test/message/util-inspect-error-cause.out +++ /dev/null @@ -1,191 +0,0 @@ -Error: Number error cause - at * - at * - at * - at * - at * - at * - at * - at * { - [cause]: 42 -} -Error: Object cause - at * - at * - at * - at * - at * - at * - at * - at * { - [cause]: { - message: 'Unique', - name: 'Error', - stack: 'Error: Unique\n' + - ' at Module._compile (node:internal/modules/cjs/loader:827:30)' - } -} -Error: undefined cause - at * - at * - at * - at * - at * - at * - at * - at * { - [cause]: undefined -} -Error: cause that throws - at * - at * - at * - at * - at * - at * - at * - at * { - [cause]: [Getter] -} -RangeError: New Stack Frames - at * -*[90m at *[39m { - [cause]: FoobarError: Individual message - at * - *[90m at *[39m - *[90m ... 5 lines matching cause stack trace ...*[39m - *[90m at *[39m { - status: *[32m'Feeling good'*[39m, - extraProperties: *[32m'Yes!'*[39m, - [cause]: TypeError: Inner error - at * - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - } -} -Error: Stack causes - at * -*[90m at *[39m -*[90m ... 5 lines matching cause stack trace ...*[39m -*[90m at *[39m { - [cause]: FoobarError: Individual message - at * - *[90m at *[39m - *[90m ... 5 lines matching cause stack trace ...*[39m - *[90m at *[39m { - status: *[32m'Feeling good'*[39m, - extraProperties: *[32m'Yes!'*[39m, - [cause]: TypeError: Inner error - at * - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - } -} -RangeError: New Stack Frames - at * -*[90m at *[39m { - [cause]: Error: Stack causes - at * - *[90m at *[39m - *[90m ... 5 lines matching cause stack trace ...*[39m - *[90m at *[39m { - [cause]: FoobarError: Individual message - at * - *[90m at *[39m - *[90m ... 5 lines matching cause stack trace ...*[39m - *[90m at *[39m { - status: *[32m'Feeling good'*[39m, - extraProperties: *[32m'Yes!'*[39m, - [cause]: TypeError: Inner error - at * - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - *[90m at *[39m - } - } -} -RangeError: New Stack Frames - at * - at * { - [cause]: FoobarError: Individual message - at * - at * - ... 5 lines matching cause stack trace ... - at * { - status: 'Feeling good', - extraProperties: 'Yes!', - [cause]: TypeError: Inner error - at * - at * - at * - at * - at * - at * - at * - at * - } -} -Error: Stack causes - at * - at * - ... 5 lines matching cause stack trace ... - at * { - [cause]: FoobarError: Individual message - at * - at * - ... 5 lines matching cause stack trace ... - at * - status: 'Feeling good', - extraProperties: 'Yes!', - [cause]: TypeError: Inner error - at * - at * - at * - at * - at * - at * - at * - at * - } -} -RangeError: New Stack Frames - at * - at * { - [cause]: Error: Stack causes - at * - at * - ... 5 lines matching cause stack trace ... - at * { - [cause]: FoobarError: Individual message - at * - at * - ... 5 lines matching cause stack trace ... - at * { - status: 'Feeling good', - extraProperties: 'Yes!', - [cause]: TypeError: Inner error - at * - at * - at * - at * - at * - at * - at * - at * - } - } -} diff --git a/test/message/util_inspect_error.out b/test/message/util_inspect_error.out deleted file mode 100644 index 31b65eb2e2bf3c..00000000000000 --- a/test/message/util_inspect_error.out +++ /dev/null @@ -1,58 +0,0 @@ -{ err: - Error: foo - bar - at *util_inspect_error* - at * - at * - at * - at * - at * - at * - at * - nested: - { err: - Error: foo - bar - at *util_inspect_error* - at * - at * - at * - at * - at * - at * - at * -{ - err: Error: foo - bar - at *util_inspect_error* - at * - at * - at * - at * - at * - at * - at * - nested: { - err: Error: foo - bar - at *util_inspect_error* - at * - at * - at * - at * - at * - at * - at * - } -} -{ Error: foo -bar - at *util_inspect_error* - at * - at * - at * - at * - at * - at * - at * - foo: 'bar' } diff --git a/test/parallel/test-node-output-util.mjs b/test/parallel/test-node-output-util.mjs new file mode 100644 index 00000000000000..193453517c83ea --- /dev/null +++ b/test/parallel/test-node-output-util.mjs @@ -0,0 +1,16 @@ +import * as fixtures from '../common/fixtures.mjs'; +import * as snapshot from '../common/assertSnapshot.js'; +import { describe, it } from 'node:test'; + +describe('util output', { concurrency: !process.env.TEST_PARALLEL }, () => { + const tests = [ + { name: 'util/util_inspect_error.js', transform: snapshot.defaultTransform }, + { name: 'util/util-inspect-error-cause.js', transform: snapshot.defaultTransform }, + ]; + + for (const { name, transform } of tests) { + it(name, async () => { + await snapshot.spawnAndAssert(fixtures.path(name), transform); + }); + } +});