101 lines
3.2 KiB
Python
101 lines
3.2 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)
|