make caching opt-in
This commit is contained in:
@@ -1,28 +1,58 @@
|
||||
import time
|
||||
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
from app.cache import FileCache
|
||||
from app.main import get_cache
|
||||
from app.settings import Settings
|
||||
|
||||
|
||||
def test_cache_returns_fresh_entry(tmp_path) -> None:
|
||||
cache = FileCache(cache_dir=str(tmp_path), default_ttl_seconds=10)
|
||||
cache.set_json("sample", {"x": 1})
|
||||
def test_cache_returns_fresh_entry() -> None:
|
||||
with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir:
|
||||
cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=10)
|
||||
cache.set_json("sample", {"x": 1})
|
||||
|
||||
entry = cache.get_json("sample")
|
||||
entry = cache.get_json("sample")
|
||||
|
||||
assert entry is not None
|
||||
assert entry.stale is False
|
||||
assert entry.value == {"x": 1}
|
||||
assert entry is not None
|
||||
assert entry.stale is False
|
||||
assert entry.value == {"x": 1}
|
||||
|
||||
|
||||
def test_cache_can_serve_stale_when_requested(tmp_path) -> None:
|
||||
cache = FileCache(cache_dir=str(tmp_path), default_ttl_seconds=0)
|
||||
cache.set_json("sample", {"x": 1})
|
||||
time.sleep(0.01)
|
||||
def test_cache_can_serve_stale_when_requested() -> None:
|
||||
with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir:
|
||||
cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=0)
|
||||
cache.set_json("sample", {"x": 1})
|
||||
time.sleep(0.01)
|
||||
|
||||
fresh = cache.get_json("sample")
|
||||
stale = cache.get_json("sample", allow_stale=True)
|
||||
fresh = cache.get_json("sample")
|
||||
stale = cache.get_json("sample", allow_stale=True)
|
||||
|
||||
assert fresh is None
|
||||
assert stale is not None
|
||||
assert stale.stale is True
|
||||
assert stale.value == {"x": 1}
|
||||
assert fresh is None
|
||||
assert stale is not None
|
||||
assert stale.stale is True
|
||||
assert stale.value == {"x": 1}
|
||||
|
||||
|
||||
def test_cache_is_disabled_when_not_configured() -> None:
|
||||
settings = Settings(
|
||||
_env_file=None,
|
||||
GITHUB_USERNAME="octocat",
|
||||
GITEA_BASE_URL="https://gitea.example.com",
|
||||
GITEA_USERNAME="octocat",
|
||||
)
|
||||
|
||||
cache = get_cache(settings)
|
||||
|
||||
assert cache is None
|
||||
|
||||
|
||||
def test_cache_works_in_workspace_tempdir() -> None:
|
||||
with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir:
|
||||
cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=10)
|
||||
cache.set_json("sample", {"x": 1})
|
||||
entry = cache.get_json("sample")
|
||||
|
||||
assert entry is not None
|
||||
assert entry.value == {"x": 1}
|
||||
|
||||
Reference in New Issue
Block a user