github.com/sourcegraph/jsonrpc2@v0.2.0/conn_opt_test.go (about) 1 package jsonrpc2_test 2 3 import ( 4 "bufio" 5 "context" 6 "io" 7 "log" 8 "net" 9 "testing" 10 11 "github.com/sourcegraph/jsonrpc2" 12 ) 13 14 func TestSetLogger(t *testing.T) { 15 ctx, cancel := context.WithCancel(context.Background()) 16 defer cancel() 17 18 rd, wr := io.Pipe() 19 defer rd.Close() 20 defer wr.Close() 21 22 buf := bufio.NewReader(rd) 23 logger := log.New(wr, "", log.Lmsgprefix) 24 25 a, b := net.Pipe() 26 connA := jsonrpc2.NewConn( 27 ctx, 28 jsonrpc2.NewBufferedStream(a, jsonrpc2.VSCodeObjectCodec{}), 29 noopHandler{}, 30 jsonrpc2.SetLogger(logger), 31 ) 32 connB := jsonrpc2.NewConn( 33 ctx, 34 jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), 35 noopHandler{}, 36 ) 37 defer connA.Close() 38 defer connB.Close() 39 40 // Write a response with no corresponding request. 41 if err := connB.Reply(ctx, jsonrpc2.ID{Num: 0}, nil); err != nil { 42 t.Fatal(err) 43 } 44 45 want := "jsonrpc2: ignoring response #0 with no corresponding request\n" 46 got, err := buf.ReadString('\n') 47 if err != nil { 48 t.Fatal(err) 49 } 50 if got != want { 51 t.Fatalf("got %q, want %q", got, want) 52 } 53 }