@@ -89,79 +89,70 @@ func (w *testLoggerWriterCloser) Reset() {
8989 w .Unlock ()
9090}
9191
92+ // Printf takes a format and args and prints the string to os.Stdout
93+ func Printf (format string , args ... any ) {
94+ if ! log .CanColorStdout {
95+ for i := 0 ; i < len (args ); i ++ {
96+ if c , ok := args [i ].(* log.ColoredValue ); ok {
97+ args [i ] = c .Value ()
98+ }
99+ }
100+ }
101+ _ , _ = fmt .Fprintf (os .Stdout , "\t " + format , args ... )
102+ }
103+
92104// PrintCurrentTest prints the current test to os.Stdout
93105func PrintCurrentTest (t testing.TB , skip ... int ) func () {
94106 t .Helper ()
95107 start := time .Now ()
96108 actualSkip := util .OptionalArg (skip ) + 1
97109 _ , filename , line , _ := runtime .Caller (actualSkip )
98110
99- if log .CanColorStdout {
100- _ , _ = fmt .Fprintf (os .Stdout , "=== %s (%s:%d)\n " , fmt .Formatter (log .NewColoredValue (t .Name ())), strings .TrimPrefix (filename , prefix ), line )
101- } else {
102- _ , _ = fmt .Fprintf (os .Stdout , "=== %s (%s:%d)\n " , t .Name (), strings .TrimPrefix (filename , prefix ), line )
103- }
111+ Printf ("=== %s (%s:%d)\n " , log .NewColoredValue (t .Name ()), strings .TrimPrefix (filename , prefix ), line )
112+
104113 WriterCloser .pushT (t )
105114 return func () {
106115 took := time .Since (start )
107116 if took > SlowTest {
108- if log .CanColorStdout {
109- _ , _ = fmt .Fprintf (os .Stdout , "+++ %s is a slow test (took %v)\n " , fmt .Formatter (log .NewColoredValue (t .Name (), log .Bold , log .FgYellow )), fmt .Formatter (log .NewColoredValue (took , log .Bold , log .FgYellow )))
110- } else {
111- _ , _ = fmt .Fprintf (os .Stdout , "+++ %s is a slow test (took %v)\n " , t .Name (), took )
112- }
117+ Printf ("+++ %s is a slow test (took %v)\n " , log .NewColoredValue (t .Name (), log .Bold , log .FgYellow ), log .NewColoredValue (took , log .Bold , log .FgYellow ))
113118 }
119+
114120 timer := time .AfterFunc (SlowFlush , func () {
115- if log .CanColorStdout {
116- _ , _ = fmt .Fprintf (os .Stdout , "+++ %s ... still flushing after %v ...\n " , fmt .Formatter (log .NewColoredValue (t .Name (), log .Bold , log .FgRed )), SlowFlush )
117- } else {
118- _ , _ = fmt .Fprintf (os .Stdout , "+++ %s ... still flushing after %v ...\n " , t .Name (), SlowFlush )
119- }
121+ Printf ("+++ %s ... still flushing after %v ...\n " , log .NewColoredValue (t .Name (), log .Bold , log .FgRed ), SlowFlush )
120122 })
121123 if err := queue .GetManager ().FlushAll (context .Background (), - 1 ); err != nil {
122124 t .Errorf ("Flushing queues failed with error %v" , err )
123125 }
124126 timer .Stop ()
125127 flushTook := time .Since (start ) - took
126128 if flushTook > SlowFlush {
127- if log .CanColorStdout {
128- _ , _ = fmt .Fprintf (os .Stdout , "+++ %s had a slow clean-up flush (took %v)\n " , fmt .Formatter (log .NewColoredValue (t .Name (), log .Bold , log .FgRed )), fmt .Formatter (log .NewColoredValue (flushTook , log .Bold , log .FgRed )))
129- } else {
130- _ , _ = fmt .Fprintf (os .Stdout , "+++ %s had a slow clean-up flush (took %v)\n " , t .Name (), flushTook )
131- }
129+ Printf ("+++ %s had a slow clean-up flush (took %v)\n " , log .NewColoredValue (t .Name (), log .Bold , log .FgRed ), log .NewColoredValue (flushTook , log .Bold , log .FgRed ))
132130 }
133- WriterCloser .popT ()
134- }
135- }
136131
137- // Printf takes a format and args and prints the string to os.Stdout
138- func Printf (format string , args ... any ) {
139- if log .CanColorStdout {
140- for i := 0 ; i < len (args ); i ++ {
141- args [i ] = log .NewColoredValue (args [i ])
142- }
132+ WriterCloser .popT ()
143133 }
144- _ , _ = fmt .Fprintf (os .Stdout , "\t " + format , args ... )
145134}
146135
147136// TestLogEventWriter is a logger which will write to the testing log
148137type TestLogEventWriter struct {
149138 * log.EventWriterBaseImpl
150139}
151140
152- // NewTestLoggerWriter creates a TestLogEventWriter as a log.LoggerProvider
153- func NewTestLoggerWriter (name string , mode log.WriterMode ) log.EventWriter {
141+ // newTestLoggerWriter creates a TestLogEventWriter as a log.LoggerProvider
142+ func newTestLoggerWriter (name string , mode log.WriterMode ) log.EventWriter {
154143 w := & TestLogEventWriter {}
155144 w .EventWriterBaseImpl = log .NewEventWriterBase (name , "test-log-writer" , mode )
156145 w .OutputWriteCloser = WriterCloser
157146 return w
158147}
159148
160- func init () {
149+ func Init () {
161150 const relFilePath = "modules/testlogger/testlogger.go"
162151 _ , filename , _ , _ := runtime .Caller (0 )
163152 if ! strings .HasSuffix (filename , relFilePath ) {
164153 panic ("source code file path doesn't match expected: " + relFilePath )
165154 }
166155 prefix = strings .TrimSuffix (filename , relFilePath )
156+
157+ log .RegisterEventWriter ("test" , newTestLoggerWriter )
167158}
0 commit comments