50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import os
|
|
import shutil
|
|
import tempfile
|
|
from pyucc.core.differ import BaselineManager, Differ
|
|
|
|
|
|
def test_baseline_and_diff(tmp_path):
|
|
# create a fake project dir
|
|
proj = tmp_path / "proj"
|
|
proj.mkdir()
|
|
f1 = proj / "a.txt"
|
|
f1.write_text("line1\nline2\n")
|
|
sub = proj / "sub"
|
|
sub.mkdir()
|
|
f2 = sub / "b.txt"
|
|
f2.write_text("x\ny\n")
|
|
|
|
# workspace root is tmp_path; store baselines in a separate temp folder
|
|
baselines_dir = str(tmp_path / "baselines")
|
|
bm = BaselineManager(str(tmp_path), baselines_root=baselines_dir)
|
|
baseline_id = bm.create_baseline_from_dir(
|
|
str(proj),
|
|
baseline_id="testbase",
|
|
snapshot=False,
|
|
compute_sha1=True,
|
|
ignore_patterns=None,
|
|
profile_name="testprofile",
|
|
max_keep=5,
|
|
)
|
|
assert baseline_id == "testbase"
|
|
|
|
metadata = bm.load_metadata(baseline_id)
|
|
assert metadata.baseline_id == "testbase"
|
|
# modify project
|
|
f1.write_text("line1\nline2 changed\nline3\n")
|
|
f3 = proj / "c.txt"
|
|
f3.write_text("newfile\n")
|
|
|
|
d = Differ(metadata, str(proj), max_workers=2)
|
|
result = d.diff()
|
|
assert "total" in result
|
|
# we expect some added lines (c.txt) and modified lines in a.txt
|
|
assert result["total"]["added"] >= 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import pytest
|
|
|
|
pytest.main([__file__])
|