Skip to content

Commit 08559e3

Browse files
committed
fix
1 parent 68731c0 commit 08559e3

File tree

7 files changed

+67
-70
lines changed

7 files changed

+67
-70
lines changed

models/migrations/base/tests.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"code.gitea.io/gitea/models/unittest"
1616
"code.gitea.io/gitea/modules/base"
1717
"code.gitea.io/gitea/modules/git"
18-
"code.gitea.io/gitea/modules/log"
1918
"code.gitea.io/gitea/modules/setting"
2019
"code.gitea.io/gitea/modules/testlogger"
2120

@@ -91,7 +90,7 @@ func PrepareTestEnv(t *testing.T, skip int, syncModels ...any) (*xorm.Engine, fu
9190
}
9291

9392
func MainTest(m *testing.M) {
94-
log.RegisterEventWriter("test", testlogger.NewTestLoggerWriter)
93+
testlogger.Init()
9594

9695
giteaRoot := base.SetupGiteaRoot()
9796
if giteaRoot == "" {

modules/log/color.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,19 @@ type ColoredValue struct {
8686
colors []ColorAttribute
8787
}
8888

89+
var _ fmt.Formatter = (*ColoredValue)(nil)
90+
8991
func (c *ColoredValue) Format(f fmt.State, verb rune) {
9092
_, _ = f.Write(ColorBytes(c.colors...))
9193
s := fmt.Sprintf(fmt.FormatString(f, verb), c.v)
9294
_, _ = f.Write([]byte(s))
9395
_, _ = f.Write(resetBytes)
9496
}
9597

98+
func (c *ColoredValue) Value() any {
99+
return c.v
100+
}
101+
96102
func NewColoredValue(v any, color ...ColorAttribute) *ColoredValue {
97103
return &ColoredValue{v: v, colors: color}
98104
}

modules/testlogger/testlogger.go

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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
93105
func 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
148137
type 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
}

tests/integration/integration_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,6 @@ func TestMain(m *testing.M) {
132132
// Instead, "No tests were found", last nonsense log is "According to the configuration, subsequent logs will not be printed to the console"
133133
exitCode := m.Run()
134134

135-
testlogger.WriterCloser.Reset()
136-
137135
if err = util.RemoveAll(setting.Indexer.IssuePath); err != nil {
138136
fmt.Printf("util.RemoveAll: %v\n", err)
139137
os.Exit(1)

tests/integration/linguist_test.go

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package integration
66
import (
77
"context"
88
"net/url"
9+
"strconv"
910
"strings"
1011
"testing"
1112
"time"
@@ -19,6 +20,7 @@ import (
1920
"code.gitea.io/gitea/modules/queue"
2021
repo_service "code.gitea.io/gitea/services/repository"
2122
files_service "code.gitea.io/gitea/services/repository/files"
23+
"code.gitea.io/gitea/tests"
2224

2325
"github.com/stretchr/testify/assert"
2426
)
@@ -218,42 +220,43 @@ func TestLinguist(t *testing.T) {
218220
}
219221

220222
for i, c := range cases {
221-
repo, err := repo_service.CreateRepository(db.DefaultContext, user, user, repo_service.CreateRepoOptions{
222-
Name: "linguist-test",
223-
})
224-
assert.NoError(t, err)
225-
226-
files := []*files_service.ChangeRepoFile{
227-
{
228-
TreePath: ".gitattributes",
229-
ContentReader: strings.NewReader(c.GitAttributesContent),
230-
},
231-
}
232-
files = append(files, c.FilesToAdd...)
233-
for _, f := range files {
234-
f.Operation = "create"
235-
}
223+
t.Run("Case-"+strconv.Itoa(i), func(t *testing.T) {
224+
defer tests.PrintCurrentTest(t)()
225+
repo, err := repo_service.CreateRepository(db.DefaultContext, user, user, repo_service.CreateRepoOptions{
226+
Name: "linguist-test-" + strconv.Itoa(i),
227+
})
228+
assert.NoError(t, err)
236229

237-
_, err = files_service.ChangeRepoFiles(git.DefaultContext, repo, user, &files_service.ChangeRepoFilesOptions{
238-
Files: files,
239-
OldBranch: repo.DefaultBranch,
240-
NewBranch: repo.DefaultBranch,
241-
})
242-
assert.NoError(t, err)
230+
files := []*files_service.ChangeRepoFile{
231+
{
232+
TreePath: ".gitattributes",
233+
ContentReader: strings.NewReader(c.GitAttributesContent),
234+
},
235+
}
236+
files = append(files, c.FilesToAdd...)
237+
for _, f := range files {
238+
f.Operation = "create"
239+
}
243240

244-
assert.NoError(t, stats.UpdateRepoIndexer(repo))
245-
assert.NoError(t, queue.GetManager().FlushAll(context.Background(), 10*time.Second))
241+
_, err = files_service.ChangeRepoFiles(git.DefaultContext, repo, user, &files_service.ChangeRepoFilesOptions{
242+
Files: files,
243+
OldBranch: repo.DefaultBranch,
244+
NewBranch: repo.DefaultBranch,
245+
})
246+
assert.NoError(t, err)
246247

247-
stats, err := repo_model.GetTopLanguageStats(db.DefaultContext, repo, len(c.FilesToAdd))
248-
assert.NoError(t, err)
248+
assert.NoError(t, stats.UpdateRepoIndexer(repo))
249+
assert.NoError(t, queue.GetManager().FlushAll(context.Background(), 10*time.Second))
249250

250-
languages := make([]string, 0, len(stats))
251-
for _, s := range stats {
252-
languages = append(languages, s.Language)
253-
}
254-
assert.Equal(t, c.ExpectedLanguageOrder, languages, "case %d: unexpected language stats", i)
251+
stats, err := repo_model.GetTopLanguageStats(db.DefaultContext, repo, len(c.FilesToAdd))
252+
assert.NoError(t, err)
255253

256-
assert.NoError(t, repo_service.DeleteRepository(db.DefaultContext, user, repo, false))
254+
languages := make([]string, 0, len(stats))
255+
for _, s := range stats {
256+
languages = append(languages, s.Language)
257+
}
258+
assert.Equal(t, c.ExpectedLanguageOrder, languages, "case %d: unexpected language stats", i)
259+
})
257260
}
258261
})
259262
}

tests/integration/migration-test/migration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import (
3737
var currentEngine *xorm.Engine
3838

3939
func initMigrationTest(t *testing.T) func() {
40-
log.RegisterEventWriter("test", testlogger.NewTestLoggerWriter)
40+
testlogger.Init()
4141

4242
deferFn := tests.PrintCurrentTest(t, 2)
4343
giteaRoot := base.SetupGiteaRoot()

tests/test_utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func exitf(format string, args ...any) {
3535
}
3636

3737
func InitTest(requireGitea bool) {
38-
log.RegisterEventWriter("test", testlogger.NewTestLoggerWriter)
38+
testlogger.Init()
3939

4040
giteaRoot := base.SetupGiteaRoot()
4141
if giteaRoot == "" {

0 commit comments

Comments
 (0)