Skip to content

Commit ac2e8f3

Browse files
committed
Update
mattn#598
1 parent eef0bf0 commit ac2e8f3

File tree

3 files changed

+49
-7
lines changed

3 files changed

+49
-7
lines changed

driver/driver.goconvey

Lines changed: 0 additions & 6 deletions
This file was deleted.

driver/error_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,5 +238,4 @@ func TestExtendedErrorCodes_Unique(t *testing.T) {
238238
extended, expected)
239239
}
240240
}
241-
242241
}

driver/func_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,61 @@ package sqlite3
99

1010
import (
1111
"database/sql"
12+
"fmt"
1213
"reflect"
1314
"regexp"
1415
"strings"
1516
"testing"
1617
)
1718

19+
func TestInvalidFunctionRegistration(t *testing.T) {
20+
afn := "func"
21+
zeroArgsFn := func(a bool) {}
22+
nonErrorArgsFn := func(a bool) (int, int) { return 0, 0 }
23+
24+
sql.Register(fmt.Sprintf("sqlite3-%s-afn", t.Name()), &SQLiteDriver{
25+
ConnectHook: func(conn *SQLiteConn) error {
26+
if err := conn.RegisterFunc("afn", afn, true); err != nil {
27+
return err
28+
}
29+
30+
return nil
31+
},
32+
})
33+
34+
sql.Register(fmt.Sprintf("sqlite3-%s-zeroArgsFn", t.Name()), &SQLiteDriver{
35+
ConnectHook: func(conn *SQLiteConn) error {
36+
if err := conn.RegisterFunc("zeroArgsFn", zeroArgsFn, true); err != nil {
37+
return err
38+
}
39+
40+
return nil
41+
},
42+
})
43+
44+
sql.Register(fmt.Sprintf("sqlite3-%s-nonErrorArgsFn", t.Name()), &SQLiteDriver{
45+
ConnectHook: func(conn *SQLiteConn) error {
46+
if err := conn.RegisterFunc("nonErrorArgsFn", nonErrorArgsFn, true); err != nil {
47+
return err
48+
}
49+
50+
return nil
51+
},
52+
})
53+
54+
for _, s := range []string{"sqlite3-%s-afn", "sqlite3-%s-zeroArgsFn", "sqlite3-%s-nonErrorArgsFn"} {
55+
db, err := sql.Open(fmt.Sprintf(s, t.Name()), ":memory:")
56+
if err != nil {
57+
t.Fatal("Failed to open database:", err)
58+
}
59+
defer db.Close()
60+
61+
if err := db.Ping(); err == nil {
62+
t.Fatal("Expected error from RegisterFunc")
63+
}
64+
}
65+
}
66+
1867
func TestFunctionRegistration(t *testing.T) {
1968
addi8_16_32 := func(a int8, b int16) int32 { return int32(a) + int32(b) }
2069
addi64 := func(a, b int64) int64 { return a + b }

0 commit comments

Comments
 (0)