mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-15 21:05:51 +00:00
- Remove 203 unused biome-ignore suppression comments (noConsole rule is off) - Apply all FIXABLE transforms: Math.pow->**, parseInt radix, noUselessContinue, noUselessUndefinedInitialization, useIndexOf, useRegexLiterals, useShorthandFunctionType, noPrototypeBuiltins - Add targeted suppressions for 31 intentional patterns - Format all src/ files via Biome (quote style, import line width) - Result: 0 errors, 0 warnings across 2649 files
96 lines
2.7 KiB
TypeScript
96 lines
2.7 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, test } from 'bun:test'
|
|
import {
|
|
resetStateForTests,
|
|
setOriginalCwd,
|
|
setProjectRoot,
|
|
} from '../bootstrap/state'
|
|
import {
|
|
getSystemContext,
|
|
getUserContext,
|
|
setSystemPromptInjection,
|
|
} from '../context'
|
|
import { clearMemoryFileCaches } from '../utils/claudemd'
|
|
import {
|
|
cleanupTempDir,
|
|
createTempDir,
|
|
writeTempFile,
|
|
} from '../../tests/mocks/file-system'
|
|
|
|
let tempDir = ''
|
|
let projectClaudeMdContent = ''
|
|
|
|
beforeEach(async () => {
|
|
tempDir = await createTempDir('context-baseline-')
|
|
projectClaudeMdContent = `baseline-${Date.now()}`
|
|
|
|
resetStateForTests()
|
|
setOriginalCwd(tempDir)
|
|
setProjectRoot(tempDir)
|
|
await writeTempFile(tempDir, 'CLAUDE.md', projectClaudeMdContent)
|
|
|
|
clearMemoryFileCaches()
|
|
getUserContext.cache.clear?.()
|
|
getSystemContext.cache.clear?.()
|
|
setSystemPromptInjection(null)
|
|
delete process.env.CLAUDE_CODE_DISABLE_CLAUDE_MDS
|
|
})
|
|
|
|
afterEach(async () => {
|
|
clearMemoryFileCaches()
|
|
getUserContext.cache.clear?.()
|
|
getSystemContext.cache.clear?.()
|
|
setSystemPromptInjection(null)
|
|
delete process.env.CLAUDE_CODE_DISABLE_CLAUDE_MDS
|
|
resetStateForTests()
|
|
if (tempDir) {
|
|
await cleanupTempDir(tempDir)
|
|
}
|
|
})
|
|
|
|
describe('context baseline', () => {
|
|
test('getUserContext includes currentDate and project CLAUDE.md content', async () => {
|
|
const ctx = await getUserContext()
|
|
|
|
expect(ctx.currentDate).toContain("Today's date is")
|
|
expect(ctx.claudeMd).toContain(projectClaudeMdContent)
|
|
})
|
|
|
|
test('CLAUDE_CODE_DISABLE_CLAUDE_MDS suppresses claudeMd loading', async () => {
|
|
process.env.CLAUDE_CODE_DISABLE_CLAUDE_MDS = '1'
|
|
|
|
const ctx = await getUserContext()
|
|
|
|
expect(ctx.currentDate).toContain("Today's date is")
|
|
expect(ctx.claudeMd).toBeUndefined()
|
|
})
|
|
|
|
test('setSystemPromptInjection clears the memoized user-context cache', async () => {
|
|
const first = await getUserContext()
|
|
process.env.CLAUDE_CODE_DISABLE_CLAUDE_MDS = '1'
|
|
|
|
const second = await getUserContext()
|
|
expect(first.claudeMd).toContain(projectClaudeMdContent)
|
|
expect(second.claudeMd).toContain(projectClaudeMdContent)
|
|
|
|
setSystemPromptInjection('cache-break')
|
|
|
|
const third = await getUserContext()
|
|
expect(third.claudeMd).toBeUndefined()
|
|
})
|
|
|
|
test('getSystemContext reflects system prompt injection after cache invalidation', async () => {
|
|
const first = await getSystemContext()
|
|
expect(first.gitStatus).toBeUndefined()
|
|
expect(first.cacheBreaker).toBeUndefined()
|
|
|
|
setSystemPromptInjection('baseline-cache-break')
|
|
|
|
const second = await getSystemContext()
|
|
if ('cacheBreaker' in second) {
|
|
expect(second.cacheBreaker).toContain('baseline-cache-break')
|
|
} else {
|
|
expect(second.gitStatus).toBeUndefined()
|
|
}
|
|
})
|
|
})
|