diff options
author | mattn <mattn.jp@gmail.com> | 2015-04-14 09:12:54 +0900 |
---|---|---|
committer | mattn <mattn.jp@gmail.com> | 2015-04-14 09:12:54 +0900 |
commit | 5f64400729dce4425be38a0007e19949af4ee4f8 (patch) | |
tree | 440df8f15f695391d6dd42403a5438ff14b0e4e8 /sqlite3_test.go | |
parent | Merge pull request #196 from egonelbre/fix-nullstring (diff) | |
parent | Add a txlock option when opening databases (v2) (diff) | |
download | golite-5f64400729dce4425be38a0007e19949af4ee4f8.tar.gz golite-5f64400729dce4425be38a0007e19949af4ee4f8.tar.xz |
Merge pull request #194 from hallyn/tximm.2
Add a txlock option when opening databases
Diffstat (limited to '')
-rw-r--r-- | sqlite3_test.go | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/sqlite3_test.go b/sqlite3_test.go index 44e00f1..74cafa8 100644 --- a/sqlite3_test.go +++ b/sqlite3_test.go @@ -9,6 +9,7 @@ import ( "crypto/rand" "database/sql" "encoding/hex" + "fmt" "net/url" "os" "path/filepath" @@ -25,11 +26,17 @@ func TempFilename() string { return filepath.Join(os.TempDir(), "foo"+hex.EncodeToString(randBytes)+".db") } -func TestOpen(t *testing.T) { +func doTestOpen(t *testing.T, option string) (string, error) { + var url string tempFilename := TempFilename() - db, err := sql.Open("sqlite3", tempFilename) + if option != "" { + url = tempFilename + option + } else { + url = tempFilename + } + db, err := sql.Open("sqlite3", url) if err != nil { - t.Fatal("Failed to open database:", err) + return "Failed to open database:", err } defer os.Remove(tempFilename) defer db.Close() @@ -37,11 +44,38 @@ func TestOpen(t *testing.T) { _, err = db.Exec("drop table foo") _, err = db.Exec("create table foo (id integer)") if err != nil { - t.Fatal("Failed to create table:", err) + return "Failed to create table:", err } if stat, err := os.Stat(tempFilename); err != nil || stat.IsDir() { - t.Error("Failed to create ./foo.db") + return "Failed to create ./foo.db", nil + } + + return "", nil +} + +func TestOpen(t *testing.T) { + cases := map[string]bool{ + "": true, + "?_txlock=immediate": true, + "?_txlock=deferred": true, + "?_txlock=exclusive": true, + "?_txlock=bogus": false, + } + for option, expectedPass := range cases { + result, err := doTestOpen(t, option) + if result == "" { + if ! expectedPass { + errmsg := fmt.Sprintf("_txlock error not caught at dbOpen with option: %s", option) + t.Fatal(errmsg) + } + } else if expectedPass { + if err == nil { + t.Fatal(result) + } else { + t.Fatal(result, err) + } + } } } |