🔒 Repository is read-only – file editing is disabled.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
#!/usr/bin/env python3
"""Test logiki przyrostowej na PRAWDZIWYM repo (tylko odczyt – zapis zaślepiony)."""
import importlib.machinery, importlib.util, json, os
loader = importlib.machinery.SourceFileLoader("pagsync_mod", "/opt/pagan-web-v2/pagsync")
spec = importlib.util.spec_from_loader("pagsync_mod", loader)
mod = importlib.util.module_from_spec(spec)
loader.exec_module(mod)
base = mod.REPO_BASE
cat = os.path.join(base, "stable")
captured = {}
def fake_write(cat_dir, packages, catname, verbose=True):
captured["packages"] = packages
captured["cat"] = catname
return True
mod._write_and_sign_repo_json = fake_write
mod.DO_SIGN = True
before = json.load(open(os.path.join(cat, "repo.json")))
print("repo.json przed:", before["count"], "pakietów")
ok = mod.update_repo_json_after_build(cat, "yaml-cpp-0.8.0-1.pag", verbose=False)
assert ok, "update zwróciło False"
pkgs = captured["packages"]
names = {p["name"] for p in pkgs}
print("po aktualizacji (symulacja):", len(pkgs), "pakietów")
# 1) brak wpisów wskazujących na nieistniejące pliki
missing = [p["filename"] for p in pkgs if not os.path.isfile(os.path.join(cat, p["filename"]))]
assert not missing, f"wpisy bez plików: {missing[:5]}"
# 2) każdy plik .pag na dysku jest w indeksie
on_disk = {f for f in os.listdir(cat) if f.endswith(".pag")}
indexed = {p["filename"] for p in pkgs}
not_indexed = on_disk - indexed
assert not not_indexed, f"pliki poza indeksem: {sorted(not_indexed)[:5]}"
# 3) brak duplikatów po nazwie
assert len(names) == len(pkgs), f"duplikaty nazw: {len(pkgs)} wpisów, {len(names)} nazw"
# 4) yaml-cpp obecny, poprawny wpis
yc = [p for p in pkgs if p["name"] == "yaml-cpp"]
assert len(yc) == 1 and yc[0]["filename"] == "yaml-cpp-0.8.0-1.pag", yc
print("pliki .pag na dysku:", len(on_disk), "| wpisy w indeksie:", len(pkgs))
print("✅ TEST OK: indeks spójny z dyskiem, brak duplikatów, samoleczenie działa")