mirror of
https://github.com/documize/community.git
synced 2025-07-20 05:39:42 +02:00
WIP vendored dep upgrades
This commit is contained in:
parent
5f59e95495
commit
6409ad0d63
190 changed files with 64265 additions and 109666 deletions
170
vendor/github.com/go-sql-driver/mysql/driver_test.go
generated
vendored
170
vendor/github.com/go-sql-driver/mysql/driver_test.go
generated
vendored
|
@ -27,6 +27,12 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
// Ensure that all the driver interfaces are implemented
|
||||
var (
|
||||
_ driver.Rows = &binaryRows{}
|
||||
_ driver.Rows = &textRows{}
|
||||
)
|
||||
|
||||
var (
|
||||
user string
|
||||
pass string
|
||||
|
@ -63,7 +69,7 @@ func init() {
|
|||
addr = env("MYSQL_TEST_ADDR", "localhost:3306")
|
||||
dbname = env("MYSQL_TEST_DBNAME", "gotest")
|
||||
netAddr = fmt.Sprintf("%s(%s)", prot, addr)
|
||||
dsn = fmt.Sprintf("%s:%s@%s/%s?timeout=30s&strict=true", user, pass, netAddr, dbname)
|
||||
dsn = fmt.Sprintf("%s:%s@%s/%s?timeout=30s", user, pass, netAddr, dbname)
|
||||
c, err := net.Dial(prot, addr)
|
||||
if err == nil {
|
||||
available = true
|
||||
|
@ -493,6 +499,85 @@ func TestString(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
type testValuer struct {
|
||||
value string
|
||||
}
|
||||
|
||||
func (tv testValuer) Value() (driver.Value, error) {
|
||||
return tv.value, nil
|
||||
}
|
||||
|
||||
func TestValuer(t *testing.T) {
|
||||
runTests(t, dsn, func(dbt *DBTest) {
|
||||
in := testValuer{"a_value"}
|
||||
var out string
|
||||
var rows *sql.Rows
|
||||
|
||||
dbt.mustExec("CREATE TABLE test (value VARCHAR(255)) CHARACTER SET utf8")
|
||||
dbt.mustExec("INSERT INTO test VALUES (?)", in)
|
||||
rows = dbt.mustQuery("SELECT value FROM test")
|
||||
if rows.Next() {
|
||||
rows.Scan(&out)
|
||||
if in.value != out {
|
||||
dbt.Errorf("Valuer: %v != %s", in, out)
|
||||
}
|
||||
} else {
|
||||
dbt.Errorf("Valuer: no data")
|
||||
}
|
||||
|
||||
dbt.mustExec("DROP TABLE IF EXISTS test")
|
||||
})
|
||||
}
|
||||
|
||||
type testValuerWithValidation struct {
|
||||
value string
|
||||
}
|
||||
|
||||
func (tv testValuerWithValidation) Value() (driver.Value, error) {
|
||||
if len(tv.value) == 0 {
|
||||
return nil, fmt.Errorf("Invalid string valuer. Value must not be empty")
|
||||
}
|
||||
|
||||
return tv.value, nil
|
||||
}
|
||||
|
||||
func TestValuerWithValidation(t *testing.T) {
|
||||
runTests(t, dsn, func(dbt *DBTest) {
|
||||
in := testValuerWithValidation{"a_value"}
|
||||
var out string
|
||||
var rows *sql.Rows
|
||||
|
||||
dbt.mustExec("CREATE TABLE testValuer (value VARCHAR(255)) CHARACTER SET utf8")
|
||||
dbt.mustExec("INSERT INTO testValuer VALUES (?)", in)
|
||||
|
||||
rows = dbt.mustQuery("SELECT value FROM testValuer")
|
||||
defer rows.Close()
|
||||
|
||||
if rows.Next() {
|
||||
rows.Scan(&out)
|
||||
if in.value != out {
|
||||
dbt.Errorf("Valuer: %v != %s", in, out)
|
||||
}
|
||||
} else {
|
||||
dbt.Errorf("Valuer: no data")
|
||||
}
|
||||
|
||||
if _, err := dbt.db.Exec("INSERT INTO testValuer VALUES (?)", testValuerWithValidation{""}); err == nil {
|
||||
dbt.Errorf("Failed to check valuer error")
|
||||
}
|
||||
|
||||
if _, err := dbt.db.Exec("INSERT INTO testValuer VALUES (?)", nil); err != nil {
|
||||
dbt.Errorf("Failed to check nil")
|
||||
}
|
||||
|
||||
if _, err := dbt.db.Exec("INSERT INTO testValuer VALUES (?)", map[string]bool{}); err == nil {
|
||||
dbt.Errorf("Failed to check not valuer")
|
||||
}
|
||||
|
||||
dbt.mustExec("DROP TABLE IF EXISTS testValuer")
|
||||
})
|
||||
}
|
||||
|
||||
type timeTests struct {
|
||||
dbtype string
|
||||
tlayout string
|
||||
|
@ -964,7 +1049,7 @@ func TestUint64(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestLongData(t *testing.T) {
|
||||
runTests(t, dsn, func(dbt *DBTest) {
|
||||
runTests(t, dsn+"&maxAllowedPacket=0", func(dbt *DBTest) {
|
||||
var maxAllowedPacketSize int
|
||||
err := dbt.db.QueryRow("select @@max_allowed_packet").Scan(&maxAllowedPacketSize)
|
||||
if err != nil {
|
||||
|
@ -1170,82 +1255,6 @@ func TestFoundRows(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestStrict(t *testing.T) {
|
||||
// ALLOW_INVALID_DATES to get rid of stricter modes - we want to test for warnings, not errors
|
||||
relaxedDsn := dsn + "&sql_mode='ALLOW_INVALID_DATES,NO_AUTO_CREATE_USER'"
|
||||
// make sure the MySQL version is recent enough with a separate connection
|
||||
// before running the test
|
||||
conn, err := MySQLDriver{}.Open(relaxedDsn)
|
||||
if conn != nil {
|
||||
conn.Close()
|
||||
}
|
||||
// Error 1231: Variable 'sql_mode' can't be set to the value of
|
||||
// 'ALLOW_INVALID_DATES' => skip test, MySQL server version is too old
|
||||
maybeSkip(t, err, 1231)
|
||||
runTests(t, relaxedDsn, func(dbt *DBTest) {
|
||||
dbt.mustExec("CREATE TABLE test (a TINYINT NOT NULL, b CHAR(4))")
|
||||
|
||||
var queries = [...]struct {
|
||||
in string
|
||||
codes []string
|
||||
}{
|
||||
{"DROP TABLE IF EXISTS no_such_table", []string{"1051"}},
|
||||
{"INSERT INTO test VALUES(10,'mysql'),(NULL,'test'),(300,'Open Source')", []string{"1265", "1048", "1264", "1265"}},
|
||||
}
|
||||
var err error
|
||||
|
||||
var checkWarnings = func(err error, mode string, idx int) {
|
||||
if err == nil {
|
||||
dbt.Errorf("expected STRICT error on query [%s] %s", mode, queries[idx].in)
|
||||
}
|
||||
|
||||
if warnings, ok := err.(MySQLWarnings); ok {
|
||||
var codes = make([]string, len(warnings))
|
||||
for i := range warnings {
|
||||
codes[i] = warnings[i].Code
|
||||
}
|
||||
if len(codes) != len(queries[idx].codes) {
|
||||
dbt.Errorf("unexpected STRICT error count on query [%s] %s: Wanted %v, Got %v", mode, queries[idx].in, queries[idx].codes, codes)
|
||||
}
|
||||
|
||||
for i := range warnings {
|
||||
if codes[i] != queries[idx].codes[i] {
|
||||
dbt.Errorf("unexpected STRICT error codes on query [%s] %s: Wanted %v, Got %v", mode, queries[idx].in, queries[idx].codes, codes)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
dbt.Errorf("unexpected error on query [%s] %s: %s", mode, queries[idx].in, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// text protocol
|
||||
for i := range queries {
|
||||
_, err = dbt.db.Exec(queries[i].in)
|
||||
checkWarnings(err, "text", i)
|
||||
}
|
||||
|
||||
var stmt *sql.Stmt
|
||||
|
||||
// binary protocol
|
||||
for i := range queries {
|
||||
stmt, err = dbt.db.Prepare(queries[i].in)
|
||||
if err != nil {
|
||||
dbt.Errorf("error on preparing query %s: %s", queries[i].in, err.Error())
|
||||
}
|
||||
|
||||
_, err = stmt.Exec()
|
||||
checkWarnings(err, "binary", i)
|
||||
|
||||
err = stmt.Close()
|
||||
if err != nil {
|
||||
dbt.Errorf("error on closing stmt for query %s: %s", queries[i].in, err.Error())
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestTLS(t *testing.T) {
|
||||
tlsTest := func(dbt *DBTest) {
|
||||
if err := dbt.db.Ping(); err != nil {
|
||||
|
@ -1445,7 +1454,6 @@ func TestTimezoneConversion(t *testing.T) {
|
|||
|
||||
// Regression test for timezone handling
|
||||
tzTest := func(dbt *DBTest) {
|
||||
|
||||
// Create table
|
||||
dbt.mustExec("CREATE TABLE test (ts TIMESTAMP)")
|
||||
|
||||
|
@ -1762,7 +1770,7 @@ func TestCustomDial(t *testing.T) {
|
|||
return net.Dial(prot, addr)
|
||||
})
|
||||
|
||||
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@mydial(%s)/%s?timeout=30s&strict=true", user, pass, addr, dbname))
|
||||
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@mydial(%s)/%s?timeout=30s", user, pass, addr, dbname))
|
||||
if err != nil {
|
||||
t.Fatalf("error connecting: %s", err.Error())
|
||||
}
|
||||
|
@ -1859,7 +1867,7 @@ func TestUnixSocketAuthFail(t *testing.T) {
|
|||
}
|
||||
}
|
||||
t.Logf("socket: %s", socket)
|
||||
badDSN := fmt.Sprintf("%s:%s@unix(%s)/%s?timeout=30s&strict=true", user, badPass, socket, dbname)
|
||||
badDSN := fmt.Sprintf("%s:%s@unix(%s)/%s?timeout=30s", user, badPass, socket, dbname)
|
||||
db, err := sql.Open("mysql", badDSN)
|
||||
if err != nil {
|
||||
t.Fatalf("error connecting: %s", err.Error())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue