From 14a86c9fc63d0d8000940bb0941eab6d0743f5b0 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Sat, 22 Mar 2025 17:06:02 -0700 Subject: [PATCH 1/2] Cache MkdirAll for basline outputs --- internal/testutil/baseline/baseline.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/internal/testutil/baseline/baseline.go b/internal/testutil/baseline/baseline.go index fa28ce4979..6cd5789557 100644 --- a/internal/testutil/baseline/baseline.go +++ b/internal/testutil/baseline/baseline.go @@ -146,12 +146,25 @@ func RunAgainstSubmodule(t *testing.T, fileName string, actual string, opts Opti writeComparison(t, actual, local, reference, true) } +var mkdirAllCache sync.Map + +func mkdirAllCached(t *testing.T, path string) error { + cached, ok := mkdirAllCache.Load(path) + if ok { + return cached.(error) + } + + err := os.MkdirAll(path, 0o755) + cached, _ = mkdirAllCache.LoadOrStore(path, err) + return cached.(error) +} + func writeComparison(t *testing.T, actualContent string, local, reference string, comparingAgainstSubmodule bool) { if actualContent == "" { panic("the generated content was \"\". Return 'baseline.NoContent' if no baselining is required.") } - if err := os.MkdirAll(filepath.Dir(local), 0o755); err != nil { + if err := mkdirAllCached(t, filepath.Dir(local)); err != nil { t.Error(fmt.Errorf("failed to create directories for the local baseline file %s: %w", local, err)) return } From 3c8aeaf2649c53b9d53ec53a65b35ccc3568583c Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Sat, 22 Mar 2025 17:10:02 -0700 Subject: [PATCH 2/2] Fix it --- internal/testutil/baseline/baseline.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/internal/testutil/baseline/baseline.go b/internal/testutil/baseline/baseline.go index 6cd5789557..2333b32544 100644 --- a/internal/testutil/baseline/baseline.go +++ b/internal/testutil/baseline/baseline.go @@ -146,17 +146,22 @@ func RunAgainstSubmodule(t *testing.T, fileName string, actual string, opts Opti writeComparison(t, actual, local, reference, true) } -var mkdirAllCache sync.Map +var ( + mkdirAllCache sync.Map + mkdirAllCacheMarker any = new(int) +) func mkdirAllCached(t *testing.T, path string) error { - cached, ok := mkdirAllCache.Load(path) - if ok { - return cached.(error) + if _, ok := mkdirAllCache.Load(path); ok { + return nil + } + + if err := os.MkdirAll(path, 0o755); err != nil { + return err } - err := os.MkdirAll(path, 0o755) - cached, _ = mkdirAllCache.LoadOrStore(path, err) - return cached.(error) + mkdirAllCache.Store(path, mkdirAllCacheMarker) + return nil } func writeComparison(t *testing.T, actualContent string, local, reference string, comparingAgainstSubmodule bool) {