1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
package dbstore
import (
"context"
"os"
"path/filepath"
// "reflect"
"testing"
// "time"
)
func TestNewTxDupTx(t *testing.T) {
// cache context, create temp dir
ctx := context.Background()
dir, err := os.MkdirTemp("", "")
if err != nil {
t.Error(err)
return
}
defer os.RemoveAll(dir)
// open db
db, err := Open(filepath.Join(dir, "newtxduptx.db"))
if err != nil {
t.Error(err)
return
}
// init db
if err := db.Init(ctx); err != nil {
t.Error(err)
return
}
// create first transaction
if _, err = db.Begin(ctx, []string{}); err != nil {
t.Error(err)
return
}
// create second transaction
got, err := db.Begin(ctx, []string{})
if err != nil { // FIXME
t.Errorf("got %v, exp error", got)
return
}
}
func TestNewTxBadQueries(t *testing.T) {
badQueryIds := []string { "query/does/not/exist" }
// cache context, create temp dir
ctx := context.Background()
dir, err := os.MkdirTemp("", "")
if err != nil {
t.Error(err)
return
}
defer os.RemoveAll(dir)
// open db
db, err := Open(filepath.Join(dir, "newtx-bad-queries.db"))
if err != nil {
t.Error(err)
return
}
// init db
if err := db.Init(ctx); err != nil {
t.Error(err)
return
}
// create first transaction
if got, err := db.Begin(ctx, badQueryIds); err == nil {
t.Errorf("got %v, exp error", got)
return
}
}
func TestNewTxPrepareFail(t *testing.T) {
// cache context, create temp dir
ctx := context.Background()
dir, err := os.MkdirTemp("", "")
if err != nil {
t.Error(err)
return
}
defer os.RemoveAll(dir)
// open db
db, err := Open(filepath.Join(dir, "newtx-prepare-fail.db"))
if err != nil {
t.Error(err)
return
}
// create transaction
if got, err := db.Begin(ctx, []string { "test/junk" }); err == nil {
t.Errorf("got %v, exp error", got)
}
}
func TestTxExecFail(t *testing.T) {
// cache context, create temp dir
ctx := context.Background()
dir, err := os.MkdirTemp("", "")
if err != nil {
t.Error(err)
return
}
defer os.RemoveAll(dir)
// open db
db, err := Open(filepath.Join(dir, "txexecfail.db"))
if err != nil {
t.Error(err)
return
}
// init db
if err := db.Init(ctx); err != nil {
t.Error(err)
return
}
// create transaction
tx, err := db.Begin(ctx, []string { "init" })
if err != nil {
t.Error(err)
return
}
// close transaction (this will clear statements)
tx.Close()
if got, err := tx.Exec(ctx, "init"); err == nil {
t.Errorf("got %v, exp error", got)
}
}
|