Keep each test database when the pool replaces its connection (closes #209)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
SQLite deletes a shared in-memory database when its last connection closes. A query cancelled while it runs makes the pool close its connection, so a test could lose all its tables and rows at random. NewTestDatabaseURL in internal/db returns the URL of a new in-memory database with a random name. It holds one connection to it open until the test ends. The db, handlers, ircserver, server and service tests now take their database URL from it. A new test cancels a query on such a database, checks with a TEMP table that the connection was replaced, and checks that a row is still there. Model: opus-5-5
This commit is contained in:
@@ -5,7 +5,6 @@
|
||||
package server_test
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
@@ -241,10 +240,7 @@ func newApp(
|
||||
stats.New,
|
||||
),
|
||||
fx.Decorate(func(cfg *config.Config) *config.Config {
|
||||
// A random name, so that no other test can share it.
|
||||
cfg.DBURL = fmt.Sprintf(
|
||||
"file:%s?mode=memory&cache=shared", rand.Text(),
|
||||
)
|
||||
cfg.DBURL = db.NewTestDatabaseURL(t)
|
||||
cfg.Port = port
|
||||
|
||||
return cfg
|
||||
|
||||
Reference in New Issue
Block a user