core: bundle GitLab auth plugin directly instead of dynamic install
Remove dynamic installation of built-in plugins. GitLab auth is now imported directly as an internal plugin, eliminating network requests during startup and simplifying the plugin loading logic. Removes the need for test mocks since plugins are no longer dynamically installed at runtime.
This commit is contained in:
@@ -1,46 +1,12 @@
|
||||
import { test, expect, mock, describe } from "bun:test"
|
||||
import { test, expect, describe } from "bun:test"
|
||||
import path from "path"
|
||||
import { unlink } from "fs/promises"
|
||||
|
||||
// === Mocks ===
|
||||
// These mocks are required because Provider.list() triggers:
|
||||
// 1. BunProc.install("@aws-sdk/credential-providers") - in bedrock custom loader
|
||||
// 2. Plugin.list() which calls BunProc.install() for default plugins
|
||||
// Without mocks, these would attempt real package installations that timeout in tests.
|
||||
|
||||
mock.module("../../src/bun/index", () => ({
|
||||
BunProc: {
|
||||
install: async (pkg: string, _version?: string) => {
|
||||
// Return package name without version for mocking
|
||||
const lastAtIndex = pkg.lastIndexOf("@")
|
||||
return lastAtIndex > 0 ? pkg.substring(0, lastAtIndex) : pkg
|
||||
},
|
||||
run: async () => {
|
||||
throw new Error("BunProc.run should not be called in tests")
|
||||
},
|
||||
which: () => process.execPath,
|
||||
InstallFailedError: class extends Error {},
|
||||
},
|
||||
}))
|
||||
|
||||
mock.module("@aws-sdk/credential-providers", () => ({
|
||||
fromNodeProviderChain: () => async () => ({
|
||||
accessKeyId: "mock-access-key-id",
|
||||
secretAccessKey: "mock-secret-access-key",
|
||||
}),
|
||||
}))
|
||||
|
||||
const mockPlugin = () => ({})
|
||||
mock.module("opencode-copilot-auth", () => ({ default: mockPlugin }))
|
||||
mock.module("opencode-anthropic-auth", () => ({ default: mockPlugin }))
|
||||
mock.module("@gitlab/opencode-gitlab-auth", () => ({ default: mockPlugin }))
|
||||
|
||||
// Import after mocks are set up
|
||||
const { tmpdir } = await import("../fixture/fixture")
|
||||
const { Instance } = await import("../../src/project/instance")
|
||||
const { Provider } = await import("../../src/provider/provider")
|
||||
const { Env } = await import("../../src/env")
|
||||
const { Global } = await import("../../src/global")
|
||||
import { tmpdir } from "../fixture/fixture"
|
||||
import { Instance } from "../../src/project/instance"
|
||||
import { Provider } from "../../src/provider/provider"
|
||||
import { Env } from "../../src/env"
|
||||
import { Global } from "../../src/global"
|
||||
|
||||
test("Bedrock: config region takes precedence over AWS_REGION env var", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
|
||||
@@ -1,35 +1,11 @@
|
||||
import { test, expect, mock } from "bun:test"
|
||||
import { test, expect } from "bun:test"
|
||||
import path from "path"
|
||||
|
||||
// === Mocks ===
|
||||
// These mocks prevent real package installations during tests
|
||||
|
||||
mock.module("../../src/bun/index", () => ({
|
||||
BunProc: {
|
||||
install: async (pkg: string, _version?: string) => {
|
||||
// Return package name without version for mocking
|
||||
const lastAtIndex = pkg.lastIndexOf("@")
|
||||
return lastAtIndex > 0 ? pkg.substring(0, lastAtIndex) : pkg
|
||||
},
|
||||
run: async () => {
|
||||
throw new Error("BunProc.run should not be called in tests")
|
||||
},
|
||||
which: () => process.execPath,
|
||||
InstallFailedError: class extends Error {},
|
||||
},
|
||||
}))
|
||||
|
||||
const mockPlugin = () => ({})
|
||||
mock.module("opencode-copilot-auth", () => ({ default: mockPlugin }))
|
||||
mock.module("opencode-anthropic-auth", () => ({ default: mockPlugin }))
|
||||
mock.module("@gitlab/opencode-gitlab-auth", () => ({ default: mockPlugin }))
|
||||
|
||||
// Import after mocks are set up
|
||||
const { tmpdir } = await import("../fixture/fixture")
|
||||
const { Instance } = await import("../../src/project/instance")
|
||||
const { Provider } = await import("../../src/provider/provider")
|
||||
const { Env } = await import("../../src/env")
|
||||
const { Global } = await import("../../src/global")
|
||||
import { tmpdir } from "../fixture/fixture"
|
||||
import { Instance } from "../../src/project/instance"
|
||||
import { Provider } from "../../src/provider/provider"
|
||||
import { Env } from "../../src/env"
|
||||
import { Global } from "../../src/global"
|
||||
|
||||
test("GitLab Duo: loads provider with API key from environment", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
|
||||
@@ -1,27 +1,6 @@
|
||||
import { test, expect, mock } from "bun:test"
|
||||
import { test, expect } from "bun:test"
|
||||
import path from "path"
|
||||
|
||||
// Mock BunProc and default plugins to prevent actual installations during tests
|
||||
mock.module("../../src/bun/index", () => ({
|
||||
BunProc: {
|
||||
install: async (pkg: string, _version?: string) => {
|
||||
// Return package name without version for mocking
|
||||
const lastAtIndex = pkg.lastIndexOf("@")
|
||||
return lastAtIndex > 0 ? pkg.substring(0, lastAtIndex) : pkg
|
||||
},
|
||||
run: async () => {
|
||||
throw new Error("BunProc.run should not be called in tests")
|
||||
},
|
||||
which: () => process.execPath,
|
||||
InstallFailedError: class extends Error {},
|
||||
},
|
||||
}))
|
||||
|
||||
const mockPlugin = () => ({})
|
||||
mock.module("opencode-copilot-auth", () => ({ default: mockPlugin }))
|
||||
mock.module("opencode-anthropic-auth", () => ({ default: mockPlugin }))
|
||||
mock.module("@gitlab/opencode-gitlab-auth", () => ({ default: mockPlugin }))
|
||||
|
||||
import { tmpdir } from "../fixture/fixture"
|
||||
import { Instance } from "../../src/project/instance"
|
||||
import { Provider } from "../../src/provider/provider"
|
||||
|
||||
Reference in New Issue
Block a user