diff --git a/packages/opencode/src/index.ts b/packages/opencode/src/index.ts index 0c2251609ce4..35f78eb559ac 100644 --- a/packages/opencode/src/index.ts +++ b/packages/opencode/src/index.ts @@ -55,7 +55,7 @@ function show(out: string) { const text = out.trimStart() if (!text.startsWith("opencode ")) { process.stderr.write(UI.logo() + EOL + EOL) - process.stderr.write(text) + process.stderr.write(text + EOL) return } process.stderr.write(out) diff --git a/packages/opencode/test/cli/help/help-snapshots.test.ts b/packages/opencode/test/cli/help/help-snapshots.test.ts index dd49b2b33a3c..edd92120adc6 100644 --- a/packages/opencode/test/cli/help/help-snapshots.test.ts +++ b/packages/opencode/test/cli/help/help-snapshots.test.ts @@ -13,6 +13,7 @@ // version (changes per release), so we'd snapshot a moving target. import { describe, expect } from "bun:test" import { Effect } from "effect" +import { EOL } from "os" import { cliIt } from "../../lib/cli-process" import { normalizeForSnapshot, PATH_SEP } from "../../lib/snapshot" @@ -98,6 +99,10 @@ describe("opencode CLI help-text snapshots", () => { "every documented command emits stable help text", ({ opencode }) => Effect.gen(function* () { + const topLevel = yield* opencode.spawn(["--help"], { env: SNAPSHOT_ENV }) + expect(topLevel.exitCode).toBe(0) + expect(topLevel.stderr.endsWith(EOL)).toBe(true) + const argvs: Array = [...TOP_LEVEL.map((c) => [c] as const), ...SUBCOMMANDS] // Spawn in parallel, then assert in argv order so snapshot output is