testsupport_test.go 940 B

123456789101112131415161718192021222324252627
  1. package core
  2. import (
  3. "testing"
  4. "time"
  5. )
  6. // fixOpenDB 开一个临时库: 关掉自动提交 (只在显式 Commit 时落盘), 并注册收尾关闭。
  7. //
  8. // 这个助手原本住在 page_leak_fix_test.go 里, 那个文件在上一次提交里被删掉了,
  9. // 但 newtypes_test.go 仍在用它 —— core 包的测试因此整个编译不过
  10. // (undefined: fixOpenDB)。这里把它单独放一个文件, 别再跟着别的用例一起被带走。
  11. func fixOpenDB(t *testing.T) *DB {
  12. t.Helper()
  13. // t.TempDir 的清理注册在前, 下面的 Close 注册在后 → Close 先执行, 文件不会占用。
  14. db, err := Open(t.TempDir() + "/testsupport.db")
  15. if err != nil {
  16. t.Fatalf("open: %v", err)
  17. }
  18. db.SetAutoCommitDelay(0) // 0 = 关闭自动提交, 只在显式 Commit 时落盘
  19. t.Cleanup(func() {
  20. start := time.Now()
  21. _ = db.Close()
  22. t.Logf("[耗时] Close (含收尾 Commit+fsync): %v", time.Since(start))
  23. })
  24. return db
  25. }