@@ -3,6 +3,7 @@ package slogjson_test
33import (
44 "bytes"
55 "context"
6+ "database/sql"
67 "fmt"
78 "runtime"
89 "testing"
@@ -33,7 +34,29 @@ func TestMake(t *testing.T) {
3334 l .Error (ctx , "line1\n \n line2" , slog .F ("wowow" , "me\n you" ))
3435
3536 j := entryjson .Filter (b .String (), "ts" )
36- exp := fmt .Sprintf (`{"level":"ERROR","msg":"line1\n\nline2","caller":"%v:33 ","func":"cdr.dev/slog/sloggers/slogjson_test.TestMake","logger_names":["named"],"trace":"%v","span":"%v","fields":{"wowow":"me\nyou"}}
37+ exp := fmt .Sprintf (`{"level":"ERROR","msg":"line1\n\nline2","caller":"%v:34 ","func":"cdr.dev/slog/sloggers/slogjson_test.TestMake","logger_names":["named"],"trace":"%v","span":"%v","fields":{"wowow":"me\nyou"}}
3738` , slogjsonTestFile , span .SpanContext ().TraceID ().String (), span .SpanContext ().SpanID ().String ())
3839 assert .Equal (t , "entry" , exp , j )
3940}
41+
42+ func TestNoDriverValue (t * testing.T ) {
43+ t .Parallel ()
44+
45+ b := & bytes.Buffer {}
46+ l := slog .Make (slogjson .Sink (b ))
47+ l = l .Named ("named" )
48+ validField := sql.NullString {
49+ String : "cat" ,
50+ Valid : true ,
51+ }
52+ invalidField := sql.NullString {
53+ String : "dog" ,
54+ Valid : false ,
55+ }
56+ l .Error (bg , "error!" , slog .F ("inval" , invalidField ), slog .F ("val" , validField ))
57+
58+ j := entryjson .Filter (b .String (), "ts" )
59+ exp := fmt .Sprintf (`{"level":"ERROR","msg":"error!","caller":"%v:56","func":"cdr.dev/slog/sloggers/slogjson_test.TestNoDriverValue","logger_names":["named"],"fields":{"inval":null,"val":"cat"}}
60+ ` , slogjsonTestFile )
61+ assert .Equal (t , "entry" , exp , j )
62+ }
0 commit comments