|
|
|
|
|
""" |
|
|
Backward Compatibility Verification Script |
|
|
|
|
|
This script verifies that the enhanced config.py maintains 100% backward |
|
|
compatibility with existing code and API calls. |
|
|
""" |
|
|
|
|
|
import sys |
|
|
import os |
|
|
|
|
|
def test_imports(): |
|
|
"""Test that all import patterns work""" |
|
|
print("=" * 60) |
|
|
print("Testing Import Patterns") |
|
|
print("=" * 60) |
|
|
|
|
|
|
|
|
try: |
|
|
from config import settings |
|
|
assert hasattr(settings, 'hf_token') |
|
|
assert hasattr(settings, 'hf_cache_dir') |
|
|
assert hasattr(settings, 'db_path') |
|
|
print("β
'from config import settings' - PASSED") |
|
|
except Exception as e: |
|
|
print(f"β 'from config import settings' - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
|
|
|
try: |
|
|
from src.config import settings |
|
|
assert hasattr(settings, 'hf_token') |
|
|
assert hasattr(settings, 'hf_cache_dir') |
|
|
print("β
'from src.config import settings' - PASSED") |
|
|
except Exception as e: |
|
|
print(f"β 'from src.config import settings' - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
|
|
|
try: |
|
|
import src |
|
|
from src.config import settings |
|
|
assert hasattr(settings, 'hf_token') |
|
|
print("β
Relative import - PASSED") |
|
|
except Exception as e: |
|
|
print(f"β Relative import - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
return True |
|
|
|
|
|
def test_attributes(): |
|
|
"""Test that all attributes work as expected""" |
|
|
print("\n" + "=" * 60) |
|
|
print("Testing Attribute Access") |
|
|
print("=" * 60) |
|
|
|
|
|
from config import settings |
|
|
|
|
|
|
|
|
try: |
|
|
token = settings.hf_token |
|
|
assert isinstance(token, str) |
|
|
print(f"β
settings.hf_token: {type(token).__name__} - PASSED") |
|
|
except Exception as e: |
|
|
print(f"β settings.hf_token - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
|
|
|
try: |
|
|
cache_dir = settings.hf_cache_dir |
|
|
assert isinstance(cache_dir, str) |
|
|
assert len(cache_dir) > 0 |
|
|
print(f"β
settings.hf_cache_dir: {cache_dir} - PASSED") |
|
|
except Exception as e: |
|
|
print(f"β settings.hf_cache_dir - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
|
|
|
try: |
|
|
db_path = settings.db_path |
|
|
assert isinstance(db_path, str) |
|
|
print(f"β
settings.db_path: {db_path} - PASSED") |
|
|
except Exception as e: |
|
|
print(f"β settings.db_path - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
|
|
|
try: |
|
|
max_workers = settings.max_workers |
|
|
assert isinstance(max_workers, int) |
|
|
assert 1 <= max_workers <= 16 |
|
|
print(f"β
settings.max_workers: {max_workers} - PASSED") |
|
|
except Exception as e: |
|
|
print(f"β settings.max_workers - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
|
|
|
attributes = [ |
|
|
'cache_ttl', 'faiss_index_path', 'session_timeout', |
|
|
'max_session_size_mb', 'mobile_max_tokens', 'mobile_timeout', |
|
|
'gradio_port', 'gradio_host', 'log_level', 'log_format', |
|
|
'default_model', 'embedding_model', 'classification_model' |
|
|
] |
|
|
|
|
|
for attr in attributes: |
|
|
try: |
|
|
value = getattr(settings, attr) |
|
|
print(f"β
settings.{attr}: {type(value).__name__} - PASSED") |
|
|
except Exception as e: |
|
|
print(f"β settings.{attr} - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
return True |
|
|
|
|
|
def test_context_manager_compatibility(): |
|
|
"""Test that context_manager can import settings""" |
|
|
print("\n" + "=" * 60) |
|
|
print("Testing Context Manager Compatibility") |
|
|
print("=" * 60) |
|
|
|
|
|
try: |
|
|
|
|
|
from config import settings |
|
|
db_path = settings.db_path |
|
|
assert isinstance(db_path, str) |
|
|
print(f"β
Context manager import pattern works - PASSED") |
|
|
print(f" db_path: {db_path}") |
|
|
return True |
|
|
except Exception as e: |
|
|
print(f"β Context manager compatibility - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
def test_cache_directory(): |
|
|
"""Test cache directory functionality""" |
|
|
print("\n" + "=" * 60) |
|
|
print("Testing Cache Directory Management") |
|
|
print("=" * 60) |
|
|
|
|
|
try: |
|
|
from src.config import settings |
|
|
cache_dir = settings.hf_cache_dir |
|
|
|
|
|
|
|
|
assert os.path.exists(cache_dir), f"Cache directory does not exist: {cache_dir}" |
|
|
print(f"β
Cache directory exists: {cache_dir}") |
|
|
|
|
|
|
|
|
test_file = os.path.join(cache_dir, ".test_write") |
|
|
try: |
|
|
with open(test_file, 'w') as f: |
|
|
f.write("test") |
|
|
os.remove(test_file) |
|
|
print(f"β
Cache directory is writable") |
|
|
except PermissionError: |
|
|
print(f"β οΈ Cache directory not writable (may need permissions)") |
|
|
|
|
|
return True |
|
|
except Exception as e: |
|
|
print(f"β Cache directory test - FAILED: {e}") |
|
|
return False |
|
|
|
|
|
def main(): |
|
|
"""Run all compatibility tests""" |
|
|
print("Backward Compatibility Verification") |
|
|
print("=" * 60) |
|
|
print() |
|
|
|
|
|
results = [] |
|
|
|
|
|
results.append(("Imports", test_imports())) |
|
|
results.append(("Attributes", test_attributes())) |
|
|
results.append(("Context Manager", test_context_manager_compatibility())) |
|
|
results.append(("Cache Directory", test_cache_directory())) |
|
|
|
|
|
print("\n" + "=" * 60) |
|
|
print("Test Summary") |
|
|
print("=" * 60) |
|
|
|
|
|
all_passed = True |
|
|
for test_name, passed in results: |
|
|
status = "β
PASSED" if passed else "β FAILED" |
|
|
print(f"{test_name}: {status}") |
|
|
if not passed: |
|
|
all_passed = False |
|
|
|
|
|
print("=" * 60) |
|
|
|
|
|
if all_passed: |
|
|
print("β
ALL TESTS PASSED - Backward compatibility verified!") |
|
|
return 0 |
|
|
else: |
|
|
print("β SOME TESTS FAILED - Please review errors above") |
|
|
return 1 |
|
|
|
|
|
if __name__ == "__main__": |
|
|
sys.exit(main()) |
|
|
|
|
|
|