2026-10-21 08:05:08 +08:00
|
|
|
|
import { fileURLToPath } from 'node:url'
|
2026-10-20 17:36:33 +08:00
|
|
|
|
import { defineConfig } from 'vitest/config'
|
2026-10-21 08:05:08 +08:00
|
|
|
|
|
|
|
|
|
|
// 跨包源码直连(Plan 2 Task 1):与根 tsconfig compilerOptions.paths 保持同一映射——
|
|
|
|
|
|
// vitest 不读 tsconfig paths,须在此镜像一份;三方消费(包级 tsc / vitest / tsx)
|
|
|
|
|
|
// 均直连 src/index.ts,不经 dist、无需预构建。
|
|
|
|
|
|
const src = (p: string) => fileURLToPath(new URL(p, import.meta.url))
|
|
|
|
|
|
|
2026-10-20 17:36:33 +08:00
|
|
|
|
export default defineConfig({
|
2026-10-21 08:05:08 +08:00
|
|
|
|
resolve: {
|
|
|
|
|
|
alias: {
|
|
|
|
|
|
'@sf/contracts': src('packages/contracts/src/index.ts'),
|
|
|
|
|
|
'@sf/adapter-wp': src('packages/adapter-wordpress/src/index.ts'),
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2026-10-20 17:36:33 +08:00
|
|
|
|
test: {
|
|
|
|
|
|
include: ['tests/**/*.test.ts', 'packages/*/test/**/*.test.ts', 'apps/*/test/**/*.test.ts'],
|
2026-10-20 20:43:13 +08:00
|
|
|
|
// 集成测试库供给(Task 13):setup 建 sf_test_<ts> 临时库并全量迁移,
|
|
|
|
|
|
// 设 DATABASE_URL_TEST 让所有 getDb() 自动指过去;teardown 负责 DROP。
|
|
|
|
|
|
globalSetup: ['tests/integration/global-setup.ts'],
|
2026-10-20 17:36:33 +08:00
|
|
|
|
testTimeout: 30000,
|
2026-10-20 20:02:57 +08:00
|
|
|
|
// 集成测试共库且清场会做全局态变更(不可变表 DISABLE/ENABLE TRIGGER 是库级 DDL,
|
|
|
|
|
|
// 对所有会话可见):文件级并行时 A 文件清场窗口会与 B 文件的不可变断言竞态(实测
|
|
|
|
|
|
// db.media 清场 disable content_revisions_immutable 期间,db.content 恰好断言该触发器
|
|
|
|
|
|
// → UPDATE 意外放行)。串行执行文件消除该竞态;套件仅数秒,并行无收益。
|
|
|
|
|
|
fileParallelism: false,
|
2026-10-20 17:36:33 +08:00
|
|
|
|
},
|
|
|
|
|
|
})
|