Files
deepseek-harness/packages/document/office-kit/tests/default-outputs.ts
T
yudshj 611e42b9a5 fix(office): 输出清理限定在自有目录,缓存命中前确认读权限
- office-kit:启动 sweep 只处理 session-<hash>/<uuid> 格式的真实目录,不跟随 symlink;删除成功后才释放记账,失败保留并重试,dispose 等待全部删除;容量腾不出时 save 明确失败
- office-kit / web-app 测试:显式使用临时 outputDirectory,不再清理真实 $DSH_HOME
- tool-office:交给 kit 前读 1 字节并重核 version,缓存命中也受当次读权限约束
- 文档:升级指南与 README 写明 render 不再保存图片文件、原生引擎在 Host 内运行;skill-office 链接 #7677;清理 Office-to-PDF 旧描述并重新生成 catalog
- 客户端:renderImages 改用 useCallback;e2e 补 assertNever,依赖按字母序
2026-11-04 18:17:58 +08:00

24 lines
1.2 KiB
TypeScript

/** Stand-in for the default output directory that proves a spec's providers never sweep it. */
import { access, mkdir, rm, utimes, writeFile } from 'node:fs/promises'
import { join } from 'node:path'
import { afterAll, beforeAll, expect } from 'vitest'
/**
* Place an expired leftover in the store's own naming format under `home`'s default output directory, and require it
* to survive every test in the calling spec. The spec must mock `dshHomePath` to resolve under `home`.
* @param home - temporary directory standing in for `$DSH_HOME`; removed after the spec.
*/
export function expectDefaultOutputsUntouched(home: string): void {
const leftover = join(home, 'office-kit', 'outputs', `session-${'0'.repeat(24)}`, '00000000-0000-4000-8000-000000000000')
beforeAll(async () => {
await mkdir(leftover, { recursive: true })
await writeFile(join(leftover, 'sentinel.pdf'), '')
const expired = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
await utimes(leftover, expired, expired)
})
afterAll(async () => {
try { await expect(access(join(leftover, 'sentinel.pdf'))).resolves.toBeUndefined() }
finally { await rm(home, { recursive: true, force: true }) }
})
}