func (t *logicTest) verifyError( pos string, expectErr string, expectErrCode string, err error) { if expectErr == "" && expectErrCode == "" && err != nil { t.Fatalf("%s: expected success, but found\n%s", pos, err) } if expectErr != "" && !testutils.IsError(err, expectErr) { if err != nil { t.Fatalf("%s: expected %q, but found\n%s", pos, expectErr, err) } else { t.Fatalf("%s: expected %q, but found success", pos, expectErr) } } if expectErrCode != "" { if err != nil { pqErr, ok := err.(*pq.Error) if !ok { t.Fatalf("%s: expected error code %q, but the error we found is not "+ "a libpq error: %s", pos, expectErrCode, err) } if pqErr.Code != pq.ErrorCode(expectErrCode) { t.Fatalf("%s: expected error code %q, but found code %q (%s)", pos, expectErrCode, pqErr.Code, pqErr.Code.Name()) } } else { t.Fatalf("%s: expected error code %q, but found success", pos, expectErrCode) } } }
// verifyError checks that either no error was found where none was // expected, or that an error was found when one was expected. Returns // "true" to indicate the behavior was as expected. func (t *logicTest) verifyError( sql string, pos string, expectErr string, expectErrCode string, err error) bool { if expectErr == "" && expectErrCode == "" && err != nil { return t.unexpectedError(sql, pos, err) } if expectErr != "" && !testutils.IsError(err, expectErr) { if err != nil { t.Errorf("%s: expected %q, but found\n%s", pos, expectErr, err) } else { t.Errorf("%s: expected %q, but found success", pos, expectErr) } return false } if expectErrCode != "" { if err != nil { pqErr, ok := err.(*pq.Error) if !ok { t.Errorf("%s: expected error code %q, but the error we found is not "+ "a libpq error: %s", pos, expectErrCode, err) return false } if pqErr.Code != pq.ErrorCode(expectErrCode) { t.Errorf("%s: expected error code %q, but found code %q (%s)", pos, expectErrCode, pqErr.Code, pqErr.Code.Name()) return false } } else { t.Errorf("%s: expected error code %q, but found success", pos, expectErrCode) return false } } return true }