From 730da698a3eb20b9f663fea8f062822c189d4e6e Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Sat, 14 Jan 2023 18:53:05 +0100 Subject: [PATCH] testing: run cleanups after exiting a benchmark run This is important, otherwise temporary directories don't get removed. Issue found while working on Go 1.20 support. --- src/testing/benchmark.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/testing/benchmark.go b/src/testing/benchmark.go index 2dc59b72fd..a2bf545a1e 100644 --- a/src/testing/benchmark.go +++ b/src/testing/benchmark.go @@ -159,6 +159,7 @@ func (b *B) ReportAllocs() { // runN runs a single benchmark for the specified number of iterations. func (b *B) runN(n int) { + b.runCleanup() // start fresh in the next iteration b.N = n runtime.GC() b.ResetTimer() @@ -457,6 +458,7 @@ func (b *B) Run(name string, f func(b *B)) bool { // Only process sub-benchmarks, if any. sub.hasSub = true } + defer sub.runCleanup() // make sure all cleanups are run, even when panicking if sub.run1() { sub.run() }