feat: support multiple camera previews and concurrent agent code navigation
This commit is contained in:
@@ -98,6 +98,51 @@ test('legacy cancelled references can be opened with the same read-only navigati
|
||||
assert.equal(h.message().codeReferenceStates.location.status, 'opened')
|
||||
})
|
||||
|
||||
test('code navigation does not block or abort a pending model response', async () => {
|
||||
const h = consentHarness()
|
||||
const controller = new AbortController()
|
||||
h.globals.abortControllerRef.current = controller
|
||||
let opened = 0
|
||||
await h.openCodeReference('answer', 'location', async (_reference, isCurrent) => {
|
||||
assert.equal(isCurrent(), true)
|
||||
opened++
|
||||
})
|
||||
assert.equal(opened, 1)
|
||||
assert.equal(controller.signal.aborted, false)
|
||||
assert.equal(h.globals.abortControllerRef.current, controller)
|
||||
assert.equal(h.message().codeReferenceStates.location.status, 'opened')
|
||||
})
|
||||
|
||||
test('an arriving model response does not cancel an in-flight code navigation', async () => {
|
||||
const h = consentHarness()
|
||||
h.globals.abortControllerRef.current = new AbortController()
|
||||
let finish, current
|
||||
const pending = h.openCodeReference('answer', 'location', (_reference, isCurrent) => {
|
||||
current = isCurrent
|
||||
return new Promise(resolve => { finish = resolve })
|
||||
})
|
||||
h.globals.messageStateRef.current.messages.push({ id: 'new-answer', role: 'assistant' })
|
||||
h.globals.abortControllerRef.current = null
|
||||
assert.equal(current(), true)
|
||||
finish()
|
||||
await pending
|
||||
assert.equal(h.globals.messageStateRef.current.messages[0].codeReferenceStates.location.status, 'opened')
|
||||
})
|
||||
|
||||
test('starting file application invalidates a navigation that is still reading', async () => {
|
||||
const h = consentHarness()
|
||||
let finish, current
|
||||
const pending = h.openCodeReference('answer', 'location', (_reference, isCurrent) => {
|
||||
current = isCurrent
|
||||
return new Promise((_resolve, reject) => { finish = () => reject(Error('applying')) })
|
||||
})
|
||||
h.globals.applyingRef.current = true
|
||||
assert.equal(current(), false)
|
||||
finish()
|
||||
await pending
|
||||
assert.equal(h.message().codeReferenceStates.location.status, 'error')
|
||||
})
|
||||
|
||||
test('duplicate clicks, invalid IDs and busy tasks do not open more files', async () => {
|
||||
const h = consentHarness()
|
||||
let finish, opened = 0
|
||||
|
||||
Reference in New Issue
Block a user