11package duckdb
22
33import (
4+ "database/sql"
45 "fmt"
56 "path/filepath"
67 "testing"
78
9+ "github.com/stretchr/testify/assert"
10+
811 _ "github.com/duckdb/duckdb-go/v2"
912 "github.com/golang-migrate/migrate/v4"
1013 dt "github.com/golang-migrate/migrate/v4/database/testing"
@@ -28,26 +31,64 @@ func Test(t *testing.T) {
2831func TestMigrate (t * testing.T ) {
2932 dir := t .TempDir ()
3033 dbFile := filepath .Join (dir , "test.duckdb" )
31- addr := fmt .Sprintf ("duckdb://%s" , dbFile )
3234
33- ddb := & DuckDB {}
34- d , err := ddb .Open (addr )
35+ db , err := sql .Open ("duckdb" , dbFile )
3536 if err != nil {
36- t .Fatalf ("calling Open() on addr %s: %s" , addr , err )
37+ t .Fatalf ("sql open: %s" , err )
38+ }
39+ defer db .Close ()
40+
41+ driver , err := WithInstance (db , & Config {})
42+ if err != nil {
43+ t .Fatalf ("with instance: %s" , err )
3744 }
3845
3946 m , err := migrate .NewWithDatabaseInstance (
4047 "file://./examples/migrations" ,
4148 "main" ,
42- d ,
43- )
49+ driver )
4450 if err != nil {
4551 t .Fatalf ("new migrate: %s" , err )
4652 }
4753
4854 dt .TestMigrate (t , m )
4955}
5056
57+ func TestMigrationTable (t * testing.T ) {
58+ dir := t .TempDir ()
59+ dbFile := filepath .Join (dir , "test.duckdb" )
60+
61+ db , err := sql .Open ("duckdb" , dbFile )
62+ if err != nil {
63+ t .Fatalf ("sql open: %s" , err )
64+ }
65+ defer db .Close ()
66+
67+ config := & Config {
68+ MigrationsTable : "custom_migrations" ,
69+ }
70+ driver , err := WithInstance (db , config )
71+ if err != nil {
72+ t .Fatalf ("with instance: %s" , err )
73+ }
74+
75+ m , err := migrate .NewWithDatabaseInstance (
76+ "file://./examples/migrations" ,
77+ "main" ,
78+ driver )
79+ if err != nil {
80+ t .Fatalf ("new migrate: %s" , err )
81+ }
82+
83+ if err := m .Up (); err != nil {
84+ t .Fatalf ("up: %s" , err )
85+ }
86+
87+ if _ , err := db .Query (fmt .Sprintf ("SELECT * FROM %s" , config .MigrationsTable )); err != nil {
88+ t .Fatalf ("query migrations table: %s" , err )
89+ }
90+ }
91+
5192func TestNoTxWrap (t * testing.T ) {
5293 dir := t .TempDir ()
5394 dbFile := filepath .Join (dir , "test.duckdb" )
@@ -69,7 +110,8 @@ func TestNoTxWrapInvalidValue(t *testing.T) {
69110
70111 ddb := & DuckDB {}
71112 _ , err := ddb .Open (addr )
72- if err == nil {
73- t .Fatal ("expected error for invalid x-no-tx-wrap value" )
113+ if assert .Error (t , err ) {
114+ assert .Contains (t , err .Error (), "x-no-tx-wrap" )
115+ assert .Contains (t , err .Error (), "invalid syntax" )
74116 }
75117}
0 commit comments