Files

20 lines
864 B
TypeScript

import { describe, expect, it } from "@effect/vitest"
import { Duration, Effect, Exit, Scope } from "effect"
import { TestClock } from "effect/testing"
describe("Scope", () => {
describe("parallel finalization", () => {
it.effect("executes finalizers in parallel", () =>
Effect.gen(function*() {
const scope = Scope.makeUnsafe("parallel")
yield* Scope.addFinalizer(scope, Effect.sleep(Duration.seconds(1)))
yield* Scope.addFinalizer(scope, Effect.sleep(Duration.seconds(1)))
yield* Scope.addFinalizer(scope, Effect.sleep(Duration.seconds(1)))
const fiber = yield* Effect.forkChild(Scope.close(scope, Exit.void), { startImmediately: true })
expect(fiber.pollUnsafe()).toBeUndefined()
yield* TestClock.adjust(Duration.seconds(1))
expect(fiber.pollUnsafe()).toBeDefined()
}))
})
})