mirror of
https://github.com/anomalyco/opencode.git
synced 2026-11-08 09:37:47 +03:00
123 lines
5.1 KiB
TypeScript
123 lines
5.1 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import { App } from "@opencode/core/app"
|
|
import { Config } from "@opencode/core/config"
|
|
import { Flag } from "@opencode/core/flag"
|
|
import { Document, Info } from "@opencode/schema/config"
|
|
import { ConfigExperimental } from "@opencode/schema/config/experimental"
|
|
import { ConfigFlag } from "@opencode/schema/config/flag"
|
|
import { Effect, Layer, Record } from "effect"
|
|
import { testEffect } from "./lib/effect"
|
|
|
|
const document = (experimental?: ConstructorParameters<typeof ConfigExperimental.Info>[0]) =>
|
|
new Document({
|
|
type: "document",
|
|
info: new Info(experimental === undefined ? {} : { experimental: new ConfigExperimental.Info(experimental) }),
|
|
})
|
|
|
|
const every = (state: Flag.State) => Record.map(ConfigFlag.registry, () => state)
|
|
|
|
describe("Flag.resolve", () => {
|
|
test("turns flags on by default only in local and dev builds", () => {
|
|
const table = ["local", "dev", "beta", "latest", "my-branch", "unknown"].map((channel) => [
|
|
channel,
|
|
Flag.resolve({ entries: [], channel }).todo.enabled,
|
|
])
|
|
expect(Object.fromEntries(table)).toEqual({
|
|
local: true,
|
|
dev: true,
|
|
beta: false,
|
|
latest: false,
|
|
"my-branch": false,
|
|
unknown: false,
|
|
})
|
|
})
|
|
|
|
test("every registered flag, including codemode_vm, is off in a latest release build", () => {
|
|
expect(Flag.resolve({ entries: [], channel: "latest" })).toEqual(every({ enabled: false, source: "default" }))
|
|
expect(Flag.resolve({ entries: [], channel: "latest" }).codemode_vm.enabled).toBe(false)
|
|
expect(Flag.resolve({ entries: [], channel: "dev" }).codemode_vm.enabled).toBe(true)
|
|
})
|
|
|
|
test("config overrides the default and OPENCODE_FLAGS overrides config", () => {
|
|
const entries = [document({ todo: true, schedules: false })]
|
|
const flags = Flag.resolve({ entries, channel: "dev", overrides: " media_blob , -todo,unknown_flag" })
|
|
expect(
|
|
[flags.todo, flags.schedules, flags.media_blob, flags.artifacts].map((flag) => [flag.enabled, flag.source]),
|
|
).toEqual([
|
|
[false, "env"],
|
|
[false, "config"],
|
|
[true, "env"],
|
|
[true, "default"],
|
|
])
|
|
})
|
|
|
|
test("reads experimental from the highest-priority document that sets it, as before", () => {
|
|
const flags = Flag.resolve({
|
|
entries: [document({ todo: true }), document({ subagent_depth: 2 }), document()],
|
|
channel: "latest",
|
|
})
|
|
expect([flags.todo.enabled, flags.todo.source]).toEqual([false, "default"])
|
|
})
|
|
|
|
test("OPENCODE_FLAGS=all turns every flag on, and a -key in the same list still wins", () => {
|
|
const entries = [document({ media_blob: false })]
|
|
expect(Flag.resolve({ entries, channel: "latest", overrides: "all" })).toEqual(
|
|
every({ enabled: true, source: "env" }),
|
|
)
|
|
expect(Flag.resolve({ entries: [], channel: "latest", overrides: " -media_blob , all, " })).toEqual({
|
|
...every({ enabled: true, source: "env" }),
|
|
media_blob: { enabled: false, source: "env" },
|
|
})
|
|
expect(Flag.resolve({ entries, channel: "latest", overrides: "-all" })).toEqual(
|
|
Flag.resolve({ entries, channel: "latest" }),
|
|
)
|
|
})
|
|
|
|
test("experimental.all_flags turns every flag on below OPENCODE_FLAGS and below a per-flag setting", () => {
|
|
const entries = [document({ all_flags: true, media_blob: false })]
|
|
expect(Flag.resolve({ entries, channel: "latest", overrides: "-artifacts" })).toEqual({
|
|
...every({ enabled: true, source: "config" }),
|
|
media_blob: { enabled: false, source: "config" },
|
|
artifacts: { enabled: false, source: "env" },
|
|
})
|
|
})
|
|
|
|
test("experimental.all_flags: false is not a kill switch, and all_flags in OPENCODE_FLAGS does nothing", () => {
|
|
expect(Flag.resolve({ entries: [document({ all_flags: false })], channel: "dev" })).toEqual(
|
|
every({ enabled: true, source: "default" }),
|
|
)
|
|
expect(Flag.resolve({ entries: [], channel: "latest", overrides: "all_flags" })).toEqual(
|
|
Flag.resolve({ entries: [], channel: "latest" }),
|
|
)
|
|
})
|
|
|
|
test("a global all_flags survives a project experimental block, and a project all_flags: false stops it", () => {
|
|
const global = document({ all_flags: true })
|
|
expect(
|
|
Flag.resolve({ entries: [global, document({ subagent_depth: 2, todo: false })], channel: "latest" }),
|
|
).toEqual({ ...every({ enabled: true, source: "config" }), todo: { enabled: false, source: "config" } })
|
|
expect(Flag.resolve({ entries: [global, document({ all_flags: false })], channel: "latest" })).toEqual(
|
|
every({ enabled: false, source: "default" }),
|
|
)
|
|
})
|
|
})
|
|
|
|
const it = testEffect(
|
|
Layer.mergeAll(
|
|
Config.testLayer([document({ artifacts: true })]),
|
|
App.layer({ channel: "latest" }),
|
|
Layer.succeed(Flag.Overrides, "schedules"),
|
|
),
|
|
)
|
|
|
|
describe("Flag.enabled", () => {
|
|
it.effect("reads the Config, channel and OPENCODE_FLAGS in scope", () =>
|
|
Effect.gen(function* () {
|
|
expect(yield* Flag.enabled("artifacts")).toBe(true)
|
|
expect(yield* Flag.enabled("schedules")).toBe(true)
|
|
expect(yield* Flag.enabled("todo")).toBe(false)
|
|
expect((yield* Flag.all).schedules).toEqual({ enabled: true, source: "env" })
|
|
}),
|
|
)
|
|
})
|