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,68 @@ 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 func () {
40+ assert .NoError (t , db .Close ())
41+ }()
42+
43+ driver , err := WithInstance (db , & Config {})
44+ if err != nil {
45+ t .Fatalf ("with instance: %s" , err )
3746 }
3847
3948 m , err := migrate .NewWithDatabaseInstance (
4049 "file://./examples/migrations" ,
4150 "main" ,
42- d ,
43- )
51+ driver )
4452 if err != nil {
4553 t .Fatalf ("new migrate: %s" , err )
4654 }
4755
4856 dt .TestMigrate (t , m )
4957}
5058
59+ func TestMigrationTable (t * testing.T ) {
60+ dir := t .TempDir ()
61+ dbFile := filepath .Join (dir , "test.duckdb" )
62+
63+ db , err := sql .Open ("duckdb" , dbFile )
64+ if err != nil {
65+ t .Fatalf ("sql open: %s" , err )
66+ }
67+ defer func () {
68+ assert .NoError (t , db .Close ())
69+ }()
70+
71+ config := & Config {
72+ MigrationsTable : "custom_migrations" ,
73+ }
74+ driver , err := WithInstance (db , config )
75+ if err != nil {
76+ t .Fatalf ("with instance: %s" , err )
77+ }
78+
79+ m , err := migrate .NewWithDatabaseInstance (
80+ "file://./examples/migrations" ,
81+ "main" ,
82+ driver )
83+ if err != nil {
84+ t .Fatalf ("new migrate: %s" , err )
85+ }
86+
87+ if err := m .Up (); err != nil {
88+ t .Fatalf ("up: %s" , err )
89+ }
90+
91+ if _ , err := db .Query (fmt .Sprintf ("SELECT * FROM %s" , config .MigrationsTable )); err != nil {
92+ t .Fatalf ("query migrations table: %s" , err )
93+ }
94+ }
95+
5196func TestNoTxWrap (t * testing.T ) {
5297 dir := t .TempDir ()
5398 dbFile := filepath .Join (dir , "test.duckdb" )
@@ -69,7 +114,8 @@ func TestNoTxWrapInvalidValue(t *testing.T) {
69114
70115 ddb := & DuckDB {}
71116 _ , err := ddb .Open (addr )
72- if err == nil {
73- t .Fatal ("expected error for invalid x-no-tx-wrap value" )
117+ if assert .Error (t , err ) {
118+ assert .Contains (t , err .Error (), "x-no-tx-wrap" )
119+ assert .Contains (t , err .Error (), "invalid syntax" )
74120 }
75121}
0 commit comments