2
0

Skip test on too old PostgreSQL

This commit is contained in:
Jack Christensen
2021-03-13 07:18:26 -06:00
parent e93da6c744
commit 00704ce8b7
3 changed files with 36 additions and 0 deletions
+33
View File
@@ -12,6 +12,7 @@ import (
"testing"
"time"
"github.com/Masterminds/semver/v3"
"github.com/jackc/pgconn"
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/stdlib"
@@ -45,6 +46,37 @@ func skipCockroachDB(t testing.TB, db *sql.DB, msg string) {
require.NoError(t, err)
}
func skipPostgreSQLVersion(t testing.TB, db *sql.DB, constraintStr, msg string) {
conn, err := db.Conn(context.Background())
require.NoError(t, err)
defer conn.Close()
err = conn.Raw(func(driverConn interface{}) error {
conn := driverConn.(*stdlib.Conn).Conn()
serverVersionStr := conn.PgConn().ParameterStatus("server_version")
// if not PostgreSQL do nothing
if serverVersionStr == "" {
return nil
}
serverVersion, err := semver.NewVersion(serverVersionStr)
if err != nil {
return err
}
c, err := semver.NewConstraint(constraintStr)
if err != nil {
return err
}
if c.Check(serverVersion) {
t.Skip(msg)
}
return nil
})
require.NoError(t, err)
}
func testWithAndWithoutPreferSimpleProtocol(t *testing.T, f func(t *testing.T, db *sql.DB)) {
t.Run("SimpleProto",
func(t *testing.T) {
@@ -1051,6 +1083,7 @@ func TestRegisterConnConfig(t *testing.T) {
// https://github.com/jackc/pgx/issues/958
func TestConnQueryRowConstraintErrors(t *testing.T) {
testWithAndWithoutPreferSimpleProtocol(t, func(t *testing.T, db *sql.DB) {
skipPostgreSQLVersion(t, db, "< 11", "Test requires PG 11+")
skipCockroachDB(t, db, "Server does not support deferred constraint (https://github.com/cockroachdb/cockroach/issues/31632)")
_, err := db.Exec(`create temporary table defer_test (