diff options
author | Marvin Hagemeister <marvin@deno.com> | 2024-07-08 21:28:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-08 21:28:39 +0200 |
commit | b338b541ac828113667fdd24c18db97d3e47c282 (patch) | |
tree | 8906e1d917dc5cd5af331a3c9be651820743899c /ext/node | |
parent | 86010bec092d074b161800da06149cfb79fb9f4b (diff) |
fix(node/assert): throws not checking error instance (#24466)
The implementation for `assert.throws()` from `node:assert` didn't work
when the expected value was an `Error` constructor. In this case the
thrown error should checked if it's an instance of said constructor.
Fixes https://github.com/denoland/deno/issues/24464
Diffstat (limited to 'ext/node')
-rw-r--r-- | ext/node/polyfills/assert.ts | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ext/node/polyfills/assert.ts b/ext/node/polyfills/assert.ts index 3d7660487..00677e3f7 100644 --- a/ext/node/polyfills/assert.ts +++ b/ext/node/polyfills/assert.ts @@ -17,6 +17,9 @@ import { ERR_MISSING_ARGS, } from "ext:deno_node/internal/errors.ts"; import { isDeepEqual } from "ext:deno_node/internal/util/comparisons.ts"; +import { primordials } from "ext:core/mod.js"; + +const { ObjectPrototypeIsPrototypeOf } = primordials; function innerFail(obj: { actual?: unknown; @@ -744,8 +747,8 @@ function validateThrownError( error = undefined; } if ( - error instanceof Function && error.prototype !== undefined && - error.prototype instanceof Error + typeof error === "function" && + (error === Error || ObjectPrototypeIsPrototypeOf(Error, error)) ) { // error is a constructor if (e instanceof error) { |