feat(aggregation): Implement hash-based summary cache
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import os
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from src.summary_cache import SummaryCache, get_file_hash
|
||||
|
||||
def test_get_file_hash():
|
||||
content = "hello world"
|
||||
# sha256 of "hello world"
|
||||
expected = "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
|
||||
assert get_file_hash(content) == expected
|
||||
|
||||
def test_summary_cache():
|
||||
cache_dir = Path(".test_cache")
|
||||
if cache_dir.exists():
|
||||
shutil.rmtree(cache_dir)
|
||||
cache_file = cache_dir / "cache.json"
|
||||
|
||||
cache = SummaryCache(str(cache_file))
|
||||
|
||||
file_path = "test.py"
|
||||
content = "print('hello')"
|
||||
content_hash = get_file_hash(content)
|
||||
summary = "**Python** - 1 lines"
|
||||
|
||||
# Test empty cache
|
||||
assert cache.get_summary(file_path, content_hash) is None
|
||||
|
||||
# Test set and get
|
||||
cache.set_summary(file_path, content_hash, summary)
|
||||
assert cache.get_summary(file_path, content_hash) == summary
|
||||
|
||||
# Test cache invalidation
|
||||
assert cache.get_summary(file_path, "different_hash") is None
|
||||
|
||||
# Test persistence
|
||||
cache2 = SummaryCache(str(cache_file))
|
||||
assert cache2.get_summary(file_path, content_hash) == summary
|
||||
|
||||
# Cleanup
|
||||
if cache_dir.exists():
|
||||
shutil.rmtree(cache_dir)
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_get_file_hash()
|
||||
test_summary_cache()
|
||||
print("Tests passed!")
|
||||
Reference in New Issue
Block a user