refactor(shared): update model-availability tests to use split modules

Migrate imports from monolithic `model-availability` to split modules
(`model-name-matcher`, `available-models-fetcher`, `model-cache-availability`).
Replace XDG_CACHE_HOME env var manipulation with `mock.module` for
`data-path`, ensuring test isolation without polluting process env.

🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
This commit is contained in:
YeonGyu-Kim 2026-02-08 18:00:19 +09:00
parent e257bff31c
commit e663d7b335

View File

@ -1,26 +1,38 @@
import { describe, it, expect, beforeEach, afterEach } from "bun:test" import { describe, it, expect, beforeEach, afterEach, beforeAll, afterAll, mock } from "bun:test"
import { mkdtempSync, writeFileSync, rmSync } from "fs" import { mkdtempSync, writeFileSync, rmSync } from "fs"
import { tmpdir } from "os" import { tmpdir } from "os"
import { join } from "path" import { join } from "path"
import { fetchAvailableModels, fuzzyMatchModel, getConnectedProviders, __resetModelCache, isModelAvailable } from "./model-availability" import { fuzzyMatchModel, isModelAvailable } from "./model-name-matcher"
let activeCacheHomeDir: string | null = null
const DEFAULT_CACHE_HOME_DIR = join(tmpdir(), "opencode-test-default-cache")
mock.module("./data-path", () => ({
getDataDir: () => activeCacheHomeDir ?? DEFAULT_CACHE_HOME_DIR,
getOpenCodeStorageDir: () => join(activeCacheHomeDir ?? DEFAULT_CACHE_HOME_DIR, "opencode", "storage"),
getCacheDir: () => activeCacheHomeDir ?? DEFAULT_CACHE_HOME_DIR,
getOmoOpenCodeCacheDir: () => join(activeCacheHomeDir ?? DEFAULT_CACHE_HOME_DIR, "oh-my-opencode"),
getOpenCodeCacheDir: () => join(activeCacheHomeDir ?? DEFAULT_CACHE_HOME_DIR, "opencode"),
}))
describe("fetchAvailableModels", () => { describe("fetchAvailableModels", () => {
let tempDir: string let tempDir: string
let originalXdgCache: string | undefined let fetchAvailableModels: (client?: unknown, options?: { connectedProviders?: string[] | null }) => Promise<Set<string>>
let __resetModelCache: () => void
beforeAll(async () => {
;({ fetchAvailableModels } = await import("./available-models-fetcher"))
;({ __resetModelCache } = await import("./model-cache-availability"))
})
beforeEach(() => { beforeEach(() => {
__resetModelCache() __resetModelCache()
tempDir = mkdtempSync(join(tmpdir(), "opencode-test-")) tempDir = mkdtempSync(join(tmpdir(), "opencode-test-"))
originalXdgCache = process.env.XDG_CACHE_HOME activeCacheHomeDir = tempDir
process.env.XDG_CACHE_HOME = tempDir
}) })
afterEach(() => { afterEach(() => {
if (originalXdgCache !== undefined) { activeCacheHomeDir = null
process.env.XDG_CACHE_HOME = originalXdgCache
} else {
delete process.env.XDG_CACHE_HOME
}
rmSync(tempDir, { recursive: true, force: true }) rmSync(tempDir, { recursive: true, force: true })
}) })