diff options
author | Liam Murphy <43807659+Liamolucko@users.noreply.github.com> | 2021-01-26 23:34:40 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-26 13:34:40 +0100 |
commit | 06bd692e5c4a8f66960d3919e7087530b60c20dd (patch) | |
tree | 54da22655c71341c0e1e750d5197623e4fa0e286 /std/node/_crypto/randomBytes_test.ts | |
parent | f9949a31707dcaa5a8786bfe4f84ed202be91607 (diff) |
fix(std/node): Stop callbacks being called twice when callback throws error (#8867)
Diffstat (limited to 'std/node/_crypto/randomBytes_test.ts')
-rw-r--r-- | std/node/_crypto/randomBytes_test.ts | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/std/node/_crypto/randomBytes_test.ts b/std/node/_crypto/randomBytes_test.ts index 701127dce..6dd2091e1 100644 --- a/std/node/_crypto/randomBytes_test.ts +++ b/std/node/_crypto/randomBytes_test.ts @@ -1,4 +1,11 @@ -import { assert, assertEquals, assertThrows } from "../../testing/asserts.ts"; +import { + assert, + assertEquals, + assertStringIncludes, + assertThrows, + assertThrowsAsync, +} from "../../testing/asserts.ts"; +import { assertCallbackErrorUncaught } from "../_utils.ts"; import randomBytes, { MAX_RANDOM_VALUES, MAX_SIZE } from "./randomBytes.ts"; Deno.test("randomBytes sync works correctly", function () { @@ -59,10 +66,24 @@ Deno.test("randomBytes async works correctly", function () { assert(!err); }) ); - assertThrows(() => - randomBytes(-1, function (err) { - //Shouldn't throw async - assert(!err); + assertThrowsAsync(() => + new Promise((resolve, reject) => { + randomBytes(-1, function (err, res) { + //Shouldn't throw async + if (err) { + reject(err); + } else { + resolve(res); + } + }); }) ); }); + +Deno.test("[std/node/crypto] randomBytes callback isn't called twice if error is thrown", async () => { + const importUrl = new URL("./randomBytes.ts", import.meta.url); + await assertCallbackErrorUncaught({ + prelude: `import randomBytes from ${JSON.stringify(importUrl)}`, + invocation: "randomBytes(0, ", + }); +}); |