mirror of
https://gitea.com/gitea/runner.git
synced 2026-11-04 22:37:55 +00:00
Add `act/common/logging`: a printf-style `Logger` on a slog-shaped `Handler`, with a logrus-backed handler as the only backend, plus a `logtest` handler for tests. Move the job logger onto it: `common.Logger` returns `*logging.Logger`, the job log formatters and the `Reporter` hook become handlers, and composite step IDs travel in the context. Logging is tightly coupled to logrus types (hooks, formatters, `Entry.Data`). Going through our own interface first lets the remaining call sites move over with unchanged behavior, and lets the backend be swapped for `log/slog` in one place afterwards. The global process logger and its masking formatter stay on logrus for now. Assisted-by: Codet Co-authored-by: bircni <[email protected]> Reviewed-on: https://gitea.com/gitea/runner/pulls/1295 Reviewed-by: bircni <[email protected]>
68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package common
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"gitea.com/gitea/runner/act/common/logging"
|
|
"gitea.com/gitea/runner/act/common/logging/logtest"
|
|
)
|
|
|
|
func TestDryrunContext(t *testing.T) {
|
|
ctx := context.Background()
|
|
if Dryrun(ctx) {
|
|
t.Fatal("plain context should not be dryrun")
|
|
}
|
|
if !Dryrun(WithDryrun(ctx, true)) {
|
|
t.Fatal("WithDryrun(true) should set dryrun")
|
|
}
|
|
if Dryrun(WithDryrun(ctx, false)) {
|
|
t.Fatal("WithDryrun(false) should clear dryrun")
|
|
}
|
|
}
|
|
|
|
func TestJobErrorContainer(t *testing.T) {
|
|
ctx := context.Background()
|
|
err := errors.New("job failed")
|
|
|
|
SetJobError(ctx, err)
|
|
if got := JobError(ctx); got != nil {
|
|
t.Fatalf("JobError without container = %v, want nil", got)
|
|
}
|
|
|
|
ctx = WithJobErrorContainer(ctx)
|
|
SetJobError(ctx, err)
|
|
if got := JobError(ctx); !errors.Is(got, err) {
|
|
t.Fatalf("JobError = %v, want %v", got, err)
|
|
}
|
|
}
|
|
|
|
func TestLoggerAndHandlerContext(t *testing.T) {
|
|
ctx := context.Background()
|
|
if Logger(ctx) != logging.Default() {
|
|
t.Fatal("plain context should use the default logger")
|
|
}
|
|
if LoggerHandler(ctx) != nil {
|
|
t.Fatal("plain context should not have a logger handler")
|
|
}
|
|
if StepIDs(ctx) != nil {
|
|
t.Fatal("plain context should not have step IDs")
|
|
}
|
|
|
|
logger := logging.New(logtest.New())
|
|
ctx = WithLogger(ctx, logger)
|
|
if Logger(ctx) != logger {
|
|
t.Fatal("WithLogger should set logger")
|
|
}
|
|
|
|
handler := logtest.New()
|
|
ctx = WithLoggerHandler(ctx, handler)
|
|
if LoggerHandler(ctx) != handler {
|
|
t.Fatal("WithLoggerHandler should set handler")
|
|
}
|
|
}
|