plugin-discovery.test.ts 1.1 KB

123456789101112131415161718192021222324252627
  1. import { mkdir, writeFile } from "node:fs/promises"
  2. import path from "node:path"
  3. import { expect, test } from "bun:test"
  4. import { discoverTuiPlugins } from "../src/plugin/discovery"
  5. import { tmpdir } from "./fixture/fixture"
  6. test("discovers project TUI plugin files in stable order", async () => {
  7. await using tmp = await tmpdir()
  8. const directory = path.join(tmp.path, ".opencode", "plugins", "tui")
  9. await mkdir(path.join(directory, "nested"), { recursive: true })
  10. await Promise.all([
  11. writeFile(path.join(directory, "second.tsx"), "export default {}"),
  12. writeFile(path.join(directory, "first.js"), "export default {}"),
  13. writeFile(path.join(directory, "ignored.json"), "{}"),
  14. writeFile(path.join(directory, "nested", "ignored.ts"), "export default {}"),
  15. ])
  16. expect(await discoverTuiPlugins(tmp.path)).toEqual([
  17. path.join(directory, "first.js"),
  18. path.join(directory, "second.tsx"),
  19. ])
  20. })
  21. test("returns no project TUI plugins when the directory is absent", async () => {
  22. await using tmp = await tmpdir()
  23. expect(await discoverTuiPlugins(tmp.path)).toEqual([])
  24. })