21 lines
868 B
TypeScript
21 lines
868 B
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { extractBashBlocks, singleLineTerminalInsert, terminalContextLineCount } from '../../src/utils/aiResponse'
|
|
|
|
describe('terminal AI response guards', () => {
|
|
it('extracts shell code without treating prose as a command', () => {
|
|
expect(extractBashBlocks('检查:\n```bash\nuname -a\n```')).toEqual(['uname -a'])
|
|
expect(extractBashBlocks('请运行 uname -a')).toEqual([])
|
|
})
|
|
|
|
it('only permits a single line and never adds enter', () => {
|
|
expect(singleLineTerminalInsert('date\n')).toBe('date')
|
|
expect(singleLineTerminalInsert('date\nuname -a')).toBeNull()
|
|
expect(singleLineTerminalInsert('')).toBeNull()
|
|
})
|
|
|
|
it('counts exactly the context lines shown to the user', () => {
|
|
expect(terminalContextLineCount('a\nb\n')).toBe(2)
|
|
expect(terminalContextLineCount('')).toBe(0)
|
|
})
|
|
})
|