SXXXXXXX_PyUCC/tests/test_differ.py

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__])