...
1 package ql
2
3 import (
4 "database/sql"
5 "fmt"
6 "io/ioutil"
7 "os"
8 "path/filepath"
9 "testing"
10
11 "github.com/golang-migrate/migrate/v4"
12 dt "github.com/golang-migrate/migrate/v4/database/testing"
13 _ "github.com/golang-migrate/migrate/v4/source/file"
14 _ "modernc.org/ql/driver"
15 )
16
17 func Test(t *testing.T) {
18 dir, err := ioutil.TempDir("", "ql-driver-test")
19 if err != nil {
20 return
21 }
22 defer func() {
23 if err := os.RemoveAll(dir); err != nil {
24 t.Fatal(err)
25 }
26 }()
27 t.Logf("DB path : %s\n", filepath.Join(dir, "ql.db"))
28 p := &Ql{}
29 addr := fmt.Sprintf("ql://%s", filepath.Join(dir, "ql.db"))
30 d, err := p.Open(addr)
31 if err != nil {
32 t.Fatal(err)
33 }
34
35 db, err := sql.Open("ql", filepath.Join(dir, "ql.db"))
36 if err != nil {
37 return
38 }
39 defer func() {
40 if err := db.Close(); err != nil {
41 return
42 }
43 }()
44 dt.Test(t, d, []byte("CREATE TABLE t (Qty int, Name string);"))
45 }
46
47 func TestMigrate(t *testing.T) {
48 dir, err := ioutil.TempDir("", "ql-driver-test")
49 if err != nil {
50 return
51 }
52 defer func() {
53 if err := os.RemoveAll(dir); err != nil {
54 t.Error(err)
55 }
56 }()
57 t.Logf("DB path : %s\n", filepath.Join(dir, "ql.db"))
58
59 db, err := sql.Open("ql", filepath.Join(dir, "ql.db"))
60 if err != nil {
61 return
62 }
63 defer func() {
64 if err := db.Close(); err != nil {
65 return
66 }
67 }()
68
69 driver, err := WithInstance(db, &Config{})
70 if err != nil {
71 t.Fatal(err)
72 }
73
74 m, err := migrate.NewWithDatabaseInstance(
75 "file://./examples/migrations",
76 "ql", driver)
77 if err != nil {
78 t.Fatal(err)
79 }
80 dt.TestMigrate(t, m)
81 }
82
View as plain text