From 74ad440655285787890ed79afdfa2a2814ccf6af Mon Sep 17 00:00:00 2001 From: xormplus Date: Mon, 7 Aug 2017 20:59:20 +0800 Subject: [PATCH] add more error check on Get --- session_get.go | 4 +++- session_get_test.go | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/session_get.go b/session_get.go index 16f8ada..1afd488 100644 --- a/session_get.go +++ b/session_get.go @@ -22,7 +22,9 @@ func (session *Session) Get(bean interface{}) (bool, error) { beanValue := reflect.ValueOf(bean) 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 { diff --git a/session_get_test.go b/session_get_test.go index 2eedf14..e24d39c 100644 --- a/session_get_test.go +++ b/session_get_test.go @@ -174,3 +174,23 @@ func TestGetSlice(t *testing.T) { assert.False(t, has) 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) +}