20 lines
864 B
TypeScript
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()
|
|
}))
|
|
})
|
|
})
|