mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-25 03:22:36 +00: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>
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			42 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)
 | |
| }
 |