mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
948 B
49 lines
948 B
//go:build cgo |
|
// +build cgo |
|
|
|
package sql |
|
|
|
import ( |
|
"database/sql" |
|
"io" |
|
"log/slog" |
|
"testing" |
|
|
|
sqlite3 "github.com/mattn/go-sqlite3" |
|
) |
|
|
|
func TestMigrate(t *testing.T) { |
|
db, err := sql.Open("sqlite3", ":memory:") |
|
if err != nil { |
|
t.Fatal(err) |
|
} |
|
defer db.Close() |
|
|
|
logger := slog.New(slog.NewTextHandler(io.Discard, &slog.HandlerOptions{})) |
|
|
|
errCheck := func(err error) bool { |
|
sqlErr, ok := err.(sqlite3.Error) |
|
if !ok { |
|
return false |
|
} |
|
return sqlErr.ExtendedCode == sqlite3.ErrConstraintUnique |
|
} |
|
|
|
var sqliteMigrations []migration |
|
for _, m := range migrations { |
|
if m.flavor == nil || m.flavor == &flavorSQLite3 { |
|
sqliteMigrations = append(sqliteMigrations, m) |
|
} |
|
} |
|
|
|
c := &conn{db, &flavorSQLite3, logger, errCheck} |
|
for _, want := range []int{len(sqliteMigrations), 0} { |
|
got, err := c.migrate() |
|
if err != nil { |
|
t.Fatal(err) |
|
} |
|
if got != want { |
|
t.Errorf("expected %d migrations, got %d", want, got) |
|
} |
|
} |
|
}
|
|
|