From 1b59a1c4211fba5f56ca58fc14ffbc01c5c134b8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 3 Jan 2021 17:36:40 +0530 Subject: [PATCH] Finish tests of disk cache --- kitty/disk-cache.c | 3 ++- kitty_tests/graphics.py | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/kitty/disk-cache.c b/kitty/disk-cache.c index cadf068bb..f58941d08 100644 --- a/kitty/disk-cache.c +++ b/kitty/disk-cache.c @@ -92,7 +92,7 @@ open_cache_file(const char *cache_path) { size_t sz = strlen(cache_path) + 16; char *buf = calloc(1, sz); if (!buf) { errno = ENOMEM; return -1; } - snprintf(buf, sz - 1, "%s/XXXXXXXXXXXX", cache_path); + snprintf(buf, sz - 1, "%s/disk-cache-XXXXXXXXXXXX", cache_path); while (fd < 0) { fd = mkostemp(buf, O_CLOEXEC); if (fd > -1 || errno != EINTR) break; @@ -539,6 +539,7 @@ clear_disk_cache(PyObject *self_) { HASH_DEL(self->entries, s); free_cache_entry(s); } + self->total_size = 0; mutex(unlock); wakeup_write_loop(self); } diff --git a/kitty_tests/graphics.py b/kitty_tests/graphics.py index 6618f7199..e6af02b11 100644 --- a/kitty_tests/graphics.py +++ b/kitty_tests/graphics.py @@ -3,6 +3,7 @@ # License: GPL v3 Copyright: 2016, Kovid Goyal import os +import random import tempfile import time import unittest @@ -176,7 +177,7 @@ class TestGraphics(BaseTest): def remove(key): bkey = key_as_bytes(key) data.pop(key, None) - dc.remove(bkey) + return dc.remove(bkey) def check_data(): for key, val in data.items(): @@ -207,6 +208,20 @@ class TestGraphics(BaseTest): time.sleep(0.001) self.assertEqual(dc.size_on_disk(), 0) + data.clear() + for i in range(25): + self.assertIsNone(add(i, f'{i}' * i)) + + before = dc.size_on_disk() + while dc.total_size > before // 3: + key = random.choice(tuple(data)) + self.assertTrue(remove(key)) + add('trigger defrag', 'XXX') + dc.wait_for_write() + self.assertLess(dc.size_on_disk(), before) + self.assertEqual(dc.size_on_disk(), sum(map(len, data.values()))) + check_data() + def test_load_images(self): s, g, l, sl = load_helpers(self)