The tmpdir function in fixture/fixture.ts creates temporary directories for tests with automatic cleanup.
import { tmpdir } from "./fixture/fixture"
test("example", async () => {
await using tmp = await tmpdir()
// tmp.path is the temp directory path
// automatically cleaned up when test ends
})
git?: boolean - Initialize a git repo with a root commitconfig?: Partial<Config.Info> - Write an opencode.json config fileinit?: (dir: string) => Promise<T> - Custom setup function, returns value accessible as tmp.extradispose?: (dir: string) => Promise<T> - Custom cleanup functionGit repository:
await using tmp = await tmpdir({ git: true })
With config file:
await using tmp = await tmpdir({
config: { model: "test/model", username: "testuser" },
})
Custom initialization (returns extra data):
await using tmp = await tmpdir<string>({
init: async (dir) => {
await Bun.write(path.join(dir, "file.txt"), "content")
return "extra data"
},
})
// Access extra data via tmp.extra
console.log(tmp.extra) // "extra data"
With cleanup:
await using tmp = await tmpdir({
init: async (dir) => {
const specialDir = path.join(dir, "special")
await fs.mkdir(specialDir)
return specialDir
},
dispose: async (dir) => {
// Custom cleanup logic
await fs.rm(path.join(dir, "special"), { recursive: true })
},
})
path: string - Absolute path to the temp directory (realpath resolved)extra: T - Value returned by the init function[Symbol.asyncDispose] - Enables automatic cleanup via await usingopencode-test-await using for automatic cleanup when the variable goes out of scope