From 5d752706f0a947b39fde89d8cbd937b7d01d6f14 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 27 May 2017 17:31:39 +0800 Subject: [PATCH] more tests --- circle.yml | 4 ++-- rows_test.go | 41 +++++++++++++++++++++++++++++++++++++++++ session_cols_test.go | 20 ++++++++++++++++++-- session_iterate_test.go | 38 ++++++++++++++++++++++++++++++++++++++ xorm_test.go | 29 ++++++++++++++++++++++++----- 5 files changed, 123 insertions(+), 9 deletions(-) create mode 100644 rows_test.go create mode 100644 session_iterate_test.go diff --git a/circle.yml b/circle.yml index ef85eb6c..4a2f609c 100644 --- a/circle.yml +++ b/circle.yml @@ -22,8 +22,8 @@ test: override: # './...' is a relative pattern which means all subdirectories - go test -v -race -coverprofile=coverage.txt -covermode=atomic - - go test -v -race -db=mysql -conn_str="root:@/xorm_test" - - go test -v -race -db=postgres -conn_str="dbname=xorm_test sslmode=disable" + - go test -v -race -db=mysql -conn_str="root:@/xorm_test" -coverprofile=coverage.txt -covermode=atomic + - go test -v -race -db=postgres -conn_str="dbname=xorm_test sslmode=disable" -coverprofile=coverage.txt -covermode=atomic - cd /home/ubuntu/.go_workspace/src/github.com/go-xorm/tests && ./sqlite3.sh - cd /home/ubuntu/.go_workspace/src/github.com/go-xorm/tests && ./mysql.sh - cd /home/ubuntu/.go_workspace/src/github.com/go-xorm/tests && ./postgres.sh diff --git a/rows_test.go b/rows_test.go new file mode 100644 index 00000000..b2463296 --- /dev/null +++ b/rows_test.go @@ -0,0 +1,41 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestRows(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type UserRows struct { + Id int64 + IsMan bool + } + + assert.NoError(t, testEngine.Sync2(new(UserRows))) + + cnt, err := testEngine.Insert(&UserRows{ + IsMan: true, + }) + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) + + rows, err := testEngine.Rows(new(UserRows)) + assert.NoError(t, err) + defer rows.Close() + + cnt = 0 + user := new(UserRows) + for rows.Next() { + err = rows.Scan(user) + assert.NoError(t, err) + cnt++ + } + assert.EqualValues(t, 1, cnt) +} diff --git a/session_cols_test.go b/session_cols_test.go index 8bef8bd7..12edd6f4 100644 --- a/session_cols_test.go +++ b/session_cols_test.go @@ -4,13 +4,29 @@ package xorm -import "testing" +import ( + "testing" + + "github.com/stretchr/testify/assert" +) func TestSetExpr(t *testing.T) { + assert.NoError(t, prepareEngine()) + type User struct { Id int64 Show bool } - testEngine.SetExpr("show", "NOT show").Id(1).Update(new(User)) + assert.NoError(t, testEngine.Sync2(new(User))) + + cnt, err := testEngine.Insert(&User{ + Show: true, + }) + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) + + cnt, err = testEngine.SetExpr("show", "NOT show").Id(1).Update(new(User)) + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) } diff --git a/session_iterate_test.go b/session_iterate_test.go new file mode 100644 index 00000000..2c58c3ab --- /dev/null +++ b/session_iterate_test.go @@ -0,0 +1,38 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIterate(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type UserIterate struct { + Id int64 + IsMan bool + } + + assert.NoError(t, testEngine.Sync2(new(UserIterate))) + + cnt, err := testEngine.Insert(&UserIterate{ + IsMan: true, + }) + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) + + cnt = 0 + err = testEngine.Iterate(new(UserIterate), func(i int, bean interface{}) error { + user := bean.(*UserIterate) + assert.EqualValues(t, 1, user.Id) + assert.EqualValues(t, true, user.IsMan) + cnt++ + return nil + }) + assert.EqualValues(t, 1, cnt) +} diff --git a/xorm_test.go b/xorm_test.go index 0d861707..150611f6 100644 --- a/xorm_test.go +++ b/xorm_test.go @@ -4,6 +4,7 @@ import ( "flag" "fmt" "os" + "strings" "testing" _ "github.com/go-sql-driver/mysql" @@ -14,6 +15,7 @@ import ( var ( testEngine *Engine + dbType string connString string db = flag.String("db", "sqlite3", "the tested database") @@ -47,12 +49,13 @@ func createEngine(dbType, connStr string) error { } func prepareEngine() error { - return createEngine(*db, connString) + return createEngine(dbType, connString) } func TestMain(m *testing.M) { flag.Parse() + dbType = *db if *db == "sqlite3" { if ptrConnStr == nil { connString = "./test.db" @@ -67,11 +70,27 @@ func TestMain(m *testing.M) { connString = *ptrConnStr } - if err := prepareEngine(); err != nil { - fmt.Println(err) - return + dbs := strings.Split(*db, ";") + conns := strings.Split(connString, ";") + + var res int + for i := 0; i < len(dbs); i++ { + dbType = dbs[i] + connString = conns[i] + testEngine = nil + + if err := prepareEngine(); err != nil { + fmt.Println(err) + return + } + + code := m.Run() + if code > 0 { + res = code + } } - os.Exit(m.Run()) + + os.Exit(res) } func TestPing(t *testing.T) {