SXXXXXXX_PyUCC/tests/test_zip_setting.py

110 lines
3.8 KiB
Python

"""Test baseline creation with zip_baselines setting."""
import os
import shutil
import tempfile
from pathlib import Path
# Create test project
temp_project = tempfile.mkdtemp(prefix="test_zip_setting_")
try:
# Create test files
(Path(temp_project) / "file1.py").write_text("# File 1\nprint('test')\n", encoding='utf-8')
(Path(temp_project) / "file2.py").write_text("# File 2\ndef func():\n pass\n", encoding='utf-8')
print(f"Test project: {temp_project}")
print()
from pyucc.core.differ import BaselineManager
from pyucc.config import settings as app_settings
baseline_dir = tempfile.mkdtemp(prefix="test_baselines_")
bm = BaselineManager(temp_project, baselines_root=baseline_dir)
# Test 1: With zip_baselines = False (default)
print("=" * 60)
print("Test 1: zip_baselines = False (default)")
print("=" * 60)
app_settings.save_settings({"zip_baselines": False})
print(f"Setting zip_baselines = {app_settings.get_zip_baselines()}")
baseline_id_1 = bm.create_baseline_from_dir(
temp_project,
baseline_id="test_no_zip",
snapshot=True,
compute_sha1=False
)
baseline_path_1 = bm._baseline_dir(baseline_id_1)
files_dir_1 = os.path.join(baseline_path_1, "files")
files_zip_1 = os.path.join(baseline_path_1, "files.zip")
print(f"Created baseline: {baseline_id_1}")
print(f" files/ exists: {os.path.exists(files_dir_1)}")
print(f" files.zip exists: {os.path.exists(files_zip_1)}")
if os.path.exists(files_dir_1):
file_count = len(list(Path(files_dir_1).glob("*.py")))
print(f" Files in directory: {file_count}")
result_1 = "✅ PASS" if (os.path.exists(files_dir_1) and not os.path.exists(files_zip_1)) else "❌ FAIL"
print(f"Result: {result_1} - Directory copy without zip")
print()
# Test 2: With zip_baselines = True
print("=" * 60)
print("Test 2: zip_baselines = True")
print("=" * 60)
app_settings.save_settings({"zip_baselines": True})
print(f"Setting zip_baselines = {app_settings.get_zip_baselines()}")
baseline_id_2 = bm.create_baseline_from_dir(
temp_project,
baseline_id="test_with_zip",
snapshot=True,
compute_sha1=False
)
baseline_path_2 = bm._baseline_dir(baseline_id_2)
files_dir_2 = os.path.join(baseline_path_2, "files")
files_zip_2 = os.path.join(baseline_path_2, "files.zip")
print(f"Created baseline: {baseline_id_2}")
print(f" files/ exists: {os.path.exists(files_dir_2)}")
print(f" files.zip exists: {os.path.exists(files_zip_2)}")
if os.path.exists(files_dir_2):
file_count = len(list(Path(files_dir_2).glob("*.py")))
print(f" Files in directory: {file_count}")
if os.path.exists(files_zip_2):
zip_size = os.path.getsize(files_zip_2)
print(f" Zip size: {zip_size} bytes")
result_2 = "✅ PASS" if (os.path.exists(files_dir_2) and os.path.exists(files_zip_2)) else "❌ FAIL"
print(f"Result: {result_2} - Directory copy WITH zip archive")
print()
# Summary
print("=" * 60)
print("SUMMARY")
print("=" * 60)
print(f"Test 1 (no zip): {result_1}")
print(f"Test 2 (with zip): {result_2}")
print()
if result_1 == "✅ PASS" and result_2 == "✅ PASS":
print("🎉 ALL TESTS PASSED!")
print()
print("Settings behavior:")
print(" • zip_baselines = False → files/ only (fast, default)")
print(" • zip_baselines = True → files/ + files.zip (saves space)")
else:
print("⚠️ SOME TESTS FAILED")
finally:
# Cleanup
shutil.rmtree(temp_project, ignore_errors=True)
if 'baseline_dir' in locals():
shutil.rmtree(baseline_dir, ignore_errors=True)