diff --git a/caches/leveldb.go b/caches/leveldb.go index cbaa66b3..d1a177ad 100644 --- a/caches/leveldb.go +++ b/caches/leveldb.go @@ -19,14 +19,14 @@ type LevelDBStore struct { var _ CacheStore = &LevelDBStore{} -func NewLevelDBStore(dbfile string) *LevelDBStore { +func NewLevelDBStore(dbfile string) (*LevelDBStore, error) { db := &LevelDBStore{} - if h, err := leveldb.OpenFile(dbfile, nil); err != nil { - panic(err) - } else { - db.store = h + h, err := leveldb.OpenFile(dbfile, nil) + if err != nil { + return nil, err } - return db + db.store = h + return db, nil } func (s *LevelDBStore) Put(key string, value interface{}) error { diff --git a/caches/leveldb_test.go b/caches/leveldb_test.go index 4b314afc..35981db1 100644 --- a/caches/leveldb_test.go +++ b/caches/leveldb_test.go @@ -11,7 +11,9 @@ import ( ) func TestLevelDBStore(t *testing.T) { - store := NewLevelDBStore("./level.db") + store, err := NewLevelDBStore("./level.db") + assert.NoError(t, err) + var kvs = map[string]interface{}{ "a": "b", } diff --git a/internal/statements/update.go b/internal/statements/update.go index e9cdd98c..10f36778 100644 --- a/internal/statements/update.go +++ b/internal/statements/update.go @@ -6,6 +6,7 @@ package statements import ( "database/sql/driver" + "errors" "fmt" "reflect" "time" @@ -200,8 +201,7 @@ func (statement *Statement) BuildUpdates(bean interface{}, continue } } else { - // TODO: how to handler? - panic("not supported") + return nil, nil, errors.New("Not supported multiple primary keys") } } } else { @@ -209,7 +209,7 @@ func (statement *Statement) BuildUpdates(bean interface{}, if requiredField || !utils.IsStructZero(fieldValue) { bytes, err := json.DefaultJSONHandler.Marshal(fieldValue.Interface()) if err != nil { - panic(fmt.Sprintf("mashal %v failed", fieldValue.Interface())) + return nil, nil, fmt.Errorf("mashal %v failed", fieldValue.Interface()) } if col.SQLType.IsText() { val = string(bytes) diff --git a/session_update_test.go b/session_update_test.go index 8eedddae..d65e1207 100644 --- a/session_update_test.go +++ b/session_update_test.go @@ -5,7 +5,6 @@ package xorm import ( - "errors" "fmt" "sync" "testing" @@ -291,10 +290,7 @@ func TestUpdate1(t *testing.T) { var ori Userinfo has, err := testEngine.Get(&ori) assert.NoError(t, err) - if !has { - t.Error(errors.New("not exist")) - panic(errors.New("not exist")) - } + assert.True(t, has) // update by id user := Userinfo{Username: "xxx", Height: 1.2} @@ -318,10 +314,7 @@ func TestUpdate1(t *testing.T) { { user := &Userinfo{Username: "not null data", Height: 180.5} _, err := testEngine.Insert(user) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) userID := user.Uid has, err := testEngine.ID(userID). @@ -362,10 +355,7 @@ func TestUpdate1(t *testing.T) { defer func() { err = testEngine.DropTables(&Article{}) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) }() a := &Article{0, "1", "2", "3", "4", "5", 2} diff --git a/tags_test.go b/tags_test.go index 45fbc932..4473a12f 100644 --- a/tags_test.go +++ b/tags_test.go @@ -5,7 +5,6 @@ package xorm import ( - "errors" "fmt" "strings" "testing" @@ -326,36 +325,14 @@ func TestExtends3(t *testing.T) { Join("LEFT", []string{typeTableName, "type"}, "`type`.`"+mapper("Id")+"`="+msgTableName+".`"+mapper("Id")+"`"). Find(&list) assert.NoError(t, err) - - if len(list) != 1 { - err = errors.New(fmt.Sprintln("should have 1 message, got", len(list))) - t.Error(err) - panic(err) - } - - if list[0].Message.Id != msg.Id { - err = errors.New(fmt.Sprintln("should message equal", list[0].Message, msg)) - t.Error(err) - panic(err) - } - - if list[0].Sender.Id != sender.Id || list[0].Sender.Name != sender.Name { - err = errors.New(fmt.Sprintln("should sender equal", list[0].Sender, sender)) - t.Error(err) - panic(err) - } - - if list[0].Receiver.Id != receiver.Id || list[0].Receiver.Name != receiver.Name { - err = errors.New(fmt.Sprintln("should receiver equal", list[0].Receiver, receiver)) - t.Error(err) - panic(err) - } - - if list[0].Type.Id != msgtype.Id || list[0].Type.Name != msgtype.Name { - err = errors.New(fmt.Sprintln("should msgtype equal", list[0].Type, msgtype)) - t.Error(err) - panic(err) - } + assert.EqualValues(t, 1, len(list)) + assert.EqualValues(t, list[0].Message.Id, msg.Id) + assert.EqualValues(t, list[0].Sender.Id, sender.Id) + assert.EqualValues(t, list[0].Sender.Name, sender.Name) + assert.EqualValues(t, list[0].Receiver.Id, receiver.Id) + assert.EqualValues(t, list[0].Receiver.Name, receiver.Name) + assert.EqualValues(t, list[0].Type.Id, msgtype.Id) + assert.EqualValues(t, list[0].Type.Name, msgtype.Name) } func TestExtends4(t *testing.T) { @@ -410,30 +387,12 @@ func TestExtends4(t *testing.T) { Join("LEFT", typeTableName, typeTableName+".`"+mapper("Id")+"`="+msgTableName+".`"+mapper("Id")+"`"). Find(&list) assert.NoError(t, err) - - if len(list) != 1 { - err = errors.New(fmt.Sprintln("should have 1 message, got", len(list))) - t.Error(err) - panic(err) - } - - if list[0].Message.Id != msg.Id { - err = errors.New(fmt.Sprintln("should message equal", list[0].Message, msg)) - t.Error(err) - panic(err) - } - - if list[0].MessageUser.Id != sender.Id || list[0].MessageUser.Name != sender.Name { - err = errors.New(fmt.Sprintln("should sender equal", list[0].MessageUser, sender)) - t.Error(err) - panic(err) - } - - if list[0].MessageType.Id != msgtype.Id || list[0].MessageType.Name != msgtype.Name { - err = errors.New(fmt.Sprintln("should msgtype equal", list[0].MessageType, msgtype)) - t.Error(err) - panic(err) - } + assert.EqualValues(t, len(list), 1) + assert.EqualValues(t, list[0].Message.Id, msg.Id) + assert.EqualValues(t, list[0].MessageUser.Id, sender.Id) + assert.EqualValues(t, list[0].MessageUser.Name, sender.Name) + assert.EqualValues(t, list[0].MessageType.Id, msgtype.Id) + assert.EqualValues(t, list[0].MessageType.Name, msgtype.Name) } type Size struct { @@ -1240,45 +1199,23 @@ func TestVersion1(t *testing.T) { ver := &VersionS{Name: "sfsfdsfds"} _, err = testEngine.Insert(ver) assert.NoError(t, err) - fmt.Println(ver) - if ver.Ver != 1 { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.EqualValues(t, ver.Ver, 1) newVer := new(VersionS) has, err := testEngine.ID(ver.Id).Get(newVer) assert.NoError(t, err) - - if !has { - t.Error(fmt.Errorf("no version id is %v", ver.Id)) - panic(err) - } - fmt.Println(newVer) - if newVer.Ver != 1 { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.True(t, has) + assert.EqualValues(t, newVer.Ver, 1) newVer.Name = "-------" _, err = testEngine.ID(ver.Id).Update(newVer) assert.NoError(t, err) - if newVer.Ver != 2 { - err = errors.New("update should set version back to struct") - t.Error(err) - } + assert.EqualValues(t, newVer.Ver, 2) newVer = new(VersionS) has, err = testEngine.ID(ver.Id).Get(newVer) assert.NoError(t, err) - fmt.Println(newVer) - if newVer.Ver != 2 { - err = errors.New("update error") - t.Error(err) - panic(err) - } + assert.EqualValues(t, newVer.Ver, 2) } func TestVersion2(t *testing.T) { @@ -1296,15 +1233,8 @@ func TestVersion2(t *testing.T) { } _, err = testEngine.Insert(vers) assert.NoError(t, err) - - fmt.Println(vers) - for _, v := range vers { - if v.Ver != 1 { - err := errors.New("version should be 1") - t.Error(err) - panic(err) - } + assert.EqualValues(t, v.Ver, 1) } } @@ -1327,45 +1257,23 @@ func TestVersion3(t *testing.T) { ver := &VersionUintS{Name: "sfsfdsfds"} _, err = testEngine.Insert(ver) assert.NoError(t, err) - fmt.Println(ver) - if ver.Ver != 1 { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.EqualValues(t, ver.Ver, 1) newVer := new(VersionUintS) has, err := testEngine.ID(ver.Id).Get(newVer) assert.NoError(t, err) - - if !has { - t.Error(fmt.Errorf("no version id is %v", ver.Id)) - panic(err) - } - fmt.Println(newVer) - if newVer.Ver != 1 { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.True(t, has) + assert.EqualValues(t, newVer.Ver, 1) newVer.Name = "-------" _, err = testEngine.ID(ver.Id).Update(newVer) assert.NoError(t, err) - if newVer.Ver != 2 { - err = errors.New("update should set version back to struct") - t.Error(err) - } + assert.EqualValues(t, newVer.Ver, 2) newVer = new(VersionUintS) has, err = testEngine.ID(ver.Id).Get(newVer) assert.NoError(t, err) - fmt.Println(newVer) - if newVer.Ver != 2 { - err = errors.New("update error") - t.Error(err) - panic(err) - } + assert.EqualValues(t, newVer.Ver, 2) } func TestVersion4(t *testing.T) { @@ -1383,14 +1291,7 @@ func TestVersion4(t *testing.T) { } _, err = testEngine.Insert(vers) assert.NoError(t, err) - - fmt.Println(vers) - for _, v := range vers { - if v.Ver != 1 { - err := errors.New("version should be 1") - t.Error(err) - panic(err) - } + assert.EqualValues(t, v.Ver, 1) } } diff --git a/types_null_test.go b/types_null_test.go index bab56102..1d5d005e 100644 --- a/types_null_test.go +++ b/types_null_test.go @@ -77,16 +77,8 @@ func TestNullStructInsert(t *testing.T) { if true { item := new(NullType) _, err := testEngine.Insert(item) - if err != nil { - t.Error(err) - panic(err) - } - fmt.Println(item) - if item.Id != 1 { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.EqualValues(t, item.Id, 1) } if true { @@ -97,16 +89,8 @@ func TestNullStructInsert(t *testing.T) { IsMan: sql.NullBool{Bool: true, Valid: true}, } _, err := testEngine.Insert(&item) - if err != nil { - t.Error(err) - panic(err) - } - fmt.Println(item) - if item.Id != 2 { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.EqualValues(t, item.Id, 2) } if true { @@ -125,11 +109,7 @@ func TestNullStructInsert(t *testing.T) { } _, err := testEngine.Insert(&items) - if err != nil { - t.Error(err) - panic(err) - } - fmt.Println(items) + assert.NoError(t, err) } } @@ -171,30 +151,16 @@ func TestNullStructUpdate(t *testing.T) { item.Height = sql.NullFloat64{Float64: 0, Valid: false} // update to NULL affected, err := testEngine.ID(2).Cols("age", "height", "is_man").Update(item) - if err != nil { - t.Error(err) - panic(err) - } - if affected != 1 { - err := errors.New("update failed") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.EqualValues(t, affected, 1) } if true { // 测试In update item := new(NullType) item.Age = sql.NullInt64{Int64: 23, Valid: true} affected, err := testEngine.In("id", 3, 4).Cols("age", "height", "is_man").Update(item) - if err != nil { - t.Error(err) - panic(err) - } - if affected != 2 { - err := errors.New("update failed") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.EqualValues(t, affected, 2) } if true { // 测试where @@ -204,10 +170,7 @@ func TestNullStructUpdate(t *testing.T) { item.Age = sql.NullInt64{Int64: 34, Valid: true} _, err := testEngine.Where("age > ?", 34).Update(item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) } if true { // 修改全部时,插入空值 @@ -219,10 +182,7 @@ func TestNullStructUpdate(t *testing.T) { } _, err := testEngine.AllCols().ID(6).Update(item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) fmt.Println(item) } @@ -263,63 +223,33 @@ func TestNullStructFind(t *testing.T) { if true { item := new(NullType) has, err := testEngine.ID(1).Get(item) - if err != nil { - t.Error(err) - panic(err) - } - if !has { - t.Error(errors.New("no find id 1")) - panic(err) - } - fmt.Println(item) - if item.Id != 1 || item.Name.Valid || item.Age.Valid || item.Height.Valid || - item.IsMan.Valid { - err = errors.New("insert error") - t.Error(err) - panic(err) - } + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, item.Id, 1) + assert.False(t, item.Name.Valid) + assert.False(t, item.Age.Valid) + assert.False(t, item.Height.Valid) + assert.False(t, item.IsMan.Valid) } if true { item := new(NullType) item.Id = 2 - has, err := testEngine.Get(item) - if err != nil { - t.Error(err) - panic(err) - } - if !has { - t.Error(errors.New("no find id 2")) - panic(err) - } - fmt.Println(item) + assert.NoError(t, err) + assert.True(t, has) } if true { item := make([]NullType, 0) - err := testEngine.ID(2).Find(&item) - if err != nil { - t.Error(err) - panic(err) - } - - fmt.Println(item) + assert.NoError(t, err) } if true { item := make([]NullType, 0) - err := testEngine.Asc("age").Find(&item) - if err != nil { - t.Error(err) - panic(err) - } - - for k, v := range item { - fmt.Println(k, v) - } + assert.NoError(t, err) } } @@ -334,10 +264,7 @@ func TestNullStructIterate(t *testing.T) { fmt.Println(i, nultype) return nil }) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) } } @@ -348,10 +275,7 @@ func TestNullStructCount(t *testing.T) { if true { item := new(NullType) total, err := testEngine.Where("age IS NOT NULL").Count(item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) fmt.Println(total) } } @@ -367,10 +291,7 @@ func TestNullStructRows(t *testing.T) { for rows.Next() { err = rows.Scan(item) - if err != nil { - t.Error(err) - panic(err) - } + assert.NoError(t, err) fmt.Println(item) } }