add more error check on Get (#680)
This commit is contained in:
parent
f43b29056d
commit
fce6d4a34c
|
@ -22,7 +22,9 @@ func (session *Session) Get(bean interface{}) (bool, error) {
|
||||||
|
|
||||||
beanValue := reflect.ValueOf(bean)
|
beanValue := reflect.ValueOf(bean)
|
||||||
if beanValue.Kind() != reflect.Ptr {
|
if beanValue.Kind() != reflect.Ptr {
|
||||||
return false, errors.New("needs a pointer")
|
return false, errors.New("needs a pointer to a value")
|
||||||
|
} else if beanValue.Elem().Kind() == reflect.Ptr {
|
||||||
|
return false, errors.New("a pointer to a pointer is not allowed")
|
||||||
}
|
}
|
||||||
|
|
||||||
if beanValue.Elem().Kind() == reflect.Struct {
|
if beanValue.Elem().Kind() == reflect.Struct {
|
||||||
|
|
|
@ -174,3 +174,23 @@ func TestGetSlice(t *testing.T) {
|
||||||
assert.False(t, has)
|
assert.False(t, has)
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetError(t *testing.T) {
|
||||||
|
assert.NoError(t, prepareEngine())
|
||||||
|
|
||||||
|
type GetError struct {
|
||||||
|
Uid int `xorm:"pk autoincr"`
|
||||||
|
IsMan bool
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSync(t, new(GetError))
|
||||||
|
|
||||||
|
var info = new(GetError)
|
||||||
|
has, err := testEngine.Get(&info)
|
||||||
|
assert.False(t, has)
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
has, err = testEngine.Get(info)
|
||||||
|
assert.False(t, has)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue