db_reopen_test.go 726 B

123456789101112131415161718192021222324252627
  1. package database
  2. import (
  3. "path/filepath"
  4. "testing"
  5. )
  6. // A replaced pool that stays open keeps its database file open; Windows then
  7. // cannot delete or replace that file.
  8. func TestInitDBClosesThePoolItReplaces(t *testing.T) {
  9. dbPath := filepath.Join(t.TempDir(), "x-ui.db")
  10. if err := InitDB(dbPath); err != nil {
  11. t.Fatalf("first InitDB: %v", err)
  12. }
  13. t.Cleanup(func() { _ = CloseDB() })
  14. replaced, err := GetDB().DB()
  15. if err != nil {
  16. t.Fatalf("first pool: %v", err)
  17. }
  18. if err := InitDB(dbPath); err != nil {
  19. t.Fatalf("second InitDB: %v", err)
  20. }
  21. if err := replaced.Ping(); err == nil || err.Error() != "sql: database is closed" {
  22. t.Fatalf("replaced pool Ping() = %v, want sql: database is closed", err)
  23. }
  24. }