Merge pull request #3294 from kilhyeonjun/fix/doctor-custom-provider-regression

test(doctor): cover custom provider config regression
This commit is contained in:
YeonGyu-Kim
2026-05-21 12:58:51 +09:00
committed by GitHub
+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
}
}
})
})
})