code.gitea.io/gitea@v1.22.3/modules/log/manager_test.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package log
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestSharedWorker(t *testing.T) {
    13  	RegisterEventWriter("dummy", func(writerName string, writerMode WriterMode) EventWriter {
    14  		return newDummyWriter(writerName, writerMode.Level, 0)
    15  	})
    16  
    17  	m := NewManager()
    18  	_, err := m.NewSharedWriter("dummy-1", "dummy", WriterMode{Level: DEBUG, Flags: FlagsFromBits(0)})
    19  	assert.NoError(t, err)
    20  
    21  	w := m.GetSharedWriter("dummy-1")
    22  	assert.NotNil(t, w)
    23  	loggerTest := m.GetLogger("test")
    24  	loggerTest.AddWriters(w)
    25  	loggerTest.Info("msg-1")
    26  	loggerTest.ReplaceAllWriters() // the shared writer is not closed here
    27  	loggerTest.Info("never seen")
    28  
    29  	// the shared writer can still be used later
    30  	w = m.GetSharedWriter("dummy-1")
    31  	assert.NotNil(t, w)
    32  	loggerTest.AddWriters(w)
    33  	loggerTest.Info("msg-2")
    34  
    35  	m.GetLogger("test-another").AddWriters(w)
    36  	m.GetLogger("test-another").Info("msg-3")
    37  
    38  	m.Close()
    39  
    40  	logs := w.(*dummyWriter).GetLogs()
    41  	assert.Equal(t, []string{"msg-1\n", "msg-2\n", "msg-3\n"}, logs)
    42  }