test(core): use disposable session fixtures (#45745)

This commit is contained in:
Kit Langton 2026-08-28 17:47:18 -04:00 committed by GitHub
parent 2751813454
commit 0b32bdf1e5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 8 additions and 21 deletions

View file

@ -37,7 +37,7 @@ import { testEffect } from "./lib/effect"
import { LocationServiceMap } from "@opencode-ai/core/location-service-map"
import { promptLocationLayer } from "./fixture/prompt-location"
import { globalProjectLayer } from "./lib/project"
import { tmpdir } from "./fixture/tmpdir"
import { tmpdirScoped } from "./fixture/tmpdir"
const it = testEffect(
AppNodeBuilder.build(
@ -96,10 +96,7 @@ const assertCreateInputTypes = (session: Session.Interface) => {
void assertCreateInputTypes
function withTmp<A, E, R>(f: (directory: string) => Effect.Effect<A, E, R>) {
return Effect.acquireRelease(
Effect.promise(() => tmpdir()),
(tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()),
).pipe(Effect.flatMap((tmp) => f(tmp.path)))
return tmpdirScoped().pipe(Effect.flatMap((tmp) => f(tmp.path)))
}
describe("Session.create", () => {
@ -967,10 +964,7 @@ describe("Session.create", () => {
data: event.data,
}))
const tmp = yield* Effect.acquireRelease(
Effect.promise(() => tmpdir()),
(tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()),
)
const tmp = yield* tmpdirScoped()
const targetLayer = AppNodeBuilder.build(
LayerNode.group([Database.node, Bus.node, SessionProjector.node, SessionStore.node]),
[

View file

@ -21,7 +21,7 @@ import { SessionProjector } from "@opencode-ai/core/session/projector"
import { SessionStore } from "@opencode-ai/core/session/store"
import { Money } from "@opencode-ai/schema/money"
import { LayerNode } from "@opencode-ai/util/effect/layer-node"
import { tmpdir } from "./fixture/tmpdir"
import { tmpdirScoped } from "./fixture/tmpdir"
import { testEffect } from "./lib/effect"
import { globalProjectLayer } from "./lib/project"
@ -149,10 +149,7 @@ describe("Session.updateMessage", () => {
type: event.type,
data: event.data,
}))
const tmp = yield* Effect.acquireRelease(
Effect.promise(() => tmpdir()),
(tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()),
)
const tmp = yield* tmpdirScoped()
const target = AppNodeBuilder.build(
LayerNode.group([Database.node, Bus.node, SessionProjector.node, SessionStore.node]),
[

View file

@ -1,7 +1,5 @@
import { describe, expect } from "bun:test"
import { DateTime, Effect, Fiber, Layer, LayerMap, Schema, Stream } from "effect"
import { mkdtemp, rm } from "fs/promises"
import { tmpdir } from "os"
import path from "path"
import { pathToFileURL } from "url"
import { eq } from "drizzle-orm"
@ -30,6 +28,7 @@ import { Image } from "@opencode-ai/core/image"
import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor"
import { PluginHooks } from "@opencode-ai/core/plugin/hooks"
import { Snapshot } from "@opencode-ai/core/snapshot"
import { tmpdirScoped } from "./fixture/tmpdir"
import { testEffect } from "./lib/effect"
const executionCalls: Session.ID[] = []
@ -403,11 +402,8 @@ describe("Session.prompt", () => {
Effect.gen(function* () {
yield* setup
const session = yield* Session.Service
const directory = yield* Effect.acquireRelease(
Effect.promise(() => mkdtemp(path.join(tmpdir(), "opencode-session-prompt-"))),
(directory) => Effect.promise(() => rm(directory, { recursive: true, force: true })),
)
const source = path.join(directory, "image.png")
const directory = yield* tmpdirScoped("opencode-session-prompt-")
const source = path.join(directory.path, "image.png")
const bytes = Buffer.from(
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
"base64",