From 8f949215bb09b346ffb654614c8f03fa31b9c3be Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Fri, 6 Mar 2026 21:37:34 +0300 Subject: [PATCH] cache: test IsNegative SQL time predicate independently of ExpireNegatives Signed-off-by: NotAShelf Change-Id: Ia298cc902d972a589d47de247e447d686a6a6964 --- internal/cache/db_test.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/cache/db_test.go b/internal/cache/db_test.go index 4a9278e..7501e5d 100644 --- a/internal/cache/db_test.go +++ b/internal/cache/db_test.go @@ -219,13 +219,24 @@ func TestNegativeCacheExpiry(t *testing.T) { if err := db.SetNegative("expires-now", -time.Second); err != nil { t.Fatalf("SetNegative: %v", err) } + + // IsNegative must filter expired entries via the inline SQL predicate, + // even before ExpireNegatives cleans them up. + neg, err := db.IsNegative("expires-now") + if err != nil { + t.Fatalf("IsNegative for expired entry: %v", err) + } + if neg { + t.Error("IsNegative should return false for an already-expired entry (SQL time predicate)") + } + + // Janitor cleanup should also work. if err := db.ExpireNegatives(); err != nil { t.Fatalf("ExpireNegatives: %v", err) } - - neg, _ := db.IsNegative("expires-now") + neg, _ = db.IsNegative("expires-now") if neg { - t.Error("expired negative should not be returned") + t.Error("expired negative should not be returned after ExpireNegatives") } }