test(codex): align installer assertions with windows

This commit is contained in:
YeonGyu-Kim
2026-05-31 01:48:22 +09:00
parent f1fb0f3ac0
commit 4434ee3aa1
+34 -17
View File
@@ -25,6 +25,14 @@ const STALE_CODEX_COMPONENT_BINS = [
"codex-ultrawork",
] as const
function formatTomlString(value: string): string {
return JSON.stringify(value)
}
function expectedBinName(name: string): string {
return process.platform === "win32" ? `${name}.cmd` : name
}
describe("install-codex", () => {
test("#given npm platform binary package #when resolving vendored repo root #then finds sibling wrapper package", async () => {
// given
@@ -120,7 +128,7 @@ describe("install-codex", () => {
expect(configContent).toContain("[features]")
expect(configContent).toContain("[marketplaces.sisyphuslabs]")
expect(configContent).toContain('source_type = "local"')
expect(configContent).toContain(`source = "${join(codexHome, "plugins", "cache", "sisyphuslabs")}"`)
expect(configContent).toContain(`source = ${formatTomlString(join(codexHome, "plugins", "cache", "sisyphuslabs"))}`)
expect(configContent).not.toContain('source = "https://github.com/code-yeongyu/lazycodex.git"')
expect(configContent).not.toContain('ref = "main"')
expect(configContent).toContain("[plugins.\"omo@sisyphuslabs\"]")
@@ -181,15 +189,21 @@ describe("install-codex", () => {
// then
const pluginPath = result.installed[0]?.path ?? ""
const linkedNames = (await readdir(binDir)).sort()
expect(linkedNames).toEqual(EXPECTED_OMO_COMPONENT_BINS.map((entry) => entry.name).sort())
expect(linkedNames).toEqual(EXPECTED_OMO_COMPONENT_BINS.map((entry) => expectedBinName(entry.name)).sort())
for (const entry of EXPECTED_OMO_COMPONENT_BINS) {
const linkPath = join(binDir, entry.name)
const linkPath = join(binDir, expectedBinName(entry.name))
const expectedTarget = join(pluginPath, entry.target)
expect(await readlink(linkPath)).toBe(expectedTarget)
if (process.platform === "win32") {
expect((await stat(linkPath)).isFile()).toBe(true)
expect(await readFile(linkPath, "utf8")).toContain(expectedTarget)
} else {
expect(await readlink(linkPath)).toBe(expectedTarget)
}
expect((await stat(expectedTarget)).isFile()).toBe(true)
}
for (const staleName of STALE_CODEX_COMPONENT_BINS) {
expect(linkedNames).not.toContain(staleName)
expect(linkedNames).not.toContain(`${staleName}.cmd`)
}
})
@@ -227,20 +241,23 @@ describe("install-codex", () => {
// then
const explorerAgentPath = join(codexHome, "agents", "explorer.toml")
expect(await readlink(explorerAgentPath)).toBe(
join(
codexHome,
".tmp",
"marketplaces",
"sisyphuslabs",
"plugins",
"omo",
"components",
"ultrawork",
"agents",
"explorer.toml",
),
const explorerSnapshotPath = join(
codexHome,
".tmp",
"marketplaces",
"sisyphuslabs",
"plugins",
"omo",
"components",
"ultrawork",
"agents",
"explorer.toml",
)
if (process.platform === "win32") {
expect(await readFile(explorerAgentPath, "utf8")).toBe(await readFile(explorerSnapshotPath, "utf8"))
} else {
expect(await readlink(explorerAgentPath)).toBe(explorerSnapshotPath)
}
expect(await readFile(explorerAgentPath, "utf8")).toContain('name = "explorer"')
expect(await readFile(join(marketplaceRoot, ".git", "config"), "utf8")).toBe("[remote \"origin\"]\n")
expect(await readFile(join(marketplaceRoot, ".codex-marketplace-install.json"), "utf8")).toBe(