ktesting: support capturing log output
This is a feature of the underlying k8s.io/klog/v2/ktesting which is useful also when using the Kubernetes ktesting.
This commit is contained in:
		| @@ -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 | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -18,4 +18,5 @@ package internal | ||||
|  | ||||
| type InitConfig struct { | ||||
| 	PerTestOutput bool | ||||
| 	BufferLogs    bool | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Patrick Ohly
					Patrick Ohly