SXXXXXXX_PyUCC/tests/test_cache_behavior.py

80 lines
2.2 KiB
Python

"""Test: verify cache survives multiple analyze calls and produces consistent results."""
import sys
sys.path.insert(0, "c:\\src\\____GitProjects\\SXXXXXXX_PyUcc")
from pathlib import Path
import tempfile
import hashlib
# Create test file
test_content = '''"""Test file."""
def func():
return 42
'''
temp_file = Path(tempfile.mktemp(suffix=".py"))
temp_file.write_text(test_content, encoding="utf-8")
content_hash = hashlib.md5(test_content.encode()).hexdigest()
print(f"Test file: {temp_file}")
print(f"Content hash: {content_hash}")
print()
from pyucc.core.countings_impl import analyze_file_counts, _COUNTING_CACHE
# First call - should miss cache and run pygount
print("=" * 60)
print("CALL 1: Should be CACHE MISS")
print("=" * 60)
result1 = analyze_file_counts(temp_file)
print(
f"Result: code={result1['code_lines']}, comment={result1['comment_lines']}, blank={result1['blank_lines']}"
)
print(f"Cache size: {len(_COUNTING_CACHE)}")
print()
# Second call - should hit cache
print("=" * 60)
print("CALL 2: Should be CACHE HIT")
print("=" * 60)
result2 = analyze_file_counts(temp_file)
print(
f"Result: code={result2['code_lines']}, comment={result2['comment_lines']}, blank={result2['blank_lines']}"
)
print(f"Cache size: {len(_COUNTING_CACHE)}")
print()
# Verify results are identical
print("=" * 60)
print("VERIFICATION")
print("=" * 60)
if result1 == result2:
print("✅ Results are IDENTICAL")
else:
print("❌ Results DIFFER:")
for key in result1:
if result1[key] != result2[key]:
print(f" {key}: {result1[key]} != {result2[key]}")
# Check cache content
print()
print(f"Cache contains {len(_COUNTING_CACHE)} entries")
if content_hash in _COUNTING_CACHE:
cached = _COUNTING_CACHE[content_hash]
print(f"✅ Content hash {content_hash[:8]} found in cache")
print(
f" Cached: code={cached['code_lines']}, comment={cached['comment_lines']}, blank={cached['blank_lines']}"
)
else:
print(f"❌ Content hash {content_hash[:8]} NOT in cache!")
# Cleanup
temp_file.unlink()
print()
print("CONCLUSION:")
print("If both calls produce identical results and cache works,")
print("then the problem is NOT in the counting logic itself.")