SXXXXXXX_PyUCC/tests/test_quick_snapshot.py

108 lines
3.3 KiB
Python

"""Quick test to verify directory copy is working instead of zip."""
import os
import shutil
import tempfile
from pathlib import Path
# Create small test project
temp_project = tempfile.mkdtemp(prefix="quick_test_")
try:
# Create just 2 files
(Path(temp_project) / "file1.py").write_text(
"# File 1\nprint('hello')\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}")
from pyucc.core.differ import BaselineManager
baseline_dir = tempfile.mkdtemp(prefix="quick_baseline_")
bm = BaselineManager(temp_project, baselines_root=baseline_dir)
print("Creating baseline (without countings/metrics)...")
# Manually create a simple baseline to test just the snapshot mechanism
baseline_id = "quick_test_baseline"
from pyucc.core.differ import FileMeta, BaselineMetadata
import time
import json
dest = bm._baseline_dir(baseline_id)
os.makedirs(dest, exist_ok=True)
# Create minimal metadata
files_meta = []
for f in Path(temp_project).glob("*.py"):
rel_path = f.name
files_meta.append(
FileMeta(
path=rel_path,
size=f.stat().st_size,
mtime=f.stat().st_mtime,
sha1=None,
countings=None,
metrics=None,
)
)
metadata = BaselineMetadata(
baseline_id=baseline_id,
created_at=time.time(),
source="local",
origin=None,
project_root=temp_project,
files=files_meta,
profile=None,
)
# Save metadata
meta_path = bm.get_metadata_path(baseline_id)
with open(meta_path, "w", encoding="utf-8") as f:
json.dump(bm._metadata_to_dict(metadata), f, indent=2)
# Test the snapshot creation (directory copy)
print("Creating snapshot using directory copy...")
snapshot_dir = os.path.join(dest, "files")
os.makedirs(snapshot_dir, exist_ok=True)
for fm in files_meta:
src_file = os.path.join(temp_project, fm.path)
dst_file = os.path.join(snapshot_dir, fm.path)
dst_parent = os.path.dirname(dst_file)
if dst_parent:
os.makedirs(dst_parent, exist_ok=True)
shutil.copy2(src_file, dst_file)
# Check results
print("\nResults:")
files_dir = os.path.join(dest, "files")
files_zip = os.path.join(dest, "files.zip")
print(f" files/ exists: {os.path.exists(files_dir)}")
print(f" files.zip exists: {os.path.exists(files_zip)}")
if os.path.exists(files_dir):
copied_files = list(Path(files_dir).glob("*.py"))
print(f" Copied files: {len(copied_files)}")
for f in copied_files:
print(f" - {f.name}")
print()
if os.path.exists(files_dir) and not os.path.exists(files_zip):
print("✅ SUCCESS: Directory copy working correctly!")
print(" No zip file created (faster and simpler)")
elif os.path.exists(files_zip):
print("❌ FAIL: files.zip still created")
else:
print("❌ FAIL: No snapshot created")
finally:
shutil.rmtree(temp_project, ignore_errors=True)
if "baseline_dir" in locals():
shutil.rmtree(baseline_dir, ignore_errors=True)