github.com/fr-nvriep/migrate/v4@v4.3.2/database/sqlite3/sqlite3_test.go (about) 1 package sqlite3 2 3 import ( 4 "database/sql" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "testing" 10 11 "github.com/fr-nvriep/migrate/v4" 12 dt "github.com/fr-nvriep/migrate/v4/database/testing" 13 _ "github.com/fr-nvriep/migrate/v4/source/file" 14 _ "github.com/mattn/go-sqlite3" 15 ) 16 17 func Test(t *testing.T) { 18 dir, err := ioutil.TempDir("", "sqlite3-driver-test") 19 if err != nil { 20 return 21 } 22 defer func() { 23 if err := os.RemoveAll(dir); err != nil { 24 t.Error(err) 25 } 26 }() 27 t.Logf("DB path : %s\n", filepath.Join(dir, "sqlite3.db")) 28 p := &Sqlite{} 29 addr := fmt.Sprintf("sqlite3://%s", filepath.Join(dir, "sqlite3.db")) 30 d, err := p.Open(addr) 31 if err != nil { 32 t.Fatal(err) 33 } 34 dt.Test(t, d, []byte("CREATE TABLE t (Qty int, Name string);")) 35 } 36 37 func TestMigrate(t *testing.T) { 38 dir, err := ioutil.TempDir("", "sqlite3-driver-test") 39 if err != nil { 40 return 41 } 42 defer func() { 43 if err := os.RemoveAll(dir); err != nil { 44 t.Error(err) 45 } 46 }() 47 t.Logf("DB path : %s\n", filepath.Join(dir, "sqlite3.db")) 48 p := &Sqlite{} 49 addr := fmt.Sprintf("sqlite3://%s", filepath.Join(dir, "sqlite3.db")) 50 d, err := p.Open(addr) 51 if err != nil { 52 t.Fatal(err) 53 } 54 55 db, err := sql.Open("sqlite3", filepath.Join(dir, "sqlite3.db")) 56 if err != nil { 57 return 58 } 59 defer func() { 60 if err := db.Close(); err != nil { 61 return 62 } 63 }() 64 driver, err := WithInstance(db, &Config{}) 65 if err != nil { 66 t.Fatal(err) 67 } 68 if err := d.Drop(); err != nil { 69 t.Fatal(err) 70 } 71 72 m, err := migrate.NewWithDatabaseInstance( 73 "file://./examples/migrations", 74 "ql", driver) 75 if err != nil { 76 t.Fatal(err) 77 } 78 dt.TestMigrate(t, m, []byte("CREATE TABLE t (Qty int, Name string);")) 79 } 80 81 func TestMigrationTable(t *testing.T) { 82 dir, err := ioutil.TempDir("", "sqlite3-driver-test-migration-table") 83 if err != nil { 84 return 85 } 86 defer func() { 87 if err := os.RemoveAll(dir); err != nil { 88 t.Error(err) 89 } 90 }() 91 92 t.Logf("DB path : %s\n", filepath.Join(dir, "sqlite3.db")) 93 94 db, err := sql.Open("sqlite3", filepath.Join(dir, "sqlite3.db")) 95 if err != nil { 96 return 97 } 98 defer func() { 99 if err := db.Close(); err != nil { 100 return 101 } 102 }() 103 104 config := &Config{ 105 MigrationsTable: "my_migration_table", 106 } 107 driver, err := WithInstance(db, config) 108 if err != nil { 109 t.Fatal(err) 110 } 111 m, err := migrate.NewWithDatabaseInstance( 112 "file://./examples/migrations", 113 "ql", driver) 114 if err != nil { 115 t.Fatal(err) 116 } 117 t.Log("UP") 118 err = m.Up() 119 if err != nil { 120 t.Fatal(err) 121 } 122 123 _, err = db.Query(fmt.Sprintf("SELECT * FROM %s", config.MigrationsTable)) 124 if err != nil { 125 t.Fatal(err) 126 } 127 }