110 lines
3.8 KiB
Python
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)
|