diff --git a/database/test.go b/database/test.go index 4b0f6e65fca9f35fdc979b02c3be75e128934344_ZGF0YWJhc2UvdGVzdC5nbw==..408c56d48ae9643de40e39f879eca656e6bcf989_ZGF0YWJhc2UvdGVzdC5nbw== 100644 --- a/database/test.go +++ b/database/test.go @@ -2,7 +2,6 @@ import ( "context" - "database/sql" "os" "testing" @@ -16,5 +15,5 @@ const dbLockID = 15104 -func clearDB(t *testing.T, dsn string) { +func clearDB(t *testing.T, c *sqlx.Conn, dsn string) { // Drop all tables, and reinit @@ -20,5 +19,4 @@ // Drop all tables, and reinit - db, err := Open(dsn, 0) - if err != nil { + if _, err := c.ExecContext(context.Background(), "DROP SCHEMA IF EXISTS public CASCADE"); err != nil { t.Fatal(err) } @@ -23,10 +21,6 @@ t.Fatal(err) } - defer db.Close() - if _, err := db.Exec("DROP SCHEMA IF EXISTS public CASCADE"); err != nil { - t.Fatal(err) - } - if _, err := db.Exec("CREATE SCHEMA public"); err != nil { + if _, err := c.ExecContext(context.Background(), "CREATE SCHEMA public"); err != nil { t.Fatal(err) } } @@ -35,7 +29,7 @@ type TestDB struct { *sqlx.DB tb testing.TB - lockConn *sql.Conn + lockConn *sqlx.Conn } // GetTestDB creates a db and returns it. It must be closed within the test. @@ -45,4 +39,23 @@ if dsn == "" { t.Fatal("Please define a TEST_DB_DSN environment variable") } + db, err := Open(dsn, 0) + if err != nil { + t.Fatal(err) + } + + c, err := db.Connx(context.Background()) + if err != nil { + _ = db.Close() + t.Fatal(err) + } + + if _, err := c.ExecContext( + context.Background(), + "SELECT pg_advisory_lock($1)", dbLockID, + ); err != nil { + _ = db.Close() + t.Fatal(err) + } + if len(dbtablenames) == 0 { @@ -48,5 +61,5 @@ if len(dbtablenames) == 0 { - clearDB(t, dsn) + clearDB(t, c, dsn) m, err := NewMigrate(dsn, sourceDriver) if err != nil { @@ -59,10 +72,6 @@ t.Fatal(srcErr, dbErr) } } - db, err := Open(dsn, 0) - if err != nil { - t.Fatal(err) - } if len(dbtablenames) == 0 { if err := db.Select(&dbtablenames, "SELECT tablename "+ @@ -98,21 +107,6 @@ } } - c, err := db.Conn(context.Background()) - - if err != nil { - _ = db.Close() - t.Fatal(err) - } - - if _, err := c.ExecContext( - context.Background(), - "SELECT pg_advisory_lock($1)", dbLockID, - ); err != nil { - _ = db.Close() - t.Fatal(err) - } - return &TestDB{db, t, c} } diff --git a/go.mod b/go.mod index 4b0f6e65fca9f35fdc979b02c3be75e128934344_Z28ubW9k..408c56d48ae9643de40e39f879eca656e6bcf989_Z28ubW9k 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,8 @@ require ( github.com/Masterminds/squirrel v1.4.0 + github.com/fatih/structtag v1.2.0 github.com/getsentry/sentry-go v0.7.0 github.com/go-openapi/runtime v0.19.21 github.com/go-openapi/swag v0.19.9 github.com/golang-migrate/migrate/v4 v4.12.2 @@ -7,8 +8,8 @@ github.com/getsentry/sentry-go v0.7.0 github.com/go-openapi/runtime v0.19.21 github.com/go-openapi/swag v0.19.9 github.com/golang-migrate/migrate/v4 v4.12.2 - github.com/jmoiron/sqlx v1.2.0 + github.com/jmoiron/sqlx v1.2.1-0.20200615141059-0794cb1f47ee github.com/json-iterator/go v1.1.6 github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 github.com/orus-io/go-flags v1.4.0 diff --git a/go.sum b/go.sum index 4b0f6e65fca9f35fdc979b02c3be75e128934344_Z28uc3Vt..408c56d48ae9643de40e39f879eca656e6bcf989_Z28uc3Vt 100644 --- a/go.sum +++ b/go.sum @@ -109,6 +109,8 @@ github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsouza/fake-gcs-server v1.17.0/go.mod h1:D1rTE4YCyHFNa99oyJJ5HyclvN/0uQR+pM/VdlL83bw= @@ -334,6 +336,8 @@ github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA= github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/jmoiron/sqlx v1.2.1-0.20200615141059-0794cb1f47ee h1:59lyMGvZusByi7Rvctn8cxdVAjhiOnqCv3G5DrYApYQ= +github.com/jmoiron/sqlx v1.2.1-0.20200615141059-0794cb1f47ee/go.mod h1:ClpsPFzLpSBl7MvJ+BhV0JHz4vmKRBarpvZ9644v9Oo= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=