...
1
2
3
4 package pq
5
6 import (
7 "database/sql"
8 "database/sql/driver"
9 "testing"
10 )
11
12 func TestConnectorWithNoticeHandler_Simple(t *testing.T) {
13 b, err := NewConnector("")
14 if err != nil {
15 t.Fatal(err)
16 }
17 var notice *Error
18
19 c := ConnectorWithNoticeHandler(b, func(n *Error) { notice = n })
20 raiseNotice(c, t, "Test notice #1")
21 if notice == nil || notice.Message != "Test notice #1" {
22 t.Fatalf("Expected notice w/ message, got %v", notice)
23 }
24
25 prevC := c
26 if c = ConnectorWithNoticeHandler(c, nil); c != prevC {
27 t.Fatalf("Expected to not create new connector but did")
28 }
29 raiseNotice(c, t, "Test notice #2")
30 if notice == nil || notice.Message != "Test notice #1" {
31 t.Fatalf("Expected notice to not change, got %v", notice)
32 }
33
34 if c = ConnectorWithNoticeHandler(c, func(n *Error) { notice = n }); c != prevC {
35 t.Fatal("Expected to not create new connector but did")
36 }
37 raiseNotice(c, t, "Test notice #3")
38 if notice == nil || notice.Message != "Test notice #3" {
39 t.Fatalf("Expected notice w/ message, got %v", notice)
40 }
41 }
42
43 func raiseNotice(c driver.Connector, t *testing.T, escapedNotice string) {
44 db := sql.OpenDB(c)
45 defer db.Close()
46 sql := "DO language plpgsql $$ BEGIN RAISE NOTICE '" + escapedNotice + "'; END $$"
47 if _, err := db.Exec(sql); err != nil {
48 t.Fatal(err)
49 }
50 }
51
View as plain text