Avoid bootstrapping server plugins from TUI plugin runtime (#26938)

This commit is contained in:
Kit Langton
2026-05-11 17:32:16 -04:00
committed by GitHub
parent bdd5a80886
commit a5c35bf182
2 changed files with 60 additions and 39 deletions

View File

@@ -5,7 +5,7 @@ import { pathToFileURL } from "url"
import { createTestKeymap } from "@opentui/keymap/testing"
import { tmpdir } from "../../fixture/fixture"
import { createTuiPluginApi } from "../../fixture/tui-plugin"
import { createTuiResolvedConfig } from "../../fixture/tui-runtime"
import { createTuiResolvedConfig, mockTuiRuntime } from "../../fixture/tui-runtime"
import { Global } from "@opencode-ai/core/global"
import { TuiConfig } from "../../../src/cli/cmd/tui/config/tui"
import { Filesystem } from "@/util/filesystem"
@@ -647,6 +647,36 @@ export default {
}
})
test("does not bootstrap server plugins while initializing tui plugins", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
const marker = path.join(dir, "server-plugin-called.txt")
const plugin = path.join(dir, "server-plugin.ts")
await Bun.write(
plugin,
[
"export default async () => {",
` await Bun.write(${JSON.stringify(marker)}, "called")`,
" return {}",
"}",
"",
].join("\n"),
)
await Bun.write(path.join(dir, "opencode.json"), JSON.stringify({ plugin: [pathToFileURL(plugin).href] }))
return { marker }
},
})
const mock = mockTuiRuntime(tmp.path, [])
try {
await TuiPluginRuntime.init({ api: createTuiPluginApi(), config: mock.config })
await expect(fs.stat(tmp.extra.marker)).rejects.toThrow()
} finally {
await TuiPluginRuntime.dispose()
mock.restore()
}
})
describe("tui.plugin.loader", () => {
let data: Data