...

Source file src/github.com/lib/pq/notice_test.go

Documentation: github.com/lib/pq

     1  //go:build go1.10
     2  // +build go1.10
     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  	// Make connector w/ handler to set the local var
    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  	// Unset the handler on the same connector
    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  	// Set it back on the same connector
    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