From 5846e1aa228f58bf6abec89d5a665b9375af2d47 Mon Sep 17 00:00:00 2001 From: Jesse Rittner Date: Sat, 8 Dec 2018 08:31:45 -0500 Subject: adding unit test --- sqlite3_test.go | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'sqlite3_test.go') 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) -- cgit v1.2.3 From 2fe51daa5643c6554a78a9e4241c933a12e2faa2 Mon Sep 17 00:00:00 2001 From: Jesse Rittner Date: Sat, 8 Dec 2018 08:39:01 -0500 Subject: fixed typo --- sqlite3_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sqlite3_test.go') diff --git a/sqlite3_test.go b/sqlite3_test.go index 11ac19a..16bbb10 100644 --- a/sqlite3_test.go +++ b/sqlite3_test.go @@ -110,7 +110,7 @@ func TestOpenNoCreate(t *testing.T) { sqlErr, ok := err.(Error) if !ok { - t.Fatalf("expected *Error, but got %T", err) + t.Fatalf("expected sqlite3.Error, but got %T", err) } if sqlErr.Code != ErrCantOpen { -- cgit v1.2.3