1package db
2
3import (
4 "context"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8)
9
10func TestConnect_SharesConnectionForSameDataDir(t *testing.T) {
11 t.Cleanup(ResetPool)
12
13 dataDir := t.TempDir()
14
15 conn1, err := Connect(context.Background(), dataDir)
16 require.NoError(t, err)
17
18 conn2, err := Connect(context.Background(), dataDir)
19 require.NoError(t, err)
20
21 require.Same(t, conn1, conn2, "should return the same *sql.DB for the same data dir")
22
23 // Releasing once should not close the connection.
24 require.NoError(t, Release(dataDir))
25 require.NoError(t, conn1.PingContext(context.Background()), "connection should still be usable after partial release")
26
27 // Releasing again should close it.
28 require.NoError(t, Release(dataDir))
29 require.Error(t, conn1.PingContext(context.Background()), "connection should be closed after final release")
30}
31
32func TestConnect_SeparateConnectionsForDifferentDataDirs(t *testing.T) {
33 t.Cleanup(ResetPool)
34
35 dir1 := t.TempDir()
36 dir2 := t.TempDir()
37
38 conn1, err := Connect(context.Background(), dir1)
39 require.NoError(t, err)
40
41 conn2, err := Connect(context.Background(), dir2)
42 require.NoError(t, err)
43
44 require.NotSame(t, conn1, conn2, "different data dirs should get different connections")
45
46 require.NoError(t, Release(dir1))
47 require.NoError(t, Release(dir2))
48}
49
50func TestRelease_NoopForUnknownDataDir(t *testing.T) {
51 t.Cleanup(ResetPool)
52
53 require.NoError(t, Release("/nonexistent/path"), "releasing unknown data dir should not error")
54}