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:
parent
e257bff31c
commit
e663d7b335
@ -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 })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user