diff --git a/packages/opencode/src/index.ts b/packages/opencode/src/index.ts index 13540a73a36f..7658fd2ba3ea 100644 --- a/packages/opencode/src/index.ts +++ b/packages/opencode/src/index.ts @@ -34,12 +34,13 @@ const args = hideBin(process.argv) function show(out: string) { const text = out.trimStart() + const newline = out.endsWith(EOL) ? "" : EOL if (!text.startsWith("opencode ")) { process.stderr.write(UI.logo() + EOL + EOL) - process.stderr.write(text + EOL) + process.stderr.write(text + newline) return } - process.stderr.write(out) + process.stderr.write(out + newline) } const cli = yargs(args) diff --git a/packages/opencode/test/cli/help/help-snapshots.test.ts b/packages/opencode/test/cli/help/help-snapshots.test.ts index edd92120adc6..c35527ef4c2a 100644 --- a/packages/opencode/test/cli/help/help-snapshots.test.ts +++ b/packages/opencode/test/cli/help/help-snapshots.test.ts @@ -126,7 +126,8 @@ describe("opencode CLI help-text snapshots", () => { // yargs writes --help to stderr, not stdout. Snapshotting stderr // means our test catches the help body; stdout for these commands // is expected to be empty. - expect(normalize(result.stderr)).toMatchSnapshot(`opencode ${argv.join(" ")} --help`) + expect(result.stderr.endsWith(EOL)).toBe(true) + expect(normalize(result.stderr).replace(/\n$/, "")).toMatchSnapshot(`opencode ${argv.join(" ")} --help`) } if (failures.length > 0) { throw new Error(`Help text failed for:\n ${failures.join("\n ")}`)