fix(core): harden vcs backend lifecycle

This commit is contained in:
Shoubhit Dash 2026-07-06 18:20:17 +05:30
commit 10a71bae4a
2 changed files with 21 additions and 4 deletions

View file

@ -1,5 +1,5 @@
import { describe, expect } from "bun:test"
import { Effect, Exit, Layer, Scope } from "effect"
import { Cause, Effect, Exit, Fiber, Layer, Scope } from "effect"
import { Vcs as PluginVcs } from "@opencode-ai/plugin/v2/effect"
import { LayerNode } from "@opencode-ai/core/effect/layer-node"
import { Location } from "@opencode-ai/core/location"
@ -116,6 +116,18 @@ describe("VcsBackends", () => {
}).pipe(Effect.scoped, provide),
)
it.live("preserves adapter interruption", () =>
Effect.gen(function* () {
yield* register(backend({ status: () => Effect.never }))
const vcs = yield* Vcs.Service
const fiber = yield* Effect.forkChild(vcs.status())
yield* Fiber.interrupt(fiber)
const exit = yield* Fiber.await(fiber)
expect(Exit.isFailure(exit)).toBe(true)
if (Exit.isFailure(exit)) expect(Cause.hasInterrupts(exit.cause)).toBe(true)
}).pipe(Effect.scoped, provide),
)
it.live("drops rows that fail schema validation", () =>
Effect.gen(function* () {
yield* register(