diff options
| author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2021-01-22 11:45:29 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-22 20:45:29 +0900 |
| commit | 1518fabfbba3cb951357f7c7977d6346943a9a8f (patch) | |
| tree | 027b0f2b43b8caf62d34a52c8fe4bf6f9bb1e3c7 /std/async/pool_test.ts | |
| parent | 1a9209d1e3ed297c96a698550ab833c54c02a4ee (diff) | |
fix(std/async): make pooledMap() errors catchable (#9217)
Diffstat (limited to 'std/async/pool_test.ts')
| -rw-r--r-- | std/async/pool_test.ts | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/std/async/pool_test.ts b/std/async/pool_test.ts index 856f4cc0a..81be903ed 100644 --- a/std/async/pool_test.ts +++ b/std/async/pool_test.ts @@ -1,6 +1,12 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { delay } from "./delay.ts"; import { pooledMap } from "./pool.ts"; -import { assert } from "../testing/asserts.ts"; +import { + assert, + assertEquals, + assertStringIncludes, + assertThrowsAsync, +} from "../testing/asserts.ts"; Deno.test("[async] pooledMap", async function (): Promise<void> { const start = new Date(); @@ -17,4 +23,22 @@ Deno.test("[async] pooledMap", async function (): Promise<void> { assert(diff < 3000); }); -export {}; +Deno.test("[async] pooledMap errors", async function (): Promise<void> { + async function mapNumber(n: number): Promise<number> { + if (n <= 2) { + throw new Error(`Bad number: ${n}`); + } + await delay(100); + return n; + } + const mappedNumbers: number[] = []; + const error = await assertThrowsAsync(async () => { + for await (const m of pooledMap(3, [1, 2, 3, 4], mapNumber)) { + mappedNumbers.push(m); + } + }, AggregateError) as AggregateError; + assertEquals(mappedNumbers, [3]); + assertEquals(error.errors.length, 2); + assertStringIncludes(error.errors[0].stack, "Error: Bad number: 1"); + assertStringIncludes(error.errors[1].stack, "Error: Bad number: 2"); +}); |
