test(plugin): use noop dependency boundaries (#27148)
This commit is contained in:
@@ -1,26 +1,43 @@
|
|||||||
import { afterAll, describe, expect } from "bun:test"
|
import { describe, expect } from "bun:test"
|
||||||
import { Effect, Layer } from "effect"
|
import { Effect, Layer, Option } from "effect"
|
||||||
import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner"
|
import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner"
|
||||||
|
import { AppFileSystem } from "@opencode-ai/core/filesystem"
|
||||||
|
import { EffectFlock } from "@opencode-ai/core/util/effect-flock"
|
||||||
import path from "path"
|
import path from "path"
|
||||||
import { pathToFileURL } from "url"
|
import { pathToFileURL } from "url"
|
||||||
|
import { Account } from "../../src/account/account"
|
||||||
|
import { Auth } from "../../src/auth"
|
||||||
|
import { Bus } from "../../src/bus"
|
||||||
|
import { Config } from "../../src/config/config"
|
||||||
|
import { Env } from "../../src/env"
|
||||||
|
import { Plugin } from "../../src/plugin/index"
|
||||||
import { ModelID, ProviderID } from "../../src/provider/schema"
|
import { ModelID, ProviderID } from "../../src/provider/schema"
|
||||||
import { provideTmpdirInstance } from "../fixture/fixture"
|
import { provideTmpdirInstance } from "../fixture/fixture"
|
||||||
import { testEffect } from "../lib/effect"
|
import { testEffect } from "../lib/effect"
|
||||||
|
import { NpmTest } from "../fake/npm"
|
||||||
|
|
||||||
const disableDefault = process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS
|
const emptyAccount = Layer.mock(Account.Service)({
|
||||||
process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS = "1"
|
active: () => Effect.succeed(Option.none()),
|
||||||
|
activeOrg: () => Effect.succeed(Option.none()),
|
||||||
const { Plugin } = await import("../../src/plugin/index")
|
|
||||||
const it = testEffect(Layer.mergeAll(Plugin.defaultLayer, CrossSpawnSpawner.defaultLayer))
|
|
||||||
const systemHook = "experimental.chat.system.transform"
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
if (disableDefault === undefined) {
|
|
||||||
delete process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS
|
|
||||||
return
|
|
||||||
}
|
|
||||||
process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS = disableDefault
|
|
||||||
})
|
})
|
||||||
|
const emptyAuth = Layer.mock(Auth.Service)({
|
||||||
|
all: () => Effect.succeed({}),
|
||||||
|
})
|
||||||
|
const configLayer = Config.layer.pipe(
|
||||||
|
Layer.provide(EffectFlock.defaultLayer),
|
||||||
|
Layer.provide(AppFileSystem.defaultLayer),
|
||||||
|
Layer.provide(Env.defaultLayer),
|
||||||
|
Layer.provide(emptyAuth),
|
||||||
|
Layer.provide(emptyAccount),
|
||||||
|
Layer.provide(NpmTest.noop),
|
||||||
|
)
|
||||||
|
const it = testEffect(
|
||||||
|
Layer.mergeAll(
|
||||||
|
Plugin.layer.pipe(Layer.provide(Bus.layer), Layer.provide(configLayer)),
|
||||||
|
CrossSpawnSpawner.defaultLayer,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
const systemHook = "experimental.chat.system.transform"
|
||||||
|
|
||||||
function withProject<A, E, R>(source: string, self: Effect.Effect<A, E, R>) {
|
function withProject<A, E, R>(source: string, self: Effect.Effect<A, E, R>) {
|
||||||
return provideTmpdirInstance((dir) =>
|
return provideTmpdirInstance((dir) =>
|
||||||
|
|||||||
@@ -1,25 +1,46 @@
|
|||||||
import { afterAll, afterEach, describe, expect } from "bun:test"
|
import { afterAll, afterEach, describe, expect } from "bun:test"
|
||||||
import { Effect, Layer } from "effect"
|
import { Effect, Layer, Option } from "effect"
|
||||||
import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner"
|
import { CrossSpawnSpawner } from "@opencode-ai/core/cross-spawn-spawner"
|
||||||
|
import { AppFileSystem } from "@opencode-ai/core/filesystem"
|
||||||
|
import { EffectFlock } from "@opencode-ai/core/util/effect-flock"
|
||||||
|
import { Flag } from "@opencode-ai/core/flag/flag"
|
||||||
import path from "path"
|
import path from "path"
|
||||||
import { pathToFileURL } from "url"
|
import { pathToFileURL } from "url"
|
||||||
|
import { Account } from "../../src/account/account"
|
||||||
|
import { Auth } from "../../src/auth"
|
||||||
|
import { Bus } from "../../src/bus"
|
||||||
|
import { Config } from "../../src/config/config"
|
||||||
|
import { Env } from "../../src/env"
|
||||||
|
import { Workspace } from "../../src/control-plane/workspace"
|
||||||
|
import { Plugin } from "../../src/plugin/index"
|
||||||
|
import { InstanceBootstrap } from "../../src/project/bootstrap-service"
|
||||||
|
import { Instance } from "../../src/project/instance"
|
||||||
|
import { InstanceStore } from "../../src/project/instance-store"
|
||||||
import { disposeAllInstances, provideTmpdirInstance } from "../fixture/fixture"
|
import { disposeAllInstances, provideTmpdirInstance } from "../fixture/fixture"
|
||||||
import { testEffect } from "../lib/effect"
|
import { testEffect } from "../lib/effect"
|
||||||
|
import { NpmTest } from "../fake/npm"
|
||||||
|
|
||||||
const disableDefault = process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS
|
const emptyAccount = Layer.mock(Account.Service)({
|
||||||
process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS = "1"
|
active: () => Effect.succeed(Option.none()),
|
||||||
|
activeOrg: () => Effect.succeed(Option.none()),
|
||||||
const { Flag } = await import("@opencode-ai/core/flag/flag")
|
})
|
||||||
const { Plugin } = await import("../../src/plugin/index")
|
const emptyAuth = Layer.mock(Auth.Service)({
|
||||||
const { Workspace } = await import("../../src/control-plane/workspace")
|
all: () => Effect.succeed({}),
|
||||||
const { InstanceBootstrap } = await import("../../src/project/bootstrap")
|
})
|
||||||
const { Instance } = await import("../../src/project/instance")
|
const configLayer = Config.layer.pipe(
|
||||||
const { InstanceStore } = await import("../../src/project/instance-store")
|
Layer.provide(EffectFlock.defaultLayer),
|
||||||
const workspaceLayer = Workspace.defaultLayer.pipe(
|
Layer.provide(AppFileSystem.defaultLayer),
|
||||||
Layer.provide(InstanceStore.defaultLayer),
|
Layer.provide(Env.defaultLayer),
|
||||||
Layer.provide(InstanceBootstrap.defaultLayer),
|
Layer.provide(emptyAuth),
|
||||||
|
Layer.provide(emptyAccount),
|
||||||
|
Layer.provide(NpmTest.noop),
|
||||||
)
|
)
|
||||||
const it = testEffect(Layer.mergeAll(Plugin.defaultLayer, workspaceLayer, CrossSpawnSpawner.defaultLayer))
|
const pluginLayer = Plugin.layer.pipe(Layer.provide(Bus.layer), Layer.provide(configLayer))
|
||||||
|
const noopBootstrapLayer = Layer.succeed(InstanceBootstrap.Service, InstanceBootstrap.Service.of({ run: Effect.void }))
|
||||||
|
const workspaceLayer = Workspace.defaultLayer.pipe(
|
||||||
|
Layer.provide(InstanceStore.defaultLayer.pipe(Layer.provide(noopBootstrapLayer))),
|
||||||
|
)
|
||||||
|
const it = testEffect(Layer.mergeAll(pluginLayer, workspaceLayer, CrossSpawnSpawner.defaultLayer))
|
||||||
|
|
||||||
const experimental = Flag.OPENCODE_EXPERIMENTAL_WORKSPACES
|
const experimental = Flag.OPENCODE_EXPERIMENTAL_WORKSPACES
|
||||||
|
|
||||||
@@ -30,12 +51,6 @@ afterEach(async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
afterAll(() => {
|
afterAll(() => {
|
||||||
if (disableDefault === undefined) {
|
|
||||||
delete process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS
|
|
||||||
} else {
|
|
||||||
process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS = disableDefault
|
|
||||||
}
|
|
||||||
|
|
||||||
Flag.OPENCODE_EXPERIMENTAL_WORKSPACES = experimental
|
Flag.OPENCODE_EXPERIMENTAL_WORKSPACES = experimental
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user