Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5846e1a

Browse files
committed
adding unit test
1 parent 2915940 commit 5846e1a

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

‎sqlite3_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,64 @@ func TestOpen(t *testing.T) {
8787
}
8888
}
8989

90+
func TestOpenNoCreate(t *testing.T) {
91+
filename := t.Name() + ".sqlite"
92+
93+
if err := os.Remove(filename); err != nil && !os.IsNotExist(err) {
94+
t.Fatal(err)
95+
}
96+
defer os.Remove(filename)
97+
98+
// https://golang.org/pkg/database/sql/#Open
99+
// "Open may just validate its arguments without creating a connection
100+
// to the database. To verify that the data source name is valid, call Ping."
101+
db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?mode=rw", filename))
102+
if err == nil {
103+
defer db.Close()
104+
105+
err = db.Ping()
106+
if err == nil {
107+
t.Fatal("expected error from Open or Ping")
108+
}
109+
}
110+
111+
sqlErr, ok := err.(Error)
112+
if !ok {
113+
t.Fatalf("expected *Error, but got %T", err)
114+
}
115+
116+
if sqlErr.Code != ErrCantOpen {
117+
t.Fatalf("expected SQLITE_CANTOPEN, but got %v", sqlErr)
118+
}
119+
120+
// make sure database file truly was not created
121+
if _, err := os.Stat(filename); !os.IsNotExist(err) {
122+
if err != nil {
123+
t.Fatal(err)
124+
}
125+
t.Fatal("expected database file to not exist")
126+
}
127+
128+
// verify that it works if the mode is "rwc" instead
129+
db, err = sql.Open("sqlite3", fmt.Sprintf("file:%s?mode=rwc", filename))
130+
if err != nil {
131+
t.Fatal(err)
132+
}
133+
defer db.Close()
134+
135+
if err := db.Ping(); err != nil {
136+
t.Fatal(err)
137+
}
138+
139+
// make sure database file truly was created
140+
if _, err := os.Stat(filename); err != nil {
141+
if !os.IsNotExist(err) {
142+
t.Fatal(err)
143+
}
144+
t.Fatal("expected database file to exist")
145+
}
146+
}
147+
90148
func TestReadonly(t *testing.T) {
91149
tempFilename := TempFilename(t)
92150
defer os.Remove(tempFilename)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /