From 3d4d32932df47816be751062f2f9e77cc38d0148 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Mon, 5 Jan 2026 22:54:16 +0900 Subject: [PATCH] internal/pkg: verify checksum after uneventful scrub This checks that scrub did not condemn any entry without reporting it. Signed-off-by: Ophestra --- internal/pkg/pkg_test.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/internal/pkg/pkg_test.go b/internal/pkg/pkg_test.go index 2f5cc42..8826e5a 100644 --- a/internal/pkg/pkg_test.go +++ b/internal/pkg/pkg_test.go @@ -202,6 +202,15 @@ func checkWithCache(t *testing.T, testCases []cacheTestCase) { scrubFunc = c.Scrub } + var restoreTemp bool + if _, err := os.Lstat(base.Append("temp").String()); err != nil { + if !errors.Is(err, os.ErrNotExist) { + t.Fatal(err) + } + } else { + restoreTemp = true + } + if checksum, err := pkg.HashDir(base); err != nil { t.Fatalf("HashDir: error = %v", err) } else if checksum != tc.want { @@ -214,6 +223,25 @@ func checkWithCache(t *testing.T, testCases []cacheTestCase) { if err := scrubFunc(); err != nil { t.Fatal("cache contains inconsistencies\n\n" + err.Error()) } + + if restoreTemp { + if err := os.Mkdir( + base.Append("temp").String(), + 0700, + ); err != nil { + t.Fatal(err) + } + } + + // validate again to make sure scrub did not condemn anything + if checksum, err := pkg.HashDir(base); err != nil { + t.Fatalf("HashDir: error = %v", err) + } else if checksum != tc.want { + t.Fatalf("(scrubbed) HashDir: %v", &pkg.ChecksumMismatchError{ + Got: checksum, + Want: tc.want, + }) + } }) } }