Skip to content

Commit 63478c1

Browse files
committed
test(session): recover never runs or ends a stop; resume does
1 parent 926373e commit 63478c1

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

‎packages/core/test/session-execution.test.ts‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,27 @@ describe("SessionExecution lifecycle", () => {
137137
}),
138138
)
139139

140+
it.effect("recover continues a claimed turn but never runs or ends a stop; resume, new work, ends it", () =>
141+
Effect.gen(function* () {
142+
const database = yield* Database.Service
143+
const kv = yield* KV.Service
144+
const session = Session.ID.make("ses_recover_stopped")
145+
yield* seedSessions(database, [session])
146+
const drained: Session.ID[] = []
147+
const context = yield* buildExecution(yield* Scope.fork(yield* Effect.scope), ({ sessionID }) =>
148+
Effect.sync(() => void drained.push(sessionID)),
149+
)
150+
const execution = Context.get(context, SessionExecution.Service)
151+
yield* kv.set("session.stopped:" + session, true)
152+
yield* execution.recover(session)
153+
expect({ drained, stopped: yield* execution.stopped(session) }).toEqual({ drained: [], stopped: true })
154+
yield* execution.resume(session)
155+
expect({ drained, stopped: yield* execution.stopped(session) }).toEqual({ drained: [session], stopped: false })
156+
yield* execution.recover(session)
157+
expect(drained).toEqual([session, session])
158+
}),
159+
)
160+
140161
it.effect("keeps a stop the server died inside: a stopped background child reports cancelled once", () =>
141162
Effect.gen(function* () {
142163
const database = yield* Database.Service

0 commit comments

Comments
 (0)