mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 05:25:15 +01:00 
			
		
		
		
	More fix for #24981 * #24981 Close #22361 * #22361 There were many patches for Gitea's sub-commands to satisfy the facts: * Some sub-commands shouldn't output any log, otherwise the git protocol would be broken * Sometimes the users want to see "verbose" or "quiet" outputs That's a longstanding problem, and very fragile. This PR is only a quick patch for the problem. In the future, the sub-command system should be refactored to a clear solution. ---- Other changes: * Use `ReplaceAllWriters` to replace `RemoveAllWriters().AddWriters(writer)`, then it's an atomic operation. * Remove unnecessary `syncLevelInternal` calls, because `AddWriters/addWritersInternal` already calls it. Co-authored-by: Giteabot <teabot@gitea.io>
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2023 The Gitea Authors. All rights reserved.
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
package log
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
)
 | 
						|
 | 
						|
func TestSharedWorker(t *testing.T) {
 | 
						|
	RegisterEventWriter("dummy", func(writerName string, writerMode WriterMode) EventWriter {
 | 
						|
		return newDummyWriter(writerName, writerMode.Level, 0)
 | 
						|
	})
 | 
						|
 | 
						|
	m := NewManager()
 | 
						|
	_, err := m.NewSharedWriter("dummy-1", "dummy", WriterMode{Level: DEBUG, Flags: FlagsFromBits(0)})
 | 
						|
	assert.NoError(t, err)
 | 
						|
 | 
						|
	w := m.GetSharedWriter("dummy-1")
 | 
						|
	assert.NotNil(t, w)
 | 
						|
	loggerTest := m.GetLogger("test")
 | 
						|
	loggerTest.AddWriters(w)
 | 
						|
	loggerTest.Info("msg-1")
 | 
						|
	loggerTest.ReplaceAllWriters() // the shared writer is not closed here
 | 
						|
	loggerTest.Info("never seen")
 | 
						|
 | 
						|
	// the shared writer can still be used later
 | 
						|
	w = m.GetSharedWriter("dummy-1")
 | 
						|
	assert.NotNil(t, w)
 | 
						|
	loggerTest.AddWriters(w)
 | 
						|
	loggerTest.Info("msg-2")
 | 
						|
 | 
						|
	m.GetLogger("test-another").AddWriters(w)
 | 
						|
	m.GetLogger("test-another").Info("msg-3")
 | 
						|
 | 
						|
	m.Close()
 | 
						|
 | 
						|
	logs := w.(*dummyWriter).GetLogs()
 | 
						|
	assert.Equal(t, []string{"msg-1\n", "msg-2\n", "msg-3\n"}, logs)
 | 
						|
}
 |