🔒 Repository is read-only – file editing is disabled.

PaganLinux/pagan-web-v2/test_pagsync_real_index.py main

49 linii Raw ← Powrót
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")