cc-haha/src/utils/analyzeContext.test.ts
2026-07-17 18:33:19 +08:00

60 lines
1.8 KiB
TypeScript

import { afterAll, beforeAll, describe, expect, test } from 'bun:test'
import { mkdtemp, rm } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
let configDir: string
const originalConfigDir = process.env.CLAUDE_CONFIG_DIR
const originalSimpleMode = process.env.CLAUDE_CODE_SIMPLE
describe('analyzeContextUsage', () => {
beforeAll(async () => {
configDir = await mkdtemp(join(tmpdir(), 'cc-haha-analyze-context-'))
process.env.CLAUDE_CONFIG_DIR = configDir
process.env.CLAUDE_CODE_SIMPLE = '1'
})
afterAll(async () => {
if (originalConfigDir === undefined) {
delete process.env.CLAUDE_CONFIG_DIR
} else {
process.env.CLAUDE_CONFIG_DIR = originalConfigDir
}
if (originalSimpleMode === undefined) {
delete process.env.CLAUDE_CODE_SIMPLE
} else {
process.env.CLAUDE_CODE_SIMPLE = originalSimpleMode
}
await rm(configDir, { recursive: true, force: true })
})
test('analyzes attachment messages for the context status view', async () => {
const { analyzeContextUsage } = await import('./analyzeContext.js')
const result = await analyzeContextUsage(
[
{
type: 'attachment',
attachment: { type: 'directory', path: configDir },
uuid: 'issue-1022',
timestamp: '2026-07-17T00:00:00.000Z',
},
],
'claude-sonnet-4-20250514',
async () => ({ mode: 'default' }),
[],
{ activeAgents: [], allAgents: [] },
undefined,
undefined,
undefined,
undefined,
{ estimateOnly: true },
)
expect(result.messageBreakdown?.attachmentTokens).toBeGreaterThan(0)
expect(result.messageBreakdown?.attachmentsByType).toEqual([
{ name: 'directory', tokens: expect.any(Number) },
])
})
})