diff --git a/packages/core/test/config/plugin.test.ts b/packages/core/test/config/plugin.test.ts index bf6b0cf52f6..eb489c581e0 100644 --- a/packages/core/test/config/plugin.test.ts +++ b/packages/core/test/config/plugin.test.ts @@ -8,6 +8,7 @@ import { Catalog } from "@opencode-ai/core/catalog" import { ConfigPluginSource } from "@opencode-ai/core/config/plugin/source" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Global } from "@opencode-ai/util/global" import { Bus } from "@opencode-ai/core/bus" import { Location } from "@opencode-ai/core/location" import { LocationServiceMap } from "@opencode-ai/core/location-services" @@ -20,14 +21,18 @@ import { AbsolutePath } from "@opencode-ai/core/schema" import { Effect, Fiber, Logger, Stream } from "effect" import { Database } from "../../src/database/database" import { tmpdir } from "../fixture/tmpdir" +import { tempGlobalLayer } from "../fixture/global" import { testEffect } from "../lib/effect" const it = testEffect( - AppNodeBuilder.build(LayerNode.group([Database.node, Bus.node, SdkPlugins.node, LocationServiceMap.node])), + AppNodeBuilder.build(LayerNode.group([Database.node, Bus.node, SdkPlugins.node, LocationServiceMap.node]), [ + [Global.node, tempGlobalLayer], + ]), ) const staticIt = testEffect( AppNodeBuilder.build(LayerNode.group([Database.node, Bus.node, SdkPlugins.node, LocationServiceMap.node]), [ [ConfigPluginSource.node, ConfigPluginSource.empty], + [Global.node, tempGlobalLayer], ]), ) diff --git a/packages/core/test/fixture/global.ts b/packages/core/test/fixture/global.ts new file mode 100644 index 00000000000..b6fbfe4b37c --- /dev/null +++ b/packages/core/test/fixture/global.ts @@ -0,0 +1,27 @@ +import path from "path" +import { Global } from "@opencode-ai/util/global" +import { Effect, Layer } from "effect" +import { tmpdir } from "./tmpdir" + +export const tempGlobalLayer = Layer.unwrap( + Effect.acquireRelease( + Effect.promise(() => tmpdir()), + (tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()), + ).pipe( + Effect.map((tmp) => { + const data = path.join(tmp.path, "data") + const cache = path.join(tmp.path, "cache") + return Global.layerWith({ + home: path.join(tmp.path, "home"), + data, + cache, + config: path.join(tmp.path, "config"), + state: path.join(tmp.path, "state"), + tmp: path.join(tmp.path, "tmp"), + bin: path.join(cache, "bin"), + log: path.join(data, "log"), + repos: path.join(data, "repos"), + }) + }), + ), +) diff --git a/packages/core/test/location-layer.test.ts b/packages/core/test/location-layer.test.ts index da9e73c3c76..02ac8aefa02 100644 --- a/packages/core/test/location-layer.test.ts +++ b/packages/core/test/location-layer.test.ts @@ -9,6 +9,7 @@ import { Agent } from "@opencode-ai/core/agent" import { Catalog } from "@opencode-ai/core/catalog" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Global } from "@opencode-ai/util/global" import { LocationServiceMap } from "@opencode-ai/core/location-services" import { Location } from "@opencode-ai/core/location" import { Plugin } from "@opencode-ai/core/plugin" @@ -21,6 +22,7 @@ import { AbsolutePath } from "@opencode-ai/core/schema" import { Session } from "@opencode-ai/core/session" import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model" import { tmpdir } from "./fixture/tmpdir" +import { tempGlobalLayer } from "./fixture/global" import { testEffect } from "./lib/effect" import { toolDefinitions, waitForTool } from "./lib/tool" import { Database } from "../src/database/database" @@ -28,9 +30,15 @@ import { Bus } from "../src/bus" import { Reference } from "../src/reference" import { Tool } from "../src/tool" -const it = testEffect(AppNodeBuilder.build(LayerNode.group([Database.node, Bus.node, LocationServiceMap.node]))) +const it = testEffect( + AppNodeBuilder.build(LayerNode.group([Database.node, Bus.node, LocationServiceMap.node]), [ + [Global.node, tempGlobalLayer], + ]), +) const itWithSdk = testEffect( - AppNodeBuilder.build(LayerNode.group([Database.node, Bus.node, SdkPlugins.node, LocationServiceMap.node])), + AppNodeBuilder.build(LayerNode.group([Database.node, Bus.node, SdkPlugins.node, LocationServiceMap.node]), [ + [Global.node, tempGlobalLayer], + ]), ) describe("LocationServiceMap", () => { diff --git a/packages/core/test/tool-shell.test.ts b/packages/core/test/tool-shell.test.ts index 195d6855d85..0ddf2e60fdb 100644 --- a/packages/core/test/tool-shell.test.ts +++ b/packages/core/test/tool-shell.test.ts @@ -33,6 +33,7 @@ import { ShellTool } from "@opencode-ai/core/tool/plugin/shell" import { ToolOutput } from "@opencode-ai/core/tool-output" import { Tool } from "@opencode-ai/core/tool" import { tmpdir } from "./fixture/tmpdir" +import { tempGlobalLayer } from "./fixture/global" import { testEffect } from "./lib/effect" import { toolIdentity, executeTool, toolDefinitions, waitForTool } from "./lib/tool" @@ -138,6 +139,7 @@ const layer = AppNodeBuilder.build( [ [SessionExecution.node, executionNode], [Permission.node, permission], + [Global.node, tempGlobalLayer], ], ) diff --git a/packages/core/test/tool-subagent.test.ts b/packages/core/test/tool-subagent.test.ts index 9546582193d..3506ab29b77 100644 --- a/packages/core/test/tool-subagent.test.ts +++ b/packages/core/test/tool-subagent.test.ts @@ -4,6 +4,7 @@ import path from "path" import { Money } from "@opencode-ai/schema/money" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { LayerNode } from "@opencode-ai/util/effect/layer-node" +import { Global } from "@opencode-ai/util/global" import { makeGlobalNode } from "@opencode-ai/util/effect/app-node" import { Database } from "@opencode-ai/core/database/database" import { Bus } from "@opencode-ai/core/bus" @@ -26,6 +27,7 @@ import { PluginSupervisor } from "@opencode-ai/core/plugin/supervisor" import { SubagentTool } from "@opencode-ai/core/tool/plugin/subagent" import { Tool } from "@opencode-ai/core/tool" import { tmpdir } from "./fixture/tmpdir" +import { tempGlobalLayer } from "./fixture/global" import { testEffect } from "./lib/effect" import { executeTool, toolIdentity, waitForTool } from "./lib/tool" @@ -100,7 +102,10 @@ const layer = AppNodeBuilder.build( PluginRuntime.providerNode, LocationServiceMap.node, ]), - [[SessionExecution.node, executionNode]], + [ + [SessionExecution.node, executionNode], + [Global.node, tempGlobalLayer], + ], ) const it = testEffect(layer)