package sqlite3
import (
- "crypto/rand"
"database/sql"
"database/sql/driver"
- "encoding/hex"
"errors"
"fmt"
+ "io/ioutil"
"net/url"
"os"
+ "path/filepath"
+ "reflect"
+ "regexp"
"strings"
+ "sync"
"testing"
"time"
}
}
- db1, err := sql.Open("sqlite3", "file:" + tempFilename)
+ func TestReadonly(t *testing.T) {
+ tempFilename := TempFilename(t)
+ defer os.Remove(tempFilename)
+
- db2, err := sql.Open("sqlite3", "file:" + tempFilename + "?mode=ro")
++ db1, err := sql.Open("sqlite3", "file:"+tempFilename)
+ if err != nil {
+ t.Fatal(err)
+ }
+ db1.Exec("CREATE TABLE test (x int, y float)")
+
++ db2, err := sql.Open("sqlite3", "file:"+tempFilename+"?mode=ro")
+ if err != nil {
+ t.Fatal(err)
+ }
+ _ = db2
+ _, err = db2.Exec("INSERT INTO test VALUES (1, 3.14)")
+ if err == nil {
+ t.Fatal("didn't expect INSERT into read-only database to work")
+ }
+ }
+
func TestClose(t *testing.T) {
- tempFilename := TempFilename()
+ tempFilename := TempFilename(t)
db, err := sql.Open("sqlite3", tempFilename)
if err != nil {
t.Fatal("Failed to open database:", err)