- downloads.ts observe: re-read download_task FOR UPDATE inside the tx and merge from the locked row; qB sync could overwrite imported back to importing when verifyAndImport committed between the sync read and write (E8 flake). - agent finalize: accept summaryPrefix so the recovery verdict is written with the terminal status in one update (E6 read a budget_exceeded run before the "未恢复:…" annotation landed); recover-summary step kept, now idempotent no-op. - organize.ts: drop local slotComplete and the once-subscription completion write; completion/history are decided only by applySlotEvent(verify_passed) (W5-C follow-up, removes double write). Manual slot organize uses the shared subscriptions.slotComplete. - vitest: server split into unit (parallel) and pg (file-serial, groupOrder 1) projects; packages/tasks file-serial; explicit worker concurrency in e2e. - docs: W6 stabilization record in 04-v0.1-acceptance.md. Test expectations unchanged. Full `deno task ci` x3 green: 369s / 341s / 337s. Co-Authored-By: Claude Opus 5.5 <[email protected]>
41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import { defineConfig } from "vitest/config";
|
|
|
|
// 两组测试:
|
|
// unit —— 纯内存、无 PG,文件并行;
|
|
// pg —— 真实 PG 的集成/e2e(每文件独立业务 schema + 引擎 schema,真实 worker/后台循环),文件级串行,
|
|
// 并排在 unit 之后(groupOrder)。并发全量跑时多个 e2e 的 worker/轮询/迁移互相抢 CPU 与连接,
|
|
// 会把"入库→状态推进"这类时序拉长到超时,也会放大竞态;串行让每个文件拿到稳定的时序预算。
|
|
// 新测试文件缺省归入 pg(串行,安全);确认不碰 PG 的才加进 UNIT。
|
|
const UNIT = [
|
|
"test/api-registry.test.ts",
|
|
"test/auth.test.ts",
|
|
"test/health.test.ts",
|
|
"test/invoke-limits.test.ts",
|
|
"test/logger.test.ts",
|
|
"test/mapping-compat.test.ts",
|
|
"test/modules.test.ts",
|
|
"test/sse.test.ts",
|
|
"test/static.test.ts",
|
|
];
|
|
|
|
export default defineConfig({
|
|
test: {
|
|
// 建/删 schema 在一把咨询锁上排队(withSchemaLock),迁移 + 引擎 schema 在负载下可能超过缺省 10s
|
|
hookTimeout: 120_000,
|
|
teardownTimeout: 60_000,
|
|
projects: [
|
|
{ extends: true, test: { name: "unit", include: UNIT } },
|
|
{
|
|
extends: true,
|
|
test: {
|
|
name: "pg",
|
|
include: ["test/**/*.test.ts", "src/**/*.test.ts"],
|
|
exclude: UNIT,
|
|
fileParallelism: false,
|
|
sequence: { groupOrder: 1 },
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|