fix: add oh-my-openagent.jsonc config file detection (fixes #2624)

This commit is contained in:
YeonGyu-Kim
2026-03-23 18:11:01 +09:00
parent d886ac701f
commit 7f20dd6ff5
7 changed files with 256 additions and 25 deletions
+82 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
import { detectConfigFile, parseJsonc, parseJsoncSafe, readJsoncFile } from "./jsonc-parser"
import { detectConfigFile, detectPluginConfigFile, parseJsonc, parseJsoncSafe, readJsoncFile } from "./jsonc-parser"
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs"
import { join } from "node:path"
@@ -264,3 +264,84 @@ describe("detectConfigFile", () => {
expect(result.format).toBe("none")
})
})
describe("detectPluginConfigFile", () => {
const testDir = join(__dirname, ".test-detect-plugin")
test("prefers oh-my-openagent over oh-my-opencode", () => {
// given
if (!existsSync(testDir)) mkdirSync(testDir, { recursive: true })
writeFileSync(join(testDir, "oh-my-openagent.jsonc"), "{}")
writeFileSync(join(testDir, "oh-my-opencode.jsonc"), "{}")
// when
const result = detectPluginConfigFile(testDir)
// then
expect(result.format).toBe("jsonc")
expect(result.path).toBe(join(testDir, "oh-my-openagent.jsonc"))
rmSync(testDir, { recursive: true, force: true })
})
test("falls back to oh-my-opencode when oh-my-openagent doesn't exist", () => {
// given
if (!existsSync(testDir)) mkdirSync(testDir, { recursive: true })
writeFileSync(join(testDir, "oh-my-opencode.jsonc"), "{}")
// when
const result = detectPluginConfigFile(testDir)
// then
expect(result.format).toBe("jsonc")
expect(result.path).toBe(join(testDir, "oh-my-opencode.jsonc"))
rmSync(testDir, { recursive: true, force: true })
})
test("falls back to oh-my-opencode.json when no jsonc exists", () => {
// given
if (!existsSync(testDir)) mkdirSync(testDir, { recursive: true })
writeFileSync(join(testDir, "oh-my-opencode.json"), "{}")
// when
const result = detectPluginConfigFile(testDir)
// then
expect(result.format).toBe("json")
expect(result.path).toBe(join(testDir, "oh-my-opencode.json"))
rmSync(testDir, { recursive: true, force: true })
})
test("returns none when no config files exist", () => {
// given
const emptyDir = join(testDir, "empty")
if (!existsSync(emptyDir)) mkdirSync(emptyDir, { recursive: true })
// when
const result = detectPluginConfigFile(emptyDir)
// then
expect(result.format).toBe("none")
expect(result.path).toBe(join(emptyDir, "oh-my-openagent.json"))
rmSync(testDir, { recursive: true, force: true })
})
test("prefers oh-my-openagent.json over oh-my-opencode.jsonc", () => {
// given
if (!existsSync(testDir)) mkdirSync(testDir, { recursive: true })
writeFileSync(join(testDir, "oh-my-openagent.json"), "{}")
writeFileSync(join(testDir, "oh-my-opencode.jsonc"), "{}")
// when
const result = detectPluginConfigFile(testDir)
// then
expect(result.format).toBe("json")
expect(result.path).toBe(join(testDir, "oh-my-openagent.json"))
rmSync(testDir, { recursive: true, force: true })
})
})