test(doctor): cover custom provider config regression

Refs #3293

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
kilhyeonjun
2026-04-10 09:30:53 +09:00
parent 498d021dc2
commit 02d64e448f
+70
View File
@@ -55,5 +55,75 @@ describe("config check", () => {
}
}
})
it("does not flag configured custom providers as unavailable when they exist in opencode.json", async () => {
const originalConfigDir = process.env.OPENCODE_CONFIG_DIR
const originalXdgConfig = process.env.XDG_CONFIG_HOME
const originalXdgCache = process.env.XDG_CACHE_HOME
const testRootDir = join(
tmpdir(),
`omo-doctor-custom-provider-${Date.now()}-${Math.random().toString(36).slice(2)}`,
)
const pluginConfigDir = join(testRootDir, "plugin")
const xdgConfigDir = join(testRootDir, "xdg-config")
const xdgCacheDir = join(testRootDir, "xdg-cache")
try {
mkdirSync(pluginConfigDir, { recursive: true })
mkdirSync(join(xdgConfigDir, "opencode"), { recursive: true })
mkdirSync(join(xdgCacheDir, "opencode"), { recursive: true })
process.env.OPENCODE_CONFIG_DIR = pluginConfigDir
process.env.XDG_CONFIG_HOME = xdgConfigDir
process.env.XDG_CACHE_HOME = xdgCacheDir
writeFileSync(
join(pluginConfigDir, "oh-my-openagent.json"),
JSON.stringify({ agents: { sisyphus: { model: "kiro/claude-opus-4-6" } } }, null, 2) + "\n",
"utf-8",
)
writeFileSync(
join(xdgConfigDir, "opencode", "opencode.json"),
JSON.stringify({
provider: {
kiro: {
npm: "@ai-sdk/openai-compatible",
models: { "claude-opus-4-6": {} },
},
},
}, null, 2) + "\n",
"utf-8",
)
writeFileSync(
join(xdgCacheDir, "opencode", "models.json"),
JSON.stringify({
openai: { models: { "gpt-5.4": {} } },
}, null, 2) + "\n",
"utf-8",
)
const result = await config.checkConfig()
const providerIssue = result.issues.find((issue) => issue.title === "Model override uses unavailable provider")
expect(providerIssue).toBeUndefined()
} finally {
rmSync(testRootDir, { recursive: true, force: true })
if (originalConfigDir === undefined) {
delete process.env.OPENCODE_CONFIG_DIR
} else {
process.env.OPENCODE_CONFIG_DIR = originalConfigDir
}
if (originalXdgConfig === undefined) {
delete process.env.XDG_CONFIG_HOME
} else {
process.env.XDG_CONFIG_HOME = originalXdgConfig
}
if (originalXdgCache === undefined) {
delete process.env.XDG_CACHE_HOME
} else {
process.env.XDG_CACHE_HOME = originalXdgCache
}
}
})
})
})