"""Test cache consistency: same file content in different locations should give same result.""" import os import shutil import tempfile from pathlib import Path # Create temporary directories temp_dir1 = tempfile.mkdtemp(prefix="test_cache_1_") temp_dir2 = tempfile.mkdtemp(prefix="test_cache_2_") try: # Create identical file content in two different locations test_content = '''"""Test module with some code.""" def function_one(): """This is a function.""" x = 1 y = 2 return x + y def function_two(): """Another function.""" # This is a comment result = function_one() return result * 2 # Main code if __name__ == "__main__": print("Hello World") ''' file1 = Path(temp_dir1) / "test.py" file2 = Path(temp_dir2) / "test.py" file1.write_text(test_content, encoding='utf-8') file2.write_text(test_content, encoding='utf-8') print(f"File 1: {file1}") print(f"File 2: {file2}") print() # Import after creating files to ensure clean cache from pyucc.core.countings_impl import analyze_file_counts, _COUNTING_CACHE # Analyze both files print("Analyzing file 1 (should compute)...") result1 = analyze_file_counts(file1) print(f"Result 1: code={result1['code_lines']}, comment={result1['comment_lines']}, blank={result1['blank_lines']}") print(f"Cache size: {len(_COUNTING_CACHE)}") print() print("Analyzing file 2 (should use cache)...") result2 = analyze_file_counts(file2) print(f"Result 2: code={result2['code_lines']}, comment={result2['comment_lines']}, blank={result2['blank_lines']}") print(f"Cache size: {len(_COUNTING_CACHE)}") print() # Compare results (ignoring 'file' field which contains path) keys_to_compare = ['physical_lines', 'code_lines', 'comment_lines', 'blank_lines', 'language'] results_match = all(result1[k] == result2[k] for k in keys_to_compare) print(f"Results match: {results_match}") if results_match: print("✅ SUCCESS: Same content in different locations produces identical results!") else: print("❌ FAIL: Results differ!") for k in keys_to_compare: if result1[k] != result2[k]: print(f" {k}: {result1[k]} != {result2[k]}") # Verify cache was used print() if len(_COUNTING_CACHE) == 1: print("✅ Cache working: Only one entry for identical content in different locations") else: print(f"❌ Cache issue: Expected 1 cache entry, got {len(_COUNTING_CACHE)}") finally: # Cleanup shutil.rmtree(temp_dir1, ignore_errors=True) shutil.rmtree(temp_dir2, ignore_errors=True)