41 lines
1.2 KiB
Python
41 lines
1.2 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__])
|