- 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,依赖按字母序
24 lines
1.2 KiB
TypeScript
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 }) }
|
|
})
|
|
}
|