diff options
author | Jesse Rittner <rittneje@gmail.com> | 2018-12-08 08:31:45 -0500 |
---|---|---|
committer | Jesse Rittner <rittneje@gmail.com> | 2018-12-08 08:31:45 -0500 |
commit | 5846e1aa228f58bf6abec89d5a665b9375af2d47 (patch) | |
tree | ef564b7551f633cf62ad098815fdeb2996b8e120 /sqlite3_test.go | |
parent | Revert "SQLITE_OPEN_CREATE should be specified for sqlite3_open_v2 if mode is... (diff) | |
download | golite-5846e1aa228f58bf6abec89d5a665b9375af2d47.tar.gz golite-5846e1aa228f58bf6abec89d5a665b9375af2d47.tar.xz |
adding unit test
Diffstat (limited to 'sqlite3_test.go')
-rw-r--r-- | sqlite3_test.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/sqlite3_test.go b/sqlite3_test.go index 0667893..11ac19a 100644 --- a/sqlite3_test.go +++ b/sqlite3_test.go @@ -87,6 +87,64 @@ func TestOpen(t *testing.T) { } } +func TestOpenNoCreate(t *testing.T) { + filename := t.Name() + ".sqlite" + + if err := os.Remove(filename); err != nil && !os.IsNotExist(err) { + t.Fatal(err) + } + defer os.Remove(filename) + + // https://golang.org/pkg/database/sql/#Open + // "Open may just validate its arguments without creating a connection + // to the database. To verify that the data source name is valid, call Ping." + db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?mode=rw", filename)) + if err == nil { + defer db.Close() + + err = db.Ping() + if err == nil { + t.Fatal("expected error from Open or Ping") + } + } + + sqlErr, ok := err.(Error) + if !ok { + t.Fatalf("expected *Error, but got %T", err) + } + + if sqlErr.Code != ErrCantOpen { + t.Fatalf("expected SQLITE_CANTOPEN, but got %v", sqlErr) + } + + // make sure database file truly was not created + if _, err := os.Stat(filename); !os.IsNotExist(err) { + if err != nil { + t.Fatal(err) + } + t.Fatal("expected database file to not exist") + } + + // verify that it works if the mode is "rwc" instead + db, err = sql.Open("sqlite3", fmt.Sprintf("file:%s?mode=rwc", filename)) + if err != nil { + t.Fatal(err) + } + defer db.Close() + + if err := db.Ping(); err != nil { + t.Fatal(err) + } + + // make sure database file truly was created + if _, err := os.Stat(filename); err != nil { + if !os.IsNotExist(err) { + t.Fatal(err) + } + t.Fatal("expected database file to exist") + } +} + func TestReadonly(t *testing.T) { tempFilename := TempFilename(t) defer os.Remove(tempFilename) |