diff options
| author | Kit Langton <[email protected]> | 2026-04-30 13:05:10 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-30 17:05:10 +0000 |
| commit | f384675c01a44a2516437d9be1bfd25493869ac7 (patch) | |
| tree | 15aa0bebb6089713c093c340f290463720af8f68 | |
| parent | ec3ab4a00cba54b8aded49996c3539037b4e2622 (diff) | |
| download | opencode-f384675c01a44a2516437d9be1bfd25493869ac7.tar.gz opencode-f384675c01a44a2516437d9be1bfd25493869ac7.zip | |
test: use Effect test helper for run-service (#25048)
| -rw-r--r-- | packages/opencode/test/effect/run-service.test.ts | 75 |
1 files changed, 39 insertions, 36 deletions
diff --git a/packages/opencode/test/effect/run-service.test.ts b/packages/opencode/test/effect/run-service.test.ts index b5f1a1d09..e9baf8853 100644 --- a/packages/opencode/test/effect/run-service.test.ts +++ b/packages/opencode/test/effect/run-service.test.ts @@ -1,46 +1,49 @@ -import { expect, test } from "bun:test" +import { expect } from "bun:test" import { Effect, Layer, Context } from "effect" import { makeRuntime } from "../../src/effect/run-service" +import { it } from "../lib/effect" class Shared extends Context.Service<Shared, { readonly id: number }>()("@test/Shared") {} -test("makeRuntime shares dependent layers through the shared memo map", async () => { - let n = 0 +it.live("makeRuntime shares dependent layers through the shared memo map", () => + Effect.gen(function* () { + let n = 0 - const shared = Layer.effect( - Shared, - Effect.sync(() => { - n += 1 - return Shared.of({ id: n }) - }), - ) + const shared = Layer.effect( + Shared, + Effect.sync(() => { + n += 1 + return Shared.of({ id: n }) + }), + ) - class One extends Context.Service<One, { readonly get: () => Effect.Effect<number> }>()("@test/One") {} - const one = Layer.effect( - One, - Effect.gen(function* () { - const svc = yield* Shared - return One.of({ - get: Effect.fn("One.get")(() => Effect.succeed(svc.id)), - }) - }), - ).pipe(Layer.provide(shared)) + class One extends Context.Service<One, { readonly get: () => Effect.Effect<number> }>()("@test/One") {} + const one = Layer.effect( + One, + Effect.gen(function* () { + const svc = yield* Shared + return One.of({ + get: Effect.fn("One.get")(() => Effect.succeed(svc.id)), + }) + }), + ).pipe(Layer.provide(shared)) - class Two extends Context.Service<Two, { readonly get: () => Effect.Effect<number> }>()("@test/Two") {} - const two = Layer.effect( - Two, - Effect.gen(function* () { - const svc = yield* Shared - return Two.of({ - get: Effect.fn("Two.get")(() => Effect.succeed(svc.id)), - }) - }), - ).pipe(Layer.provide(shared)) + class Two extends Context.Service<Two, { readonly get: () => Effect.Effect<number> }>()("@test/Two") {} + const two = Layer.effect( + Two, + Effect.gen(function* () { + const svc = yield* Shared + return Two.of({ + get: Effect.fn("Two.get")(() => Effect.succeed(svc.id)), + }) + }), + ).pipe(Layer.provide(shared)) - const { runPromise: runOne } = makeRuntime(One, one) - const { runPromise: runTwo } = makeRuntime(Two, two) + const { runPromise: runOne } = makeRuntime(One, one) + const { runPromise: runTwo } = makeRuntime(Two, two) - expect(await runOne((svc) => svc.get())).toBe(1) - expect(await runTwo((svc) => svc.get())).toBe(1) - expect(n).toBe(1) -}) + expect(yield* Effect.promise(() => runOne((svc) => svc.get()))).toBe(1) + expect(yield* Effect.promise(() => runTwo((svc) => svc.get()))).toBe(1) + expect(n).toBe(1) + }), +) |
