Skip to content

Commit

Permalink
ktesting: support capturing log output
Browse files Browse the repository at this point in the history
This is a feature of the underlying k8s.io/klog/v2/ktesting which is
useful also when using the Kubernetes ktesting.
  • Loading branch information
pohly committed Jun 26, 2024
1 parent 8cf93c8 commit fc55fec
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
10 changes: 10 additions & 0 deletions test/utils/ktesting/initoption/initoption.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,13 @@ func PerTestOutput(enabled bool) InitOption {
c.PerTestOutput = enabled
}
}

// BufferLogs controls whether log entries are captured in memory in addition
// to being printed. Off by default. Unit tests that want to verify that
// log entries are emitted as expected can turn this on and then retrieve
// the captured log through the Underlier LogSink interface.
func BufferLogs(enabled bool) InitOption {
return func(c *internal.InitConfig) {
c.BufferLogs = enabled
}
}
1 change: 1 addition & 0 deletions test/utils/ktesting/internal/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ package internal

type InitConfig struct {
PerTestOutput bool
BufferLogs bool
}
4 changes: 3 additions & 1 deletion test/utils/ktesting/tcontext.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ import (
)

// Underlier is the additional interface implemented by the per-test LogSink
// behind [TContext.Logger].
// behind [TContext.Logger]. Together with [initoption.BufferLogs] it can be
// used to capture log output in memory to check it in tests.
type Underlier = ktesting.Underlier

// CleanupGracePeriod is the time that a [TContext] gets canceled before the
Expand Down Expand Up @@ -245,6 +246,7 @@ func Init(tb TB, opts ...InitOption) TContext {
}),
ktesting.VerbosityFlagName("v"),
ktesting.VModuleFlagName("vmodule"),
ktesting.BufferLogs(c.BufferLogs),
)

// Copy klog settings instead of making the ktesting logger
Expand Down

0 comments on commit fc55fec

Please sign in to comment.