mirror of
https://github.com/anthropics/claude-code.git
synced 2026-10-31 07:53:02 +08:00
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import { describe, expect, mock, test, tier } from 'claude-code/testing'
|
|
|
|
import Fixtures from './fixtures'
|
|
|
|
tier('builtin')
|
|
|
|
describe('git', () => {
|
|
test('each git child runs pinned to /work, in C locale', async ($, on) => {
|
|
const world = Fixtures.inRepository(on)
|
|
|
|
await $.session.start(Fixtures.SESSION)
|
|
await $.command.run(Fixtures.DIFF)
|
|
await world.clock.advance(Fixtures.SETTLE_MS)
|
|
|
|
const [discovery, ...pinned] = world.runs
|
|
|
|
expect(discovery?.argv).toContain('--show-toplevel')
|
|
expect(discovery?.init?.cwd).toBeUndefined()
|
|
expect(pinned.length).toBeGreaterThan(0)
|
|
|
|
for (const run of pinned) {
|
|
expect(run.argv.slice(0, 3)).toEqual([
|
|
'git',
|
|
'--git-dir=/work/.git',
|
|
'--work-tree=/work',
|
|
])
|
|
|
|
expect(run.init).toMatchObject({ cwd: '/work', env: { LC_ALL: 'C' } })
|
|
}
|
|
})
|
|
|
|
test('a file moved in since the start is session work', async ($, on) => {
|
|
const clock = Fixtures.startsSession(on, Fixtures.SETTLE_MS)
|
|
|
|
on('process.run', ($, e) => ({
|
|
value: Fixtures.gitIn(e.argv, Fixtures.MOVED_IN),
|
|
}))
|
|
|
|
on('ui.open', () => ({ value: undefined }))
|
|
on('ui.invalidate', () => ({ value: undefined }))
|
|
on('session.messages', () => ({ value: [] }))
|
|
Fixtures.oldFiles(on)
|
|
mock.store(on)
|
|
|
|
await $.session.start(Fixtures.SESSION)
|
|
await $.command.run(Fixtures.DIFF)
|
|
await clock.advance(Fixtures.SETTLE_MS)
|
|
|
|
const drawn = Fixtures.textOf(await $.ui.render(Fixtures.PANE))
|
|
|
|
expect(drawn).toContain('1 file changed +1 -1')
|
|
expect(drawn).toContain('moved.ts')
|
|
expect(drawn).toContain('+1 file edited before this session (show)')
|
|
})
|
|
})
|