aboutsummaryrefslogtreecommitdiff
path: root/sqlite3_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite3_test.go')
-rw-r--r--sqlite3_test.go60
1 files changed, 38 insertions, 22 deletions
diff --git a/sqlite3_test.go b/sqlite3_test.go
index ba4c26f..c5deb3e 100644
--- a/sqlite3_test.go
+++ b/sqlite3_test.go
@@ -27,7 +27,7 @@ import (
"time"
)
-func TempFilename(t *testing.T) string {
+func TempFilename(t testing.TB) string {
f, err := ioutil.TempFile("", "go-sqlite3-test-")
if err != nil {
t.Fatal(err)
@@ -1888,28 +1888,21 @@ func BenchmarkCustomFunctions(b *testing.B) {
}
func TestSuite(t *testing.T) {
- tempFilename := TempFilename(t)
- defer os.Remove(tempFilename)
- d, err := sql.Open("sqlite3", tempFilename+"?_busy_timeout=99999")
- if err != nil {
- t.Fatal(err)
- }
- defer d.Close()
+ initializeTestDB(t)
+ defer freeTestDB()
- db = &TestDB{t, d, SQLITE, sync.Once{}}
- ok := testing.RunTests(func(string, string) (bool, error) { return true, nil }, tests)
- if !ok {
- t.Fatal("A subtest failed")
+ for _, test := range tests {
+ t.Run(test.Name, test.F)
}
+}
- if !testing.Short() {
- for _, b := range benchmarks {
- fmt.Printf("%-20s", b.Name)
- r := testing.Benchmark(b.F)
- fmt.Printf("%10d %10.0f req/s\n", r.N, float64(r.N)/r.T.Seconds())
- }
+func BenchmarkSuite(b *testing.B) {
+ initializeTestDB(b)
+ defer freeTestDB()
+
+ for _, benchmark := range benchmarks {
+ b.Run(benchmark.Name, benchmark.F)
}
- db.tearDown()
}
// Dialect is a type of dialect of databases.
@@ -1924,14 +1917,37 @@ const (
// DB provide context for the tests
type TestDB struct {
- *testing.T
+ testing.TB
*sql.DB
- dialect Dialect
- once sync.Once
+ dialect Dialect
+ once sync.Once
+ tempFilename string
}
var db *TestDB
+func initializeTestDB(t testing.TB) {
+ tempFilename := TempFilename(t)
+ d, err := sql.Open("sqlite3", tempFilename+"?_busy_timeout=99999")
+ if err != nil {
+ os.Remove(tempFilename)
+ t.Fatal(err)
+ }
+
+ db = &TestDB{t, d, SQLITE, sync.Once{}, tempFilename}
+}
+
+func freeTestDB() {
+ err := db.DB.Close()
+ if err != nil {
+ panic(err)
+ }
+ err = os.Remove(db.tempFilename)
+ if err != nil {
+ panic(err)
+ }
+}
+
// the following tables will be created and dropped during the test
var testTables = []string{"foo", "bar", "t", "bench"}