From 4f7abea96e64314746db773531a005f945e3288a Mon Sep 17 00:00:00 2001 From: Evan Jones Date: Mon, 16 Nov 2020 09:42:00 -0500 Subject: doc.go: you can use Conn.Raw to get *SQLiteConn (#882) This can be easier that registering a new driver, in some cases. Add a test to verify that this works. --- sqlite3_test.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'sqlite3_test.go') diff --git a/sqlite3_test.go b/sqlite3_test.go index d5b0cea..fe367cf 100644 --- a/sqlite3_test.go +++ b/sqlite3_test.go @@ -9,6 +9,7 @@ package sqlite3 import ( "bytes" + "context" "database/sql" "database/sql/driver" "errors" @@ -2352,3 +2353,32 @@ func benchmarkStmtRows(b *testing.B) { } } } + +func TestConnRawIsSQLiteConn(t *testing.T) { + db, err := sql.Open("sqlite3", ":memory:") + if err != nil { + t.Fatal("Failed to open db:", err) + } + defer db.Close() + + conn, err := db.Conn(context.Background()) + if err != nil { + t.Fatal("Failed to get conn:", err) + } + defer conn.Close() + err = conn.Raw(func(driverConn interface{}) error { + sqliteConn, ok := driverConn.(*SQLiteConn) + if !ok { + t.Errorf("driverConn type=%T; expected to be *SQLiteConn", driverConn) + return nil + } + // call a private SQLite API to confirm the raw conn "works" + if sqliteConn.AuthEnabled() { + t.Error("sqliteConn.AuthEnabled()=true; expected false") + } + return nil + }) + if err != nil { + t.Error("conn.Raw() returned err:", err) + } +} -- cgit v1.2.3