effect-cmd-instance-als.test.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { afterEach, expect } from "bun:test"
  2. import { LayerNode } from "@kirincode-ai/core/effect/layer-node"
  3. import { FSUtil } from "@kirincode-ai/core/fs-util"
  4. import { Effect } from "effect"
  5. import { fileURLToPath } from "url"
  6. import { InstanceRef } from "../../src/effect/instance-ref"
  7. import { disposeAllInstances, TestInstance } from "../fixture/fixture"
  8. import { testEffect } from "../lib/effect"
  9. const it = testEffect(LayerNode.compile(FSUtil.node))
  10. afterEach(async () => {
  11. await disposeAllInstances()
  12. })
  13. it.live("effect-cmd.ts does not restore legacy instance ALS", () =>
  14. Effect.gen(function* () {
  15. const fs = yield* FSUtil.Service
  16. const source = yield* fs.readFileString(fileURLToPath(new URL("../../src/cli/effect-cmd.ts", import.meta.url)))
  17. expect(source).not.toContain("restore(ctx")
  18. }),
  19. )
  20. it.instance(
  21. "InstanceRef remains the handler context across Effect promise awaits",
  22. () =>
  23. Effect.gen(function* () {
  24. const test = yield* TestInstance
  25. const ctx = yield* InstanceRef
  26. if (!ctx) throw new Error("InstanceRef not provided")
  27. const directory = yield* Effect.promise(async () => {
  28. await Promise.resolve()
  29. return ctx.directory
  30. })
  31. expect(directory).toBe(test.directory)
  32. }),
  33. { git: true },
  34. )