add more error check on Get (#680)

This commit is contained in:
Lunny Xiao 2017-08-07 16:51:14 +08:00 committed by GitHub
parent f43b29056d
commit fce6d4a34c
2 changed files with 23 additions and 1 deletions

View File

@ -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 {

View File

@ -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)
}