diff options
| author | Aiden Cline <[email protected]> | 2026-04-04 16:40:28 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-04 16:40:28 -0700 |
| commit | 8b8d4fa066a1de331f6e478ae4055636a9271707 (patch) | |
| tree | 24a2ea1353ebfa6f9eaacf1ae47e2ae0533ff9b0 /packages | |
| parent | 6253ef0c27bd9f3f6bcf4ab3e57637b689bbc217 (diff) | |
| download | opencode-8b8d4fa066a1de331f6e478ae4055636a9271707.tar.gz opencode-8b8d4fa066a1de331f6e478ae4055636a9271707.zip | |
test: add regression test for double counting bug (#21053)
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/opencode/test/session/compaction.test.ts | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/packages/opencode/test/session/compaction.test.ts b/packages/opencode/test/session/compaction.test.ts index 0dac255b1..799bb3e2a 100644 --- a/packages/opencode/test/session/compaction.test.ts +++ b/packages/opencode/test/session/compaction.test.ts @@ -1080,7 +1080,7 @@ describe("session.getUsage", () => { expect(result.tokens.cache.read).toBe(200) }) - test("handles reasoning tokens", () => { + test("separates reasoning tokens from output tokens", () => { const model = createModel({ context: 100_000, output: 32_000 }) const result = Session.getUsage({ model, @@ -1092,7 +1092,35 @@ describe("session.getUsage", () => { }, }) + expect(result.tokens.input).toBe(1000) + expect(result.tokens.output).toBe(400) expect(result.tokens.reasoning).toBe(100) + expect(result.tokens.total).toBe(1500) + }) + + test("does not double count reasoning tokens in cost", () => { + const model = createModel({ + context: 100_000, + output: 32_000, + cost: { + input: 0, + output: 15, + cache: { read: 0, write: 0 }, + }, + }) + const result = Session.getUsage({ + model, + usage: { + inputTokens: 0, + outputTokens: 1_000_000, + totalTokens: 1_000_000, + reasoningTokens: 250_000, + }, + }) + + expect(result.tokens.output).toBe(750_000) + expect(result.tokens.reasoning).toBe(250_000) + expect(result.cost).toBe(15) }) test("handles undefined optional values gracefully", () => { |
