fix: address codex review round 1

Translate a mid-read AbortError from readFile into the seam's structured
FsError('FS_ABORTED') in readWholeText and readForEdit (the streaming/write
paths already did), and make the socket-type probe test reject on a listen
error instead of hanging where unix-domain sockets are unavailable.
This commit is contained in:
Dudu-0223
2026-06-26 17:45:54 +08:00
parent ef37ce3b9d
commit 1409e2ed15
2 changed files with 43 additions and 3 deletions
+25 -1
View File
@@ -94,7 +94,10 @@ describe('probe', () => {
it('reports a socket/special file as type "other"', async () => {
const sockPath = join(dir, 'sock')
const server = createServer()
await new Promise<void>((resolve) => { server.listen(sockPath, () => { resolve() }) })
await new Promise<void>((resolve, reject) => {
server.once('error', reject)
server.listen(sockPath, () => { resolve() })
})
try {
expect((await probe(sockPath))?.type).toBe('other')
} finally {
@@ -133,6 +136,17 @@ describe('readWholeText', () => {
await writeFile(file, 'one\ntwo')
expect(await readWholeText(localTarget(file), new AbortController().signal)).toBe('one\ntwo')
})
it('translates a mid-read AbortError into FS_ABORTED', async () => {
const file = join(dir, 'a.txt')
await writeFile(file, 'one\ntwo')
const ac = new AbortController()
// Abort after the synchronous entry check but before readFile runs (the
// stat await yields control back here), so readFile rejects AbortError.
const pending = readWholeText(localTarget(file), ac.signal)
ac.abort()
await expect(pending).rejects.toMatchObject({ code: 'FS_ABORTED' })
})
})
describe('streamWholeText', () => {
@@ -281,4 +295,14 @@ describe('readForEdit + restoreLineEndings', () => {
const original = await readForEdit(file, file, new AbortController().signal)
expect(original.content).toBe('one\ntwo')
})
it('translates a mid-read AbortError into FS_ABORTED', async () => {
const file = join(dir, 'a.txt')
await writeFile(file, 'one\ntwo')
const ac = new AbortController()
// Abort after the synchronous entry check, while readFile is pending.
const pending = readForEdit(file, file, ac.signal)
ac.abort()
await expect(pending).rejects.toMatchObject({ code: 'FS_ABORTED' })
})
})