fix(auto-update): match both canonical and legacy plugin names in entry finder
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -4,6 +4,7 @@ import * as fs from "node:fs"
|
||||
import * as os from "node:os"
|
||||
import * as path from "node:path"
|
||||
import { PACKAGE_NAME } from "../constants"
|
||||
import { LEGACY_PLUGIN_NAME, PLUGIN_NAME } from "../../../shared/plugin-identity"
|
||||
|
||||
type PluginEntryResult = {
|
||||
entry: string
|
||||
@@ -120,6 +121,64 @@ describe("findPluginEntry", () => {
|
||||
expect(pluginInfo?.pinnedVersion).toBe("3.5.2")
|
||||
})
|
||||
|
||||
test("finds preferred plugin entry", async () => {
|
||||
// #given preferred plugin entry is configured
|
||||
fs.writeFileSync(configPath, JSON.stringify({ plugin: [PLUGIN_NAME] }))
|
||||
|
||||
// #when plugin entry is detected
|
||||
const execution = runFindPluginEntry(temporaryDirectory)
|
||||
|
||||
// #then preferred entry is returned
|
||||
expect(execution.status).toBe(0)
|
||||
const pluginInfo = JSON.parse(execution.stdout.trim()) as PluginEntryResult
|
||||
expect(pluginInfo?.entry).toBe(PLUGIN_NAME)
|
||||
expect(pluginInfo?.isPinned).toBe(false)
|
||||
expect(pluginInfo?.pinnedVersion).toBeNull()
|
||||
})
|
||||
|
||||
test("finds legacy plugin entry", async () => {
|
||||
// #given legacy plugin entry is configured
|
||||
fs.writeFileSync(configPath, JSON.stringify({ plugin: [LEGACY_PLUGIN_NAME] }))
|
||||
|
||||
// #when plugin entry is detected
|
||||
const execution = runFindPluginEntry(temporaryDirectory)
|
||||
|
||||
// #then legacy entry is returned
|
||||
expect(execution.status).toBe(0)
|
||||
const pluginInfo = JSON.parse(execution.stdout.trim()) as PluginEntryResult
|
||||
expect(pluginInfo?.entry).toBe(LEGACY_PLUGIN_NAME)
|
||||
expect(pluginInfo?.isPinned).toBe(false)
|
||||
expect(pluginInfo?.pinnedVersion).toBeNull()
|
||||
})
|
||||
|
||||
test("finds preferred plugin entry with pinned version", async () => {
|
||||
// #given preferred plugin entry includes semver version
|
||||
fs.writeFileSync(configPath, JSON.stringify({ plugin: [`${PLUGIN_NAME}@3.15.0`] }))
|
||||
|
||||
// #when plugin entry is detected
|
||||
const execution = runFindPluginEntry(temporaryDirectory)
|
||||
|
||||
// #then preferred versioned entry is returned
|
||||
expect(execution.status).toBe(0)
|
||||
const pluginInfo = JSON.parse(execution.stdout.trim()) as PluginEntryResult
|
||||
expect(pluginInfo?.entry).toBe(`${PLUGIN_NAME}@3.15.0`)
|
||||
expect(pluginInfo?.isPinned).toBe(true)
|
||||
expect(pluginInfo?.pinnedVersion).toBe("3.15.0")
|
||||
})
|
||||
|
||||
test("returns null for unrelated plugin entry", async () => {
|
||||
// #given unrelated plugin entry is configured
|
||||
fs.writeFileSync(configPath, JSON.stringify({ plugin: ["some-other-plugin"] }))
|
||||
|
||||
// #when plugin entry is detected
|
||||
const execution = runFindPluginEntry(temporaryDirectory)
|
||||
|
||||
// #then no matching entry is returned
|
||||
expect(execution.status).toBe(0)
|
||||
const pluginInfo = JSON.parse(execution.stdout.trim()) as PluginEntryResult
|
||||
expect(pluginInfo).toBeNull()
|
||||
})
|
||||
|
||||
test("reads user config from profile dir even when OPENCODE_CONFIG_DIR changes after import", async () => {
|
||||
// #given profile-specific user config after module import
|
||||
const profileConfigDir = path.join(temporaryDirectory, "profiles", "today")
|
||||
|
||||
Reference in New Issue
Block a user